문제

blinn-phong shading ...?

normals blinn-phong

위의 이미지가 바라는 일을 잘 알고 있기 때문에 문제가 부드럽게 그늘을 칠 수없는 것처럼 보일 수 없습니다. 문제는 얼굴 가장자리를 따라 갑작스러운 컷오프이며, 이는 일어나지 않아야합니다. 확산 조명은 매우 잘 작동하는 것처럼 보이며 동일한 보간 값을 사용합니다. Blinn-Phong Specular Highlights의 코드는 다음과 같습니다.

vec3 halfAngle = normalize(lightDirection.xyz + viewRay);

float blinnTerm = dot(normal.xyz, halfAngle);
blinnTerm = clamp(blinnTerm, 0.0f, 1.0f);
blinnTerm = pow(blinnTerm, 300.0f);

float specIntensity = intensity * blinnTerm;

vec4 specColour = specIntensity * specColour;
.

lightDirection가 일정하고 무한히 멀리 떨어져 있습니다 (즉, 태양). VIEWRAIN은 투사 행렬을 사용하여 버텍스 셰이더에서 계산됩니다.

viewRay = vec3(-(UV.x * 2.0f - 1.0f) / projection[0].x,
               -(UV.y * 2.0f - 1.0f) / projection[1].y,
                     1.0f);
.

UV 값이 어디에서 렌더링하는 경우 (전체 화면 텍스처로 렌더링) 인 지연된 렌더링을 사용하고 있습니다.

내가 생각할 수있는 유일한 것은 정상적인 보간이 단지 충분히 부드럽지 않다는 것입니다. 그러나 그것이 그렇다면 어떻게 해결할 것입니까? (나는 16 비트 수레로 법선을 저장하지만 32 비트로 켜져있는 차이가 없었습니다).

도움이 되었습니까?

해결책

여기에 이미지 설명

와 찻 주전자가 수정되었습니다!거기에서 은 법선을 보간하는 문제가 있지만, 고맙게도는 쉽게 수정되었습니다.나는 정점 셰이더의 법선을 정상화 한 다음, 먼저 보간 한 다음 정규화하기보다는 보간하지 않았습니다.그것은 여전히 완벽하지는 않지만 확실히 개선입니다!

여기서 수업 : 이미지가 평평하게 보이면, 당신이 정점 쉐이더에서 수행해서는 안되는 것을 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top