2014-12-06 1 views
1

GLSL 쉐이더의 일부 계산이 균일 변수에만 의존하는 경우, 이들은 한 번 계산되어 모든 정점/조각에 사용될 수 있습니다. 이것은 하드웨어에서 실제로 사용됩니까? 나는 GLSL 사양에서 "균일 및 비 균일 한 제어 흐름"에 대한 책을 읽은 후 생각이있어 :GLSL : 동적으로 균일 한 표현식은 한 번만 계산됩니까?

https://www.opengl.org/registry/doc/GLSLangSpec.4.40.pdf#page=30&zoom=auto,115.2,615.4

내가 알고 싶은 경우 프로그래머 예를 들어 투사 - 볼 - 매트릭스를 미리 계산의 차이.

답변

2

드라이버와 최적화에 따라 다르지만 direct3D에는 명시 적 API가 있습니다. 예를 들어

//... 

uniform mat4 projection; 
uniform mat4 view; 
uniform mat4 model; 

main(){ 
    gl_position = projection*view*model*pos; 
} 

드라이버 가장 간단한 점은 MVP 행렬을 미리 계산해 번의 균일 그냥 통과하도록 최적화 할 수있을 것이다.

이것은 구현에 따라 정의되며 일부 드라이버는 다른 것보다 유니폼을 인라이닝 할 때 더 좋습니다. 하나의 다른 최적화 옵션은 인라인 유니폼으로 전체 프로그램을 다시 컴파일하고 비 추출 경로를 최적화합니다.