Skip to content
Snippets Groups Projects
Commit 288b0799 authored by Mara Vogt's avatar Mara Vogt
Browse files

[#92] modified glslCompiler so that environment is configured for rt shaders

parent 9c5cee92
No related branches found
No related tags found
1 merge request!75Resolve "RTX-Module"
Pipeline #27071 passed
...@@ -56,6 +56,18 @@ namespace vkcv::shader { ...@@ -56,6 +56,18 @@ namespace vkcv::shader {
return EShLangTaskNV; return EShLangTaskNV;
case ShaderStage::MESH: case ShaderStage::MESH:
return EShLangMeshNV; return EShLangMeshNV;
case ShaderStage::RAY_GEN:
return EShLangRayGen;
case ShaderStage::RAY_CLOSEST_HIT:
return EShLangClosestHit;
case ShaderStage::RAY_MISS:
return EShLangMiss;
case ShaderStage::RAY_INTERSECTION:
return EShLangIntersect;
case ShaderStage::RAY_ANY_HIT:
return EShLangAnyHit;
case ShaderStage::RAY_CALLABLE:
return EShLangCallable;
default: default:
return EShLangCount; return EShLangCount;
} }
...@@ -214,6 +226,16 @@ namespace vkcv::shader { ...@@ -214,6 +226,16 @@ namespace vkcv::shader {
} }
glslang::TShader shader (language); glslang::TShader shader (language);
//configure environment for rt shaders
if((shaderStage == ShaderStage::RAY_GEN) || (shaderStage == ShaderStage::RAY_ANY_HIT)
|| (shaderStage == ShaderStage::RAY_CLOSEST_HIT) || (shaderStage == ShaderStage::RAY_MISS)
|| (shaderStage == ShaderStage::RAY_INTERSECTION) || (shaderStage == ShaderStage::RAY_CALLABLE)){
shader.setEnvClient(glslang::EShClientVulkan,glslang::EShTargetVulkan_1_2);
shader.setEnvTarget(glslang::EShTargetSpv,glslang::EShTargetSpv_1_4);
}
glslang::TProgram program; glslang::TProgram program;
std::string source (shaderSource); std::string source (shaderSource);
......
#version 460 #version 460
#extension GL_EXT_ray_tracing : require #extension GL_EXT_ray_tracing : require
/*
layout(binding = 3, set 0) buffer vertices layout(binding = 3, set 0) buffer vertices
{ {
vec3 vertices[]; vec3 vertices[];
...@@ -10,6 +11,7 @@ layout(binding = 4, set 0) buffer indices ...@@ -10,6 +11,7 @@ layout(binding = 4, set 0) buffer indices
{ {
uint indices[]; uint indices[];
}; };
*/
void main() { void main() {
......
#version 460 #version 460
#extension GL_EXT_ray_tracing : require #extension GL_EXT_ray_tracing : require
/*
// A location for a ray payload (we can have multiple of these) // A location for a ray payload (we can have multiple of these)
layout(location = 0) rayPayloadEXT RayPayload pay; layout(location = 0) rayPayloadEXT RayPayload pay;
...@@ -15,7 +16,7 @@ layout( push_constant ) uniform constants { // TODO: add push_constants in m ...@@ -15,7 +16,7 @@ layout( push_constant ) uniform constants { // TODO: add push_constants in m
uint frameCount; // what is this? the actual frame? uint frameCount; // what is this? the actual frame?
}; };
*/
void main() { void main() {
// TODO // TODO
......
...@@ -123,7 +123,7 @@ int main(int argc, const char** argv) { ...@@ -123,7 +123,7 @@ int main(int argc, const char** argv) {
const auto& material0 = scene.getMaterial(0); const auto& material0 = scene.getMaterial(0);
/*
vkcv::ShaderProgram rayGenShaderProgram; vkcv::ShaderProgram rayGenShaderProgram;
compiler.compile(vkcv::ShaderStage::RAY_GEN, std::filesystem::path("resources/shaders/raytrace.rgen"), compiler.compile(vkcv::ShaderStage::RAY_GEN, std::filesystem::path("resources/shaders/raytrace.rgen"),
[&rayGenShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { [&rayGenShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
...@@ -141,7 +141,7 @@ int main(int argc, const char** argv) { ...@@ -141,7 +141,7 @@ int main(int argc, const char** argv) {
[&rayMissShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { [&rayMissShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
rayMissShaderProgram.addShader(shaderStage, path); rayMissShaderProgram.addShader(shaderStage, path);
}); });
*/
//TODO //TODO
// vkcv::DescriptorSetLayoutHandle rayGenShaderDescriptorSetLayout = core.createDescriptorSetLayout(rayGenShaderProgram.getReflectedDescriptors().at(0)); // vkcv::DescriptorSetLayoutHandle rayGenShaderDescriptorSetLayout = core.createDescriptorSetLayout(rayGenShaderProgram.getReflectedDescriptors().at(0));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment