Update shader builder code and add initial work on a shader caching class
This commit is contained in:
parent
7ba1f35142
commit
41a345d399
10 changed files with 561 additions and 118 deletions
|
|
@ -505,29 +505,35 @@ void VkLightmapper::CreateShaders()
|
|||
auto onIncludeSystem = [](std::string headerName, std::string includerName, size_t depth) { return OnInclude(headerName.c_str(), includerName.c_str(), depth, true); };
|
||||
|
||||
shaders.vertRaytrace = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.VertRaytrace")
|
||||
.Create("VkLightmapper.VertRaytrace", fb->GetDevice());
|
||||
|
||||
shaders.vertScreenquad = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_screenquad.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_screenquad.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_screenquad.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_screenquad.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.VertScreenquad")
|
||||
.Create("VkLightmapper.VertScreenquad", fb->GetDevice());
|
||||
|
||||
shaders.vertCopy = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Vertex)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("vert_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.VertCopy")
|
||||
.Create("VkLightmapper.VertCopy", fb->GetDevice());
|
||||
|
||||
|
|
@ -544,48 +550,58 @@ void VkLightmapper::CreateShaders()
|
|||
defines += "#define USE_BOUNCE\n";
|
||||
|
||||
shaders.fragRaytrace[i] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", defines)
|
||||
.AddSource("frag_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", defines)
|
||||
.AddSource("frag_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.FragRaytrace")
|
||||
.Create("VkLightmapper.FragRaytrace", fb->GetDevice());
|
||||
}
|
||||
|
||||
shaders.fragResolve = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("frag_resolve.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_resolve.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("frag_resolve.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_resolve.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.FragResolve")
|
||||
.Create("VkLightmapper.FragResolve", fb->GetDevice());
|
||||
|
||||
shaders.fragBlur[0] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix + "#define BLUR_HORIZONTAL\r\n")
|
||||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix + "#define BLUR_HORIZONTAL\r\n")
|
||||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.FragBlur")
|
||||
.Create("VkLightmapper.FragBlur", fb->GetDevice());
|
||||
|
||||
shaders.fragBlur[1] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix + "#define BLUR_VERTICAL\r\n")
|
||||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix + "#define BLUR_VERTICAL\r\n")
|
||||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.FragBlur")
|
||||
.Create("VkLightmapper.FragBlur", fb->GetDevice());
|
||||
|
||||
shaders.fragCopy = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("frag_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Code(GLSLCompiler()
|
||||
.Type(ShaderType::Fragment)
|
||||
.AddSource("VersionBlock", prefix)
|
||||
.AddSource("frag_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.Compile(fb->GetDevice()))
|
||||
.DebugName("VkLightmapper.FragCopy")
|
||||
.Create("VkLightmapper.FragCopy", fb->GetDevice());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue