VUID-VkPipelineShaderStageCreateInfo-pName-00707(ERROR / SPEC): msgNum: -1282697375 - Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-pName-00707 ] Object 0: handle = 0x213141081a0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xb38b9761 | vkCreateGraphicsPipelines(): pCreateInfos[0] No entrypoint found named `main` for stage VK_SHADER_STAGE_FRAGMENT_BIT. The Vulkan spec states: pName must be the name of an OpEntryPoint in module with an execution model that matches stage (https://vulkan.lunarg.com/doc/view/1.3.250.1/windows/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-pName-00707)
Objects: 1
[0] 0x213141081a0, type: 3, name: NULL
프래그먼트 셰이더에 main함수가 없다는데...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | struct FragmentShaderInput { [[vk::location(0)]] float3 col : COLOR; }; struct FragmentShaderOutput { [[vk::location(0)]] float4 col : COLOR; }; FragmentShaderOutput main(FragmentShaderInput input) { FragmentShaderOutput fragmentShaderOutput; fragmentShaderOutput.col = float4(input.col, 1.0f); return fragmentShaderOutput; } | cs |
나는 분명 작성했는데..
사실 그것보다 진짜 의문인건

분명 버텍스 셰이더를 먼저 거친 다음에 프래그먼트 셰이더가 온단말이야
그러면 버텍스 셰이더도 잘못 작성되었다는 가정 하에 버텍스 셰이더에서 먼저 에러가 나야한단 말이지
그런데 버텍스 셰이더는 에러가 안나고 프래그먼트 셰이더에서만 에러가 나는게 이해가 안됨..
SPIR-V로 컴파일 잘 된거 보면, HLSL 코드 자체에는 아무런 문제가 없지만 vulkan이 원하는 함수의 형태가 아니다 이런 뜻으로 이해해야 하는 것같은데
HLSL + Vulkan 예제 열심히 찾아봐도 잘 안나옴.....