본문 바로가기

ComputeShader2

Compute Shader을 사용한 Blur 효과 (DirectX11,Opengl) 이전시간에 컴퓨트 셰이더를 사용하여 버퍼의 내용을 읽고 계산후 그결과를 다시 쓰는 작업을 보여드렸습니다. 이번에는 이미지의 내용을 읽고 다시 기록함으로서 가우시안 블러효과를 구현해보도록 하겠습니다. 이전에 컴퓨트 셰이더에서 버퍼의 읽기/쓰기를 수행하려면 어떤것이 필요했을까요? DirectX11 에서는 StrucutredBuffer 즉 읽기만 수행하는경우 BufferStrutured 플래그가 지정된 버퍼가 필요하며 읽기/쓰기 둘다 진행하려면 따로 바인드 플래그에 D3D11_BIND_UNORDERED_ACCESS 를 지정한 버퍼가 필요했습니다. OpenGL 에서는 SSBO(Shader Storage Buffer Object) 가 필요했습니다. 조사해보니 StructredBuffer의 특징이 SSBO 안에 포.. 2021. 9. 14.
DirectX11,Opengl 에서 Compute Shader 사용하기. 이전 포스팅에서 Assimp를 이용하여 Skeletal Animation을 구현했습니다. 애니메이션을 구현하기위해 하드웨어 스키닝을 정점쉐이더에서 진행했는데요. 이러면 한가지 문제점이 생기게됩니다. 기존의 애니메이션을 사용하지않는 정적인 메쉬에대한 쉐이더코드가 다르고 애니메이션 메쉬를 위한 쉐이더코드가 따로 있어야합니다. 예를들어 그림자매핑을 위해 깊이값을 기록하는 쉐이더 코드가 있다고하면 정적메쉬를 따로모아서 쉐이더코드를 바인딩한다음 그려야하고 다그렸으면 다시 애니메이션 메쉬들을 모아서 애니메이션을 위한 쉐이더를 바인딩하여 그려야합니다. 이럴경우 애니메이션에 필요한 계산된 Bone 행렬이 정점쉐이더에 전달된후 정점쉐이더에서 계산을할 것입니다. 그다음 그림자맵을 만들었으면 이제 쉐이딩 단계에서 또다시 그.. 2021. 9. 2.