﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1359	Hemisphere cubemap sample location adjustment (8.15.1.10)	LouiseLee		"In 8.15.1.10, the process is for adjusting sample locations to the correct half face according to the full face index when the hemisphere cubemap is used.
However, the calculation of tmpHorPos and tmpVerPos will make all the samples move to the top left quarter of the face and result in two samples on the same location.
The entire process is shown below:

rightFaceIdx = {4, 2, 0, 1, 1, 0}
bottomFaceIdx = {3, 5, 5, 5, 3, 3}
if( n  = =  2 ) {
		hPosAdj = hPosRot
		vPosAdj = vPosRot
} else {
		tmpHorPos = hPosRot > faceWidth / 2 ? hPosRot - faceWidth / 2 : hPosRot
		tmpVerPos = vPosRot > faceHeight / 2 ? vPosRot - faceHeight / 2 : vPosRot
		hPosAdj = hFullFaceIdx[ face_index[ n ] ] = = face_index[ 2 ] ? tmpHorPos + faceWidth / 2 : tmpHorPos
		vPosAdj = vFullFaceIdx[ face_index[ n ] ] = = face_index[ 2 ] ? tmpVerPos + faceHeight / 2 : tmpVerPos
}

To fix this issue and adjust the samples to the correct half face, I would suggest the following:

leftFaceIdx = {5, 3, 1, 0, 0, 1}
rightFaceIdx = {4, 2, 0, 1, 1, 0}
topFaceIdx = {2, 4, 4, 4, 2, 2}
bottomFaceIdx = {3, 5, 5, 5, 3, 3}
hPosAdj = hPosRot
vPosAdj = vPosRot
if( n  !=  2 ) {
		if( face_index[ 2 ]  = =  leftFaceIdx[ face_index[ n ] ]  &&  hPosAdj >= faceWidth / 2 ) {
			hPosAdj −= faceWidth / 2
		} else if( face_index[ 2 ]  = =  rightFaceIdx[ face_index[ n ] ]  &&  hPosAdj < faceWidth / 2 ) {
			hPosAdj += faceWidth / 2
		} else if( face_index[ 2 ]  = =  topFaceIdx[ face_index[ n ] ]  &&  vPosAdj >= faceHeight / 2 ) {
			vPosAdj −= faceHeight / 2
		} else if( face_index[ 2 ]  = =  bottomFaceIdx[ face_index[ n ] ]  &&  vPosAdj < faceHeight / 2 ) {
			vPosAdj += faceHeight / 2
		}
}
"	defect	closed	minor		VUI/SEI		fixed		yk garysull@… jill.boyce@… jvet@…
