StructuredBuffer 2

상수 버퍼, 구조화 버퍼, D3D11_BUFFER_DESC

상수 버퍼 : CPU에서 write해서 GPU로 보내주면 GPU에서는 Read만 가능 구조화 버퍼 : CPU에서 접근 가능 여부를 설정해줄 수 있으며, 이에 따라 바인딩해줘야 하는 자원 뷰(Resource View)가 다르다. 사용자 정의 구조체로 구성할 수 있으며, 대용량 버퍼를 셰이더로 넘겨줘야 할 때 적합 D3D11_USAGE enumeration 설명 D3D11_USAGE_DEFAULT GPU Read & Write -> RWStructuredBuffer에 사용 D3D11_USAGE_IMMUTABLE Only GPU Read(CPU Access, GPU Write 불가) D3D11_USAGE_DYNAMIC CPU Write, GPU Read만 가능 -> 상수 버퍼와 StructuredBuffer에..

Particle 구현을 위한 Structured Buffer, Compute Shader 그리고 Geometry Shader

멀티쓰레드와 구조화버퍼를 이용해서 Compute Shader에서 파티클의 Alive 여부부터 Position, Color 등을 설정하고 Update할 수 있도록 했다. 아래 RWStructuredBuffer는 주석에서도 볼 수 있듯이 C++코드(CPU)에서가 아니라, 셰이더 코드(GPU)에서만 읽기/쓰기가 가능하게 하기 위해서 'RW'를 붙였고 C++코드에서 SRV(Shader Resource View)가 아니라 Unordered Access View(UAV)를 Set해줘야 한다. [numthreads(64, 1, 1)] 이라고 쓰여진 부분은 3차원 Cube를 생각했을때 x, y, z방향으로 각각 64개, 1개, 1개의 그룹을 만든다는 의미이고 64개에 분포되어 들어갈 쓰레드의 수는 C++코드에서 Com..