평소와 같이 미리 감사드립니다.픽셀 벤더 노멀 맵
저는 하이트 맵 기반 지형에 대한 조명 효과를 생성하기 위해 픽셀 벤더를 사용하고 있습니다. 저는 지형의 법선 맵을 만들고 거기에서 주어진 태양 방향에 대해 각 법선을 도트 싶습니다. 꽤 표준적인 것이지만, 픽셀 벤더는 훌륭하게 연주하지 않습니다. 이 코드를 가지고 :
void
evaluatePixel()
{
float2 pt = outCoord();
pixel3 a = sampleNearest(src,pt);
pixel3 b = sampleNearest(src,float2(pt.x + 1.0, pt.y));
pixel3 c = sampleNearest(src,float2(pt.x, pt.y + 1.0));
float3 v1 = float3(1.0, 0.0, b.r - a.r);
float3 v2 = float3(0.0, 1.0, c.r - a.r);
normalize(v1);
normalize(v2);
float3 n = cross(v1,v2);
dst = pixel3(n.x,n.y,n.z);
}
정상적인지도를 생성 할 것으로 예상됩니다. 테스트하기 위해 빛을 똑바로 가리키고 출력 색상으로 n.z
을 사용한다고 가정했습니다. 이렇게하면 단색이됩니다. 위의 코드를 실행하여 실행하면 빨간색과 녹색의 변형이있는 반면 파란색은 항상 255로 가득 차 있음을 알 수 있습니다. 이유가 무엇입니까? 나는 v1
과 v2
을 고려할 때 이것이 항상 완전한 청색을 출력하지 않아야한다는 것을 알았습니까?
내가 뭘 잘못하고 있니?!?
[this] (http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1817528) 도움이 되셨습니까? –
덕분에,이 사람이 어떻게했는지보기에 좋은 독서력과 흥미로 웠습니다. 그러나 그것이 생산하는 이미지는 여전히 완전한 파란색을 가지고 있습니다. (보통, z = 1.0) 'v1'과'v2'는 단위 벡터이기 때문에'n'은 단위 벡터가 될 것이고' v1.z' 또는'v2.z'는 0이 아니며,'nz'는 1이 아니어야합니까? 여기에 무엇이 누락 되었습니까? – Pez