float brightness
에 2 개의 벡터가 도트로 생성됩니다. brightness
은 대부분 양수 여야하지만 max(brightness, 0.0)
을 사용해야합니다. 내 조명 시스템에 brightness
을 사용하려고하면 아무 것도 표시되지 않습니다. 나는 이것을 if-statement로 디버깅하려했지만 항상 진실 또는 뭔가를 반환하는 것 같다. 따라서 if(brightness > 99999)
및 if(brightness < 99999)
또는 if(brightness == 12345)
은 모두 픽셀을 버립니다. GLSL 버전 430 코어를 사용하고 있습니다.GLSL 항상 true를 반환하는 경우
float brightness = dot(vector1, vector2);
brightness = max(brightness, 0.0);
if(brightness < -999) {
discard;
}
따라서이 예에서는 픽셀을 버립니다.
저는 이것이 NaN 일 수 있다고 생각했습니다. 실제로 이러한 벡터의 모든 변화를 추적하려고했습니다. 나는 이제 그것을 다시 보게 될 것이다. – Maineri
실수를 발견했습니다. 당신이 옳았. vector2는 NaN입니다. 나는 실수로 벡터 2를 정점 쉐이더에서 vec4로 출력하고 그것을 조각 쉐이더에서 vec3으로 입력했습니다. 고맙습니다! – Maineri