반응형

 

 

 

 

 

뒤의 인자가 인스턴싱에 대한 처리의 개수를 얘기하는것으로 정점셰이더에서는 한번만 처리하고

인스턴싱 개수만큰 파이프라인에서 정점셰이더이후의 과정을 개수만큼 반복하게 되어 cpu 에서 gpu 로의 전송 과정을 아낄 수 있다

각 인스턴싱된 오브젝트들은 SV_InstanceID 로 구분할 수 있다
 
 

 

 
파티클들의 위치나 방향을 cpu 에서 gpu 로 넘겨주는게 아니라 gpu 내부에서 SturcturedBuffer 를gpu 쪽에 만들어 놓으면 gpu 내에서 현재 파티클의 정보를 g_data 에 넣고 이것에 대한 움직이는 정보를 RWStructuredBuffer 에다가 기록을 하여 파티클을 움직이도록 처리 할수 있다, GPU 내에서.
[t9 는 t 는 텍스처 같은 형태로 자료의 크기가 상수버퍼 처럼 정해져 있지 않는 것을 사용한다는 것 또한 알 수 있다]

 

그리고 물체들의 위치는 이전 단계인 Compute Shader 에서 위치를 먼저 계산해 놓게 된다

 

 

 

그려질 필요가 없다면 지오메트리 셰이더에서 파티클을 그리지 않는다

GS 는 도형 정보를 수정 할수 있따, 추가 및 제거

최적화를 위해 정점 하나만 받아서 정점이 살아 있지 않다면 정점을 더이상(메시를) 그리지 않는다
그려질 필요가 없다면 모든 정점을 받을 필요가 없기 때문

outputSteam 은 정점을 생성 할거라면 이곳에 정점들을 추가해 이 정점에 대한 메시를 그리게 된다

즉 outputSteam 이것이 비어져 넘겨지게 되면 아무것도 그리지 않는다는것

 

VIew space 주석이 있는 곳이 정점을 뷰시점에서 사각형을 만들어 outputSteam 에 추가해 사각형을 만들고 있다는 것을 알 수 있다

 

이렇게 처리하면 CPU 와 GPU 의 병복 현상을 많이 줄일 수 있어서 성능향상이 될 수있다

 

 

전체적인 순서를 컴퓨트 셰이더를 통하여 위치나 방향 생명주기를 먼저 계산한다음 이 정보를 GPU 배열에 저장해 놓고

이 정보를 그대로 정점셰이더와 지오메트리 셰이더를 지나면서 파티클을 그리는 순서이다

반응형

+ Recent posts