hlsl

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

    Shader Resource 등록 방식 및 사용 - 이어서 실질적으로 Resource가 등록되고 사용하는 방식에 대해 정리해보려 한다. 이전에 설명해둔 방식을 토대로 HashCode를 Key값으로 두고 구현을 하였다. /// ConstantBuffer Reflection // Shader ConstantBuffer.. for (unsigned int cbindex = 0; cbindex GetConstantBufferByIndex(cbindex); D3D11_SHADER_BUFFER_DESC bufferDesc; if (S..

    [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] RunTime Compile Shader / Shader Macro

    RunTime Compile Shader Binary File Load - 해당 Shader File을 Compile 해둔 파일을 Binary로 읽어들여 사용하는 방식. - 이미 Compile 된 Shader를 사용하기 때문에 원본 Shader는 필요가 없으며, Compile 된 파일만 필요하다. - RunTime Compile시에 사용할 수 있는 Macro, EntryPoint, Shader Model Version 설정은 불가능. - Shader File Compile 시 Shader Model Version, EntryPoint 설정 후 Compile 해야하는 불편함이 있다. RunTime Compile - 해당 Shader File을 RunTime에 Compile 하는 방식, Shader File..

    [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..