2010-04-12 2 views
1

버텍스 쉐이더에서는 유니폼 만 사용하여 벡터를 계산합니다. 따라서이 계산의 결과는 정점 셰이더의 모든 인스턴스화에 대해 동일합니다. 이 계산을 CPU에서 수행하고 유니폼으로 업로드해야합니까? 그런 계산이 10 번이라면? 이런 방식으로 많은 유니폼을 업로드하면 CPU-GPU 통신 속도가 너무 느려져서 버텍스 쉐이더에서 이러한 값을 다시 계산하는 속도가 실제로 빨라 집니까?셰이더 프로그래밍에서 유니폼을 사용해야하는시기는 언제입니까?

답변

1

저는 실제로 제복/정점 개수 비율에 따라 다릅니다. 꼭지점이 균일 변수 이상인 경우 가장 자주 사용되는 시나리오 인 CPU 유니폼을 계산하는 것이 좋습니다.

유니폼 값이 많고 계산이 복잡한 경우 (즉, 역행렬), 정점 수가 낮을 때 CPU로드를 줄이고 GPU에서 계산을 수행하는 것이 좋습니다.

많은 임계 값이 셰이더 실행에 영향을주기 때문에 비율 임계 값은 결정하기가 어렵습니다. 일반적으로 셰이더 실행을 오프로드하기 위해 대부분의 유니폼을 CPU에서 계산하는 것이 좋습니다.

참고 : 일단 유니폼 변수를 설정하면 셰이더 프로그램은 다시 연결될 때까지 값을 유지합니다.

관련 문제