티스토리 뷰
바로 vulkan에 넘길 정보를 얻는 건 힘들다.
그냥 정보를 보고 사용할 수 있게 하는게 가능하다
// 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
링크