2012-05-08 4 views
1

쉐이더 입/출력 변수의 순서 및/또는 크기가 메모리 사용이나 성능에 어떤 차이가 있습니까?glsl 쉐이더 입/출력 가변 패킹

// vert example: 
out vec4 colorRadius; 

// tess control example: 
out vec4 colorRadius[]; 

// frag example: 
in smooth vec4 colorRadius; 

해당하는 이들에게 :

// vert example: 
out vec3 color; 
out float radius; 

// tess control example: 
out vec3 color[]; 
out float radius[]; 

// frag example: 
in smooth vec3 color; 
in smooth float radius; 

추가 두 번째 양식 비용이나 컴파일러는 메모리에 함께 팩을 정확히 동일하게 취급하므로이 있는가 예를 들어, 이러한인가?

답변

4

컴파일러 일 수 있습니다. 그러나 컴파일러가 일반적으로 그렇게한다는 증거는 거의 없습니다. 따라서 최상위 버전은 최소한 최하위 버전보다 느려지지 않습니다.

동시에, 이것은 더 많은 미세 최적화입니다. 이것이 병목 현상이라는 것을 알지 못하면 그냥 놓아 둡니다. 명확하고 이해하기 쉬운 코드를 작성하고 문제가 어디에 있는지를 알 때이를 최적화하면 문제가되는지 여부를 알지 못하고 최적화하는 것보다 좋습니다.

+0

일반적으로 나는 "병목 현상 최적화"철학에 동의하지만, 동일한 글에서 가독성에 악영향을 미치지 않는 한 글을 쓰면서 가능한 한 많이 최적화하려고 노력했다. – atb

+1

@atb : 코드 작성의 여러 가지 종류의 부작용을 모두 평가하는 것이 불가능하기 때문에 "작성하는대로 최적화"하는 것은 불가능합니다. 또한 조숙 한 최적화는 프로파일 링으로 찾으면 다른 것을 최적화하는 것이 좋겠지 만 막상 "최적화"를 완전히 다시 작성해야합니다. – datenwolf