Game/MMD
안정화 작업 (3) - 하얀색으로 뜬다
newpolaris
2017. 11. 14. 23:22
디버거 한번, 롤백 한번
Debugger가 날 엿먹여도 이번엔 빠르게 잡은 듯
spTex 에서 흰색 영역을 과도하게 가져온다.
sphere 라고 제질 광택 분포를 나타낸 값이라
값이 없다면 가운데 검정색 부분을 가져와야한다
(specularlight 값을 저장해둔거라 보면된다)
if ( mat.sphereOperation != kSphereNone ) {
float2 normalVS = mul( (float3x3)view, normalWS ).xy;
output.spTex = normalVS * float2(0.5, -0.5) + float2(0.5, 0.5);
}
normalVS 가 0 이 나왔는데
output.spTex가 계속 0 이 나온다.
normalWS 를 강제로 0으로 주니 (0.5, 0.5) 로 제대로 나온다 머가 잘못된걸까?
모델을 보니 normal 값이 0인 부분이다.
The normalized x parameter. If the length of the x parameter is 0, the result is indefinite.
결과가 비정의라고 디버거 너까지 멋대로 동작하면 안되잖아
any 로 예외 처리했다.
DX9 에서는 0으로 주나보다
비슷한 예외.
pow 쪽에도 예외 값 있는데 이것도 디버거에서 값을 0으로 바꾼다.
값이 너무 커서 bloom 처리 결과가 사각형이 되었다.
color.rgb += input.specular;
저기 지난후 color 가 0 이 된다.
output.specular = pow( max( 0, dot( halfVector, output.normalWS ) ), mat.specularPower ) * SpecularColor;
머가 나온 걸까
예외처리하니까 정상적으로 나온다