1
기본 큐브 맵 구현을 테스트 중이며 하나의 마지막 세부 사항을 제외하고는 잘 작동합니다. 카메라를 움직이면 큐브 맵이 위/아래 축에서 뒤집습니다. 내가 카메라를 이동하면 뒤집기가 발생했을 때움직이는 카메라로 뒤집는 OpenGL 큐브 맵 반사
, 내보기 행렬을주의 사항 :
------
-0.01, 0.13, -0.99, 0.00
0.00, 0.99, 0.13, 0.00
1.00, 0.00, -0.01, 0.00
-1.95, -0.28, -6.31, 1.00
------
다음 사진을 제공합니다 :
------
0.01, 0.13, -0.99, 0.00
0.00, 0.99, 0.13, 0.00
1.00, -0.00, 0.01, 0.00
-1.86, -0.28, -6.34, 1.00
------
는 다음 그림을 제공합니다 :
열 1 및 3의 기호가 0.01로 바뀌므로주의하십시오. GLSL에서 정상적인 계산을 위해
나는 다음을 수행하십시오
버텍스 쉐이더 :
mat4 model_view = view * m;
position_eye = vec3(model_view * vec4(vertex_position, 1.0));
mat3 normal_matrix = mat3(transpose(inverse(model_view)));
normal_eye = normalize(normal_matrix * vertex_normal);
조각 쉐이더 :
vec3 func_cubemap_reflect()
{
vec3 incident_eye = normalize(position_eye);
vec3 normal = normalize(normal_eye);
vec3 reflected = reflect(incident_eye, normal);
// convert from eye to world space
reflected = vec3(inverse(view) * vec4(reflected, 0.0));
return texture (cube_texture, reflected).rgb;
}
어떤 생각이 디버깅하는 방법 또는 리플렉션이 항상 "올바른 방법"이되도록 문제를 해결 하시겠습니까?
나는 성공하지 못한 채로 highp를 시도했다. 그러나, 나는 reflect = vec3 (inverse (view + mat4 (1.0) * 0.01) * vec4 (reflection, 0.0));을 수행하는 접근법을 테스트하고있다. 그것이 반전에 댐핑 팩터를 추가하여 안정화시키는 것입니다. 결과는 예상대로 나타납니다. 이 해킹이 얼마나 나쁜지 잘 모르겠습니까? 이견있는 사람? – toeplitz