티스토리 뷰

바로 vulkan에 넘길 정보를 얻는 건 힘들다.

그냥 정보를 보고 사용할 수 있게 하는게 가능하다

https://github.com/cdwfs/spokk/blob/a3f2a812e1472b213609e15ed20243a0489d0045/src/spokk/spokk_shader.cpp

// Handle push constants. Each shader stage is only allowed to have one push constant range,
// so if the SPIRV defines more than one block, we have to merge them here.

이렇게 나와있는데;

정확한 것은 불칸 API 업데이트로 겹치는 영역은 push cmd 날릴 때

겹치는 shader를 flag로 넣어야 한다.

거기다; vulkan 쪽 사람 말로는 각 stage 를 여러번 나눠서 사용하는건

표준적이지 않다고 한다.

또한, pixel에는 각 element 마다 offset 을 넣도록 정해졌고

push constant는 각 entry point 마다 한번만 가능

https://github.com/SaschaWillems/Vulkan/blob/master/data/shaders/pbrbasic/pbr.frag

layout(push_constant) uniform PushConsts {
    layout(offset = 12) float roughness;
    layout(offset = 16) float metallic;
    layout(offset = 20) float r;
    layout(offset = 24) float g;
    layout(offset = 28) float b;
} material;

결국, 둘다 같은거 사용하던가 / 다르다고 가정하던가

앱에서 룰을 정하고 관리해야한다.

이건 Cross 사용 예제

https://github.com/khalladay/VkMaterialSystem/blob/master/ShaderPipeline/main.cpp

cross가 커서 json 형태로 뽑아서 쓰는 형태에 대한 글

http://kylehalladay.com/blog/tutorial/2017/11/27/Vulkan-Material-System.html

'Game > 작업일지' 카테고리의 다른 글

Vulkan 13 번째 : push descriptor  (0) 2018.12.06
Vulkan 10 번째: 새로 시작  (0) 2018.12.04
Vulkan 7번째 SPIR-V reflection  (0) 2018.11.26
Vulkan 6 번째 메모리 타입 및 푸시디스크립터  (0) 2018.11.23
SetStablePowerState  (0) 2018.11.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크