Add shaders for light tiles
This commit is contained in:
parent
a23581be3d
commit
2ba2c24f6b
7 changed files with 130 additions and 1 deletions
|
|
@ -91,7 +91,7 @@ void VkDescriptorSetManager::UpdateLevelMeshSet()
|
|||
.AddBuffer(LevelMesh.Set.get(), 1, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, rsbuffers->MatrixBuffer->UBO(), 0, sizeof(MatricesUBO))
|
||||
.AddBuffer(LevelMesh.Set.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetUniformsBuffer())
|
||||
.AddBuffer(LevelMesh.Set.get(), 3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetLightUniformsBuffer())
|
||||
.AddBuffer(LevelMesh.Set.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetDynLightBuffer())
|
||||
.AddBuffer(LevelMesh.Set.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetBuffers()->SceneLightTiles.get())
|
||||
.AddBuffer(LevelMesh.Set.get(), 5, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, rsbuffers->Fogballbuffer.UBO.get(), 0, sizeof(FogballBufferUBO))
|
||||
.AddBuffer(LevelMesh.Set.get(), 6, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, rsbuffers->Bonebuffer.SSO.get())
|
||||
.Execute(fb->GetDevice());
|
||||
|
|
|
|||
|
|
@ -32,6 +32,33 @@
|
|||
|
||||
VkShaderManager::VkShaderManager(VulkanRenderDevice* fb) : fb(fb)
|
||||
{
|
||||
ZMinMax.vert = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
.DebugName("ZMinMax.vert")
|
||||
.AddSource("VersionBlock", GetVersionBlock().GetChars())
|
||||
.AddSource("shaders/scene/vert_zminmax.glsl", LoadPrivateShaderLump("shaders/scene/vert_zminmax.glsl").GetChars())
|
||||
.Create("ZMinMax.vert", fb->GetDevice());
|
||||
|
||||
ZMinMax.frag[0] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.DebugName("ZMinMax0.frag")
|
||||
.AddSource("VersionBlock", GetVersionBlock().GetChars())
|
||||
.AddSource("shaders/scene/frag_zminmax0.glsl", LoadPrivateShaderLump("shaders/scene/frag_zminmax0.glsl").GetChars())
|
||||
.Create("ZMinMax0.frag", fb->GetDevice());
|
||||
|
||||
ZMinMax.frag[1] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
.DebugName("ZMinMax1.frag")
|
||||
.AddSource("VersionBlock", GetVersionBlock().GetChars())
|
||||
.AddSource("shaders/scene/frag_zminmax1.glsl", LoadPrivateShaderLump("shaders/scene/frag_zminmax1.glsl").GetChars())
|
||||
.Create("ZMinMax1.frag", fb->GetDevice());
|
||||
|
||||
LightTiles = ShaderBuilder()
|
||||
.Type(ShaderType::Compute)
|
||||
.DebugName("LightTiles.comp")
|
||||
.AddSource("VersionBlock", GetVersionBlock().GetChars())
|
||||
.AddSource("shaders/scene/comp_lighttiles.glsl", LoadPrivateShaderLump("shaders/scene/comp_lighttiles.glsl").GetChars())
|
||||
.Create("LightTiles.comp", fb->GetDevice());
|
||||
}
|
||||
|
||||
VkShaderManager::~VkShaderManager()
|
||||
|
|
|
|||
|
|
@ -119,6 +119,10 @@ public:
|
|||
void AddVkPPShader(VkPPShader* shader);
|
||||
void RemoveVkPPShader(VkPPShader* shader);
|
||||
|
||||
VulkanShader* GetZMinMaxVertexShader() { return ZMinMax.vert.get(); }
|
||||
VulkanShader* GetZMinMaxFragmentShader(int index) { return ZMinMax.frag[index].get(); }
|
||||
VulkanShader* GetLightTilesShader() { return LightTiles.get(); }
|
||||
|
||||
private:
|
||||
std::unique_ptr<VulkanShader> LoadVertShader(FString shadername, const char *vert_lump, const char *defines, bool levelmesh);
|
||||
std::unique_ptr<VulkanShader> LoadFragShader(FString shadername, const char *frag_lump, const char *material_lump, const char* mateffect_lump, const char *lightmodel_lump, const char *defines, const VkShaderKey& key);
|
||||
|
|
@ -134,4 +138,12 @@ private:
|
|||
std::map<VkShaderKey, VkShaderProgram> programs;
|
||||
|
||||
std::list<VkPPShader*> PPShaders;
|
||||
|
||||
struct
|
||||
{
|
||||
std::unique_ptr<VulkanShader> vert;
|
||||
std::unique_ptr<VulkanShader> frag[2];
|
||||
} ZMinMax;
|
||||
|
||||
std::unique_ptr<VulkanShader> LightTiles;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue