Shader Reflection

    [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (2)

    Shader Resource Struct / Hash Table 이전 글에서 해당 Resource 등록 과정에 대해 써놓았는데 내부적으로 사용하는 방식을 정리하려한다. 굳이 왜 해당 Resource에 대응하는 Class를 선언하여 Key값을 검색하는데에 사용하는가? 에 대한 의문이 들 수도 있는데 일단 이전에 사용하던 string Key값을 이용한 검색은 잘못된 Key를 입력했을 경우 RunTime에 반환이 잘못되거나 에러가 뜨는 상황이 자주 발생하여 실수를 최소화 하고싶어 이와 같은 방식으로 모든 Resource 관리를 변경하였다. 이제 내부 코드를 순차적으로 정리해보자. /* # HashClass Create Define * ClassName-> Struct Name * ResourceType-> S..

    [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (1)

    [Shader / HLSL] Shader Reflection & Define Macro를 이용한 Resource 관리 (1)

    Shader Resource 관리 방식 현재 사용하고 있는 Shader Reflection을 이용하여 Constant Buffer와 1:1 대응하는 Struct의 Hash_Code를 이용하여 List를 생성한다. Shader Resource Update 동작 과정 - Shader에 선언되어 있는 Constant Buffer와 같은 이름을 갖는 Struct 생성. - Define Marcro를 이용하여 해당 Class의 Hash_Code를 Hash List에 등록. - Shader Load 후 Shader Reflection을 통해 해당 Constant Buffer의 이름을 Hash Table에서 검색 후 Buffer List의 Key 값으로 사용 - 해당 Constant Buffer Update시 1:1..

    [Shader / HLSL] Shader Reflection

    Shader Reflection DirectX 11 Shader Reflection - ID3D11ShaderReflection -> 해당 struct를 통해 Shader Reflection 실행. - ID3D11ShaderReflectionConstantBuffer -> 해당 struct를 통해 ConstantBuffer Index를 기준으로 정보를 가져온다. - D3D11_SHADER_DESC -> 해당 struct를 통해 ID3D11ShaderReflection에서 Shader 정보를 가져온다. - D3D11_SHADER_BUFFER_DESC -> 해당 struct를 통해 ID3D11ShaderReflectionConstantBuffer에서 Constant Buffer 정보를 가져온다. - D3D1..