나는 완전한 채워진 깊이 텍스처를 가지고 있지만 적절한 값을 얻지 못하는 것 같습니다.깊이 텍스처에서 깊이 값을 어떻게 얻을 수 있습니까?
GLSL 코드 조각 쉐이더 :
uniform sampler2D depth_tex;
uniform float viewport_w;
uniform float viewport_h;
void main()
{
vec2 coord = vec2(gl_FragCoord.xy);
float depth = texture2D(depth_tex, vec2(coord.x/viewport_w, coord.y/viewport.h)).r;
float c = material_amb * depth; // material_amb is preset by host
out_color = vec4(c, c, c, 1.0f);
}
내가 모델의 색상은 정점 '깊이에 의해 변경 될 것으로 예상,하지만 난 모든 것을 볼 수 없습니다. 물론 깊이를 곱하지 않고 모델을 볼 수 있습니다. 심도 텍스처 유형은 GL_DEPTH_COMPONENT, GL_FLOAT입니다. 뭐가 문제 야? 나는 질감에서 깊이 값을 얻는 해결책이 잘못되었다고 생각하지만, 그 이유는 모른다. 깊이 값은 어디에 저장되어 있습니까? 깊이 값을 얻으려면 어떻게해야합니까?
이런 종류의 것들을 디버깅하는 데 유용한 팁 :'depth '로 직접 곱하기보다는'fract (depth)'로 곱하기보다 값이'[0..1] '범위로 시작합니다. – UncleZeiv
그건 그렇고, 당신의 코드에 오자가 있는데,'viewport.h'는'viewport_h' 여야합니다 ...'depth'를 사용할 때 셰이더가 컴파일되지 않을 수도 있습니다? – UncleZeiv