저는 GPU Pro 2, Chapter VI.2에서 " 픽셀 쿼드 메시지 전달"을 사용하는 Eric Penner의 "Shader Amortization"기술을 활용하려고했습니다. 기본적인 아이디어는 2 × 2 조각 쿼드에 현대적인 GPU의 프로세스 조각 쉐이더 것입니다, 당신은 다음과 같은 홀드만큼 네 조각에서 some_var의 값을 얻기 위해 DDX()와 DDY()를 사용할 수 있습니다2x2 픽셀 쿼드에서 어떻게 셰이더 조각 위치를 결정적으로 감지 할 수 있습니까?
- 귀하 GPU는이 조각 쉐이더 기회를 많이 열어 고품질의 유도체 당신은 처리중인 조각을 알고
- (왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래)
지원 Compute Shader가 필요로하는 최적화 (2x2 픽셀 쿼드에서 텍스처를 가져 오는 것과 같음).
내 문제는 다음과 같습니다. 처리중인 조각을 결정적으로 감지 할 수 없습니다. 이상적으로 각 조각 블록은 (0, 0), (2, 0), ... (1024, 1024), ...과 같은 짝수 번호의 출력 픽셀 코드에서 시작합니다. 출력 픽셀 x 및 y 좌표는 현재 처리중인 조각을 알기 위해 짝수 또는 홀수입니다. 이 책에서 Penner가 사용하는 방법은 이것이 작동한다고 가정합니다 ... 그러나 그것은 나에게 잘못 될 것 같습니다.
불행히도 내 2x2 조각 쿼드는 비 결정적 장소에서 시작하는 것처럼 보입니다. 나는 (심지어 짝수, 홀수), (홀수, 홀수)에서 시작하는 것을 보았습니다. 어쨌거나 (홀수, 홀수) 보았는지는 기억이 나지 않습니다. 그러나 어쨌든 배열은 출력 해상도와 쉐이더 특성을 포함하여 내가 이해하지 못하는 무수한 요소에 의존하는 것 같습니다. (누군가 8800 GTS를 테스트 중입니다.)
이 비 결정론을 유발하거나 문서를 가지고있는 사람은 누구입니까? 이 분야에는 공식적인 표준화가 거의 없다는 것을 알고 있습니다 만, 현대 데스크톱 수준의 GPU에서는 어떻게 작동하는지에 관심이 많습니다.이 기술을 작동시킬 수있는 방법이 있기를 바랍니다. 아무도 짝수/홀수 시작 동작에 대해 추론하는 방법을 안다면 2x2 쿼드에서 현재 조각의 상대 위치를 결정하는 다른 방법을 알고 있습니까? 한 출력 해상도가 짝수이기 때문에 ... 는 2 × 2 조각 쿼드 거의 항상 심지어 픽셀 수를에 시작합니까 :
감사합니다 :)