Nadrin / PBR

An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.

Home Page:https://www.siejak.pl/projects/pbr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

If vulkan version miss some .spv files?

irimsky opened this issue · comments

When I run PBR -vulkan on Windows, it first threw the VK_ERROR_LAYER_NOT_PRESENT ERROR,
then I modified the related code not to load layers, then run again, it threw the Error: Could not open file: shaders/spirv/tonemap_vs.spv
But I didn't find the tonemap_vs.spv in the shaders dir. Is there anything missed?

I may got that spv should be translated from glsl. Maybe my vulkan version is the newest, so it don't support "VK_LAYER_KHRONOS_validation"
But it still can't work after I change the layer, because it has no output of spv files. Maybe it's not compatible with the new version?

So I have to solve it by manually add .psv files like this:

void add_spirv(const char* shadername, const char* stage)
{
	char cmdline[225];
	sprintf(cmdline, "glslangValidator -V -S %s -o \".\\shaders\\spirv\\%s.spv\" \".\\shaders\\glsl\\%s.glsl\" ", stage, shadername, shadername);
	std::cout << cmdline << std::endl;
	system(cmdline);
}

...

add_spirv("equirect2cube_cs", "comp");
add_spirv("irmap_cs", "comp");
add_spirv("pbr_fs", "frag");
add_spirv("pbr_vs", "vert");
add_spirv("skybox_fs", "frag");
add_spirv("skybox_vs", "vert");
add_spirv("spbrdf_cs", "comp");
add_spirv("spmap_cs", "comp");
add_spirv("tonemap_fs", "frag");
add_spirv("tonemap_vs", "vert");

then it can work at least...