Rename VkLightmap and VkRaytrace
This commit is contained in:
parent
6a77924207
commit
98c209edbd
12 changed files with 110 additions and 114 deletions
|
|
@ -760,8 +760,8 @@ set (VULKAN_SOURCES
|
|||
common/rendering/vulkan/textures/vk_renderbuffers.cpp
|
||||
common/rendering/vulkan/textures/vk_texture.cpp
|
||||
common/rendering/vulkan/framebuffers/vk_framebuffer.cpp
|
||||
common/rendering/vulkan/accelstructs/vk_raytrace.cpp
|
||||
common/rendering/vulkan/accelstructs/vk_lightmap.cpp
|
||||
common/rendering/vulkan/accelstructs/vk_levelmesh.cpp
|
||||
common/rendering/vulkan/accelstructs/vk_lightmapper.cpp
|
||||
common/rendering/vulkan/accelstructs/halffloat.cpp
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
**
|
||||
*/
|
||||
|
||||
#include "vk_raytrace.h"
|
||||
#include "vk_levelmesh.h"
|
||||
#include "zvulkan/vulkanbuilders.h"
|
||||
#include "vulkan/vk_renderdevice.h"
|
||||
#include "vulkan/commands/vk_commandbuffer.h"
|
||||
|
|
@ -28,14 +28,14 @@
|
|||
#include "hw_material.h"
|
||||
#include "texturemanager.h"
|
||||
|
||||
VkRaytrace::VkRaytrace(VulkanRenderDevice* fb) : fb(fb)
|
||||
VkLevelMesh::VkLevelMesh(VulkanRenderDevice* fb) : fb(fb)
|
||||
{
|
||||
useRayQuery = fb->GetDevice()->SupportsExtension(VK_KHR_RAY_QUERY_EXTENSION_NAME) && fb->GetDevice()->PhysicalDevice.Features.RayQuery.rayQuery;
|
||||
|
||||
SetLevelMesh(nullptr);
|
||||
}
|
||||
|
||||
void VkRaytrace::SetLevelMesh(LevelMesh* mesh)
|
||||
void VkLevelMesh::SetLevelMesh(LevelMesh* mesh)
|
||||
{
|
||||
if (!mesh)
|
||||
mesh = &NullMesh;
|
||||
|
|
@ -45,7 +45,7 @@ void VkRaytrace::SetLevelMesh(LevelMesh* mesh)
|
|||
CreateVulkanObjects();
|
||||
}
|
||||
|
||||
void VkRaytrace::Reset()
|
||||
void VkLevelMesh::Reset()
|
||||
{
|
||||
auto deletelist = fb->GetCommands()->DrawDeleteList.get();
|
||||
deletelist->Add(std::move(VertexBuffer));
|
||||
|
|
@ -69,7 +69,7 @@ void VkRaytrace::Reset()
|
|||
deletelist->Add(std::move(TopLevelAS.AccelStruct));
|
||||
}
|
||||
|
||||
void VkRaytrace::CreateVulkanObjects()
|
||||
void VkLevelMesh::CreateVulkanObjects()
|
||||
{
|
||||
CreateBuffers();
|
||||
UploadMeshes(false);
|
||||
|
|
@ -81,7 +81,7 @@ void VkRaytrace::CreateVulkanObjects()
|
|||
}
|
||||
}
|
||||
|
||||
void VkRaytrace::BeginFrame()
|
||||
void VkLevelMesh::BeginFrame()
|
||||
{
|
||||
UploadMeshes(true);
|
||||
if (useRayQuery)
|
||||
|
|
@ -91,7 +91,7 @@ void VkRaytrace::BeginFrame()
|
|||
}
|
||||
}
|
||||
|
||||
void VkRaytrace::UploadMeshes(bool dynamicOnly)
|
||||
void VkLevelMesh::UploadMeshes(bool dynamicOnly)
|
||||
{
|
||||
TArray<SubmeshBufferLocation> locations(2);
|
||||
|
||||
|
|
@ -378,37 +378,37 @@ void VkRaytrace::UploadMeshes(bool dynamicOnly)
|
|||
.Execute(fb->GetCommands()->GetTransferCommands(), VK_PIPELINE_STAGE_TRANSFER_BIT, useRayQuery ? VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR : VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxVertexBufferSize()
|
||||
int VkLevelMesh::GetMaxVertexBufferSize()
|
||||
{
|
||||
return Mesh->StaticMesh->Mesh.Vertices.Size() + MaxDynamicVertices;
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxIndexBufferSize()
|
||||
int VkLevelMesh::GetMaxIndexBufferSize()
|
||||
{
|
||||
return Mesh->StaticMesh->Mesh.Elements.Size() + MaxDynamicIndexes;
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxNodeBufferSize()
|
||||
int VkLevelMesh::GetMaxNodeBufferSize()
|
||||
{
|
||||
return (int)Mesh->StaticMesh->Collision->get_nodes().size() + MaxDynamicNodes + 1; // + 1 for the merge root node
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxSurfaceBufferSize()
|
||||
int VkLevelMesh::GetMaxSurfaceBufferSize()
|
||||
{
|
||||
return Mesh->StaticMesh->GetSurfaceCount() + MaxDynamicSurfaces;
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxUniformsBufferSize()
|
||||
int VkLevelMesh::GetMaxUniformsBufferSize()
|
||||
{
|
||||
return Mesh->StaticMesh->Mesh.Uniforms.Size() + MaxDynamicUniforms;
|
||||
}
|
||||
|
||||
int VkRaytrace::GetMaxSurfaceIndexBufferSize()
|
||||
int VkLevelMesh::GetMaxSurfaceIndexBufferSize()
|
||||
{
|
||||
return Mesh->StaticMesh->Mesh.SurfaceIndexes.Size() + MaxDynamicSurfaceIndexes;
|
||||
}
|
||||
|
||||
void VkRaytrace::CreateBuffers()
|
||||
void VkLevelMesh::CreateBuffers()
|
||||
{
|
||||
VertexBuffer = BufferBuilder()
|
||||
.Usage(
|
||||
|
|
@ -473,7 +473,7 @@ void VkRaytrace::CreateBuffers()
|
|||
.Create(fb->GetDevice());
|
||||
}
|
||||
|
||||
VkRaytrace::BLAS VkRaytrace::CreateBLAS(LevelSubmesh* submesh, bool preferFastBuild, int vertexOffset, int indexOffset)
|
||||
VkLevelMesh::BLAS VkLevelMesh::CreateBLAS(LevelSubmesh* submesh, bool preferFastBuild, int vertexOffset, int indexOffset)
|
||||
{
|
||||
BLAS blas;
|
||||
|
||||
|
|
@ -538,17 +538,17 @@ VkRaytrace::BLAS VkRaytrace::CreateBLAS(LevelSubmesh* submesh, bool preferFastBu
|
|||
return blas;
|
||||
}
|
||||
|
||||
void VkRaytrace::CreateStaticBLAS()
|
||||
void VkLevelMesh::CreateStaticBLAS()
|
||||
{
|
||||
StaticBLAS = CreateBLAS(Mesh->StaticMesh.get(), false, 0, 0);
|
||||
}
|
||||
|
||||
void VkRaytrace::CreateDynamicBLAS()
|
||||
void VkLevelMesh::CreateDynamicBLAS()
|
||||
{
|
||||
DynamicBLAS = CreateBLAS(Mesh->DynamicMesh.get(), true, Mesh->StaticMesh->Mesh.Vertices.Size(), Mesh->StaticMesh->Mesh.Elements.Size());
|
||||
}
|
||||
|
||||
void VkRaytrace::CreateTopLevelAS()
|
||||
void VkLevelMesh::CreateTopLevelAS()
|
||||
{
|
||||
auto deletelist = fb->GetCommands()->DrawDeleteList.get();
|
||||
deletelist->Add(std::move(TopLevelAS.TransferBuffer));
|
||||
|
|
@ -648,7 +648,7 @@ void VkRaytrace::CreateTopLevelAS()
|
|||
.Execute(fb->GetCommands()->GetTransferCommands(), VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||
}
|
||||
|
||||
void VkRaytrace::UpdateDynamicBLAS()
|
||||
void VkLevelMesh::UpdateDynamicBLAS()
|
||||
{
|
||||
// To do: should we reuse the buffers?
|
||||
|
||||
|
|
@ -660,7 +660,7 @@ void VkRaytrace::UpdateDynamicBLAS()
|
|||
DynamicBLAS = CreateBLAS(Mesh->DynamicMesh.get(), true, Mesh->StaticMesh->Mesh.Vertices.Size(), Mesh->StaticMesh->Mesh.Elements.Size());
|
||||
}
|
||||
|
||||
void VkRaytrace::UpdateTopLevelAS()
|
||||
void VkLevelMesh::UpdateTopLevelAS()
|
||||
{
|
||||
VkAccelerationStructureInstanceKHR instances[2] = {};
|
||||
instances[0].transform.matrix[0][0] = 1.0f;
|
||||
|
|
@ -59,10 +59,10 @@ struct SubmeshBufferLocation
|
|||
int UniformsSize = 0;
|
||||
};
|
||||
|
||||
class VkRaytrace
|
||||
class VkLevelMesh
|
||||
{
|
||||
public:
|
||||
VkRaytrace(VulkanRenderDevice* fb);
|
||||
VkLevelMesh(VulkanRenderDevice* fb);
|
||||
|
||||
void SetLevelMesh(LevelMesh* mesh);
|
||||
void BeginFrame();
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
|
||||
#include "vk_lightmap.h"
|
||||
#include "vk_lightmapper.h"
|
||||
#include "vulkan/vk_renderdevice.h"
|
||||
#include "vulkan/textures/vk_texture.h"
|
||||
#include "vulkan/commands/vk_commandbuffer.h"
|
||||
#include "vulkan/descriptorsets/vk_descriptorset.h"
|
||||
#include "vk_raytrace.h"
|
||||
#include "vk_levelmesh.h"
|
||||
#include "zvulkan/vulkanbuilders.h"
|
||||
#include "halffloat.h"
|
||||
#include "filesystem.h"
|
||||
|
|
@ -32,7 +32,7 @@ CVAR(Bool, lm_softshadows, true, 0);
|
|||
CVAR(Bool, lm_sunlight, true, 0);
|
||||
CVAR(Bool, lm_blur, true, 0);
|
||||
|
||||
VkLightmap::VkLightmap(VulkanRenderDevice* fb) : fb(fb)
|
||||
VkLightmapper::VkLightmapper(VulkanRenderDevice* fb) : fb(fb)
|
||||
{
|
||||
useRayQuery = fb->GetDevice()->SupportsExtension(VK_KHR_RAY_QUERY_EXTENSION_NAME) && fb->GetDevice()->PhysicalDevice.Features.RayQuery.rayQuery;
|
||||
|
||||
|
|
@ -59,12 +59,12 @@ VkLightmap::VkLightmap(VulkanRenderDevice* fb) : fb(fb)
|
|||
}
|
||||
}
|
||||
|
||||
VkLightmap::~VkLightmap()
|
||||
VkLightmapper::~VkLightmapper()
|
||||
{
|
||||
ReleaseResources();
|
||||
}
|
||||
|
||||
void VkLightmap::ReleaseResources()
|
||||
void VkLightmapper::ReleaseResources()
|
||||
{
|
||||
if (lights.Buffer)
|
||||
lights.Buffer->Unmap();
|
||||
|
|
@ -76,7 +76,7 @@ void VkLightmap::ReleaseResources()
|
|||
drawindexed.ConstantsBuffer->Unmap();
|
||||
}
|
||||
|
||||
void VkLightmap::SetLevelMesh(LevelMesh* level)
|
||||
void VkLightmapper::SetLevelMesh(LevelMesh* level)
|
||||
{
|
||||
mesh = level;
|
||||
UpdateAccelStructDescriptors();
|
||||
|
|
@ -86,14 +86,14 @@ void VkLightmap::SetLevelMesh(LevelMesh* level)
|
|||
lastSurfaceCount = 0;
|
||||
}
|
||||
|
||||
void VkLightmap::BeginFrame()
|
||||
void VkLightmapper::BeginFrame()
|
||||
{
|
||||
lights.Pos = 0;
|
||||
lights.ResetCounter++;
|
||||
drawindexed.Pos = 0;
|
||||
}
|
||||
|
||||
void VkLightmap::Raytrace(const TArray<LevelMeshSurface*>& surfaces)
|
||||
void VkLightmapper::Raytrace(const TArray<LevelMeshSurface*>& surfaces)
|
||||
{
|
||||
if (mesh && surfaces.Size() > 0)
|
||||
{
|
||||
|
|
@ -120,7 +120,7 @@ void VkLightmap::Raytrace(const TArray<LevelMeshSurface*>& surfaces)
|
|||
}
|
||||
}
|
||||
|
||||
void VkLightmap::SelectSurfaces(const TArray<LevelMeshSurface*>& surfaces)
|
||||
void VkLightmapper::SelectSurfaces(const TArray<LevelMeshSurface*>& surfaces)
|
||||
{
|
||||
bakeImage.maxX = 0;
|
||||
bakeImage.maxY = 0;
|
||||
|
|
@ -154,7 +154,7 @@ void VkLightmap::SelectSurfaces(const TArray<LevelMeshSurface*>& surfaces)
|
|||
}
|
||||
}
|
||||
|
||||
void VkLightmap::Render()
|
||||
void VkLightmapper::Render()
|
||||
{
|
||||
auto cmdbuffer = fb->GetCommands()->GetTransferCommands();
|
||||
|
||||
|
|
@ -168,8 +168,8 @@ void VkLightmap::Render()
|
|||
.Execute(cmdbuffer);
|
||||
|
||||
VkDeviceSize offset = 0;
|
||||
cmdbuffer->bindVertexBuffers(0, 1, &fb->GetRaytrace()->GetVertexBuffer()->buffer, &offset);
|
||||
cmdbuffer->bindIndexBuffer(fb->GetRaytrace()->GetIndexBuffer()->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
cmdbuffer->bindVertexBuffers(0, 1, &fb->GetLevelMesh()->GetVertexBuffer()->buffer, &offset);
|
||||
cmdbuffer->bindIndexBuffer(fb->GetLevelMesh()->GetIndexBuffer()->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
cmdbuffer->bindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, raytrace.pipeline[GetRaytracePipelineIndex()].get());
|
||||
cmdbuffer->bindDescriptorSet(VK_PIPELINE_BIND_POINT_GRAPHICS, raytrace.pipelineLayout.get(), 0, raytrace.descriptorSet0.get());
|
||||
cmdbuffer->bindDescriptorSet(VK_PIPELINE_BIND_POINT_GRAPHICS, raytrace.pipelineLayout.get(), 1, raytrace.descriptorSet1.get());
|
||||
|
|
@ -291,7 +291,7 @@ void VkLightmap::Render()
|
|||
fb->GetCommands()->PopGroup(cmdbuffer);
|
||||
}
|
||||
|
||||
void VkLightmap::UploadUniforms()
|
||||
void VkLightmapper::UploadUniforms()
|
||||
{
|
||||
Uniforms values = {};
|
||||
values.SunDir = SwapYZ(mesh->SunDirection);
|
||||
|
|
@ -309,7 +309,7 @@ void VkLightmap::UploadUniforms()
|
|||
.Execute(cmdbuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||
}
|
||||
|
||||
void VkLightmap::Resolve()
|
||||
void VkLightmapper::Resolve()
|
||||
{
|
||||
auto cmdbuffer = fb->GetCommands()->GetTransferCommands();
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ void VkLightmap::Resolve()
|
|||
fb->GetCommands()->PopGroup(cmdbuffer);
|
||||
}
|
||||
|
||||
void VkLightmap::Blur()
|
||||
void VkLightmapper::Blur()
|
||||
{
|
||||
auto cmdbuffer = fb->GetCommands()->GetTransferCommands();
|
||||
|
||||
|
|
@ -402,7 +402,7 @@ void VkLightmap::Blur()
|
|||
fb->GetCommands()->PopGroup(cmdbuffer);
|
||||
}
|
||||
|
||||
void VkLightmap::CopyResult()
|
||||
void VkLightmapper::CopyResult()
|
||||
{
|
||||
// Sort by destination
|
||||
uint32_t pixels = 0;
|
||||
|
|
@ -536,7 +536,7 @@ void VkLightmap::CopyResult()
|
|||
fb->GetCommands()->PopGroup(cmdbuffer);
|
||||
}
|
||||
|
||||
void VkLightmap::CreateShaders()
|
||||
void VkLightmapper::CreateShaders()
|
||||
{
|
||||
std::string prefix = "#version 460\r\n";
|
||||
std::string traceprefix = "#version 460\r\n";
|
||||
|
|
@ -563,8 +563,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("vert_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.VertRaytrace")
|
||||
.Create("VkLightmap.VertRaytrace", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.VertRaytrace")
|
||||
.Create("VkLightmapper.VertRaytrace", fb->GetDevice());
|
||||
|
||||
shaders.vertScreenquad = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
|
|
@ -572,8 +572,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("vert_screenquad.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_screenquad.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.VertScreenquad")
|
||||
.Create("VkLightmap.VertScreenquad", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.VertScreenquad")
|
||||
.Create("VkLightmapper.VertScreenquad", fb->GetDevice());
|
||||
|
||||
shaders.vertCopy = ShaderBuilder()
|
||||
.Type(ShaderType::Vertex)
|
||||
|
|
@ -581,8 +581,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("vert_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/vert_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.VertCopy")
|
||||
.Create("VkLightmap.VertCopy", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.VertCopy")
|
||||
.Create("VkLightmapper.VertCopy", fb->GetDevice());
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
|
|
@ -600,8 +600,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("frag_raytrace.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_raytrace.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.FragRaytrace")
|
||||
.Create("VkLightmap.FragRaytrace", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.FragRaytrace")
|
||||
.Create("VkLightmapper.FragRaytrace", fb->GetDevice());
|
||||
}
|
||||
|
||||
shaders.fragResolve = ShaderBuilder()
|
||||
|
|
@ -610,8 +610,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("frag_resolve.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_resolve.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.FragResolve")
|
||||
.Create("VkLightmap.FragResolve", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.FragResolve")
|
||||
.Create("VkLightmapper.FragResolve", fb->GetDevice());
|
||||
|
||||
shaders.fragBlur[0] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
|
|
@ -619,8 +619,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.FragBlur")
|
||||
.Create("VkLightmap.FragBlur", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.FragBlur")
|
||||
.Create("VkLightmapper.FragBlur", fb->GetDevice());
|
||||
|
||||
shaders.fragBlur[1] = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
|
|
@ -628,8 +628,8 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("frag_blur.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_blur.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.FragBlur")
|
||||
.Create("VkLightmap.FragBlur", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.FragBlur")
|
||||
.Create("VkLightmapper.FragBlur", fb->GetDevice());
|
||||
|
||||
shaders.fragCopy = ShaderBuilder()
|
||||
.Type(ShaderType::Fragment)
|
||||
|
|
@ -637,11 +637,11 @@ void VkLightmap::CreateShaders()
|
|||
.AddSource("frag_copy.glsl", LoadPrivateShaderLump("shaders/lightmap/frag_copy.glsl").GetChars())
|
||||
.OnIncludeLocal(onIncludeLocal)
|
||||
.OnIncludeSystem(onIncludeSystem)
|
||||
.DebugName("VkLightmap.FragCopy")
|
||||
.Create("VkLightmap.FragCopy", fb->GetDevice());
|
||||
.DebugName("VkLightmapper.FragCopy")
|
||||
.Create("VkLightmapper.FragCopy", fb->GetDevice());
|
||||
}
|
||||
|
||||
int VkLightmap::GetRaytracePipelineIndex()
|
||||
int VkLightmapper::GetRaytracePipelineIndex()
|
||||
{
|
||||
int index = 0;
|
||||
if (lm_softshadows && useRayQuery)
|
||||
|
|
@ -653,14 +653,14 @@ int VkLightmap::GetRaytracePipelineIndex()
|
|||
return index;
|
||||
}
|
||||
|
||||
FString VkLightmap::LoadPrivateShaderLump(const char* lumpname)
|
||||
FString VkLightmapper::LoadPrivateShaderLump(const char* lumpname)
|
||||
{
|
||||
int lump = fileSystem.CheckNumForFullName(lumpname, 0);
|
||||
if (lump == -1) I_Error("Unable to load '%s'", lumpname);
|
||||
return GetStringFromLump(lump);
|
||||
}
|
||||
|
||||
FString VkLightmap::LoadPublicShaderLump(const char* lumpname)
|
||||
FString VkLightmapper::LoadPublicShaderLump(const char* lumpname)
|
||||
{
|
||||
int lump = fileSystem.CheckNumForFullName(lumpname, 0);
|
||||
if (lump == -1) lump = fileSystem.CheckNumForFullName(lumpname);
|
||||
|
|
@ -668,7 +668,7 @@ FString VkLightmap::LoadPublicShaderLump(const char* lumpname)
|
|||
return GetStringFromLump(lump);
|
||||
}
|
||||
|
||||
ShaderIncludeResult VkLightmap::OnInclude(FString headerName, FString includerName, size_t depth, bool system)
|
||||
ShaderIncludeResult VkLightmapper::OnInclude(FString headerName, FString includerName, size_t depth, bool system)
|
||||
{
|
||||
if (depth > 8)
|
||||
I_Error("Too much include recursion!");
|
||||
|
|
@ -692,7 +692,7 @@ ShaderIncludeResult VkLightmap::OnInclude(FString headerName, FString includerNa
|
|||
return ShaderIncludeResult(headerName.GetChars(), code.GetChars());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateRaytracePipeline()
|
||||
void VkLightmapper::CreateRaytracePipeline()
|
||||
{
|
||||
raytrace.descriptorSetLayout0 = DescriptorSetLayoutBuilder()
|
||||
.AddBinding(0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
|
|
@ -803,38 +803,38 @@ void VkLightmap::CreateRaytracePipeline()
|
|||
raytrace.descriptorSet1->SetDebugName("raytrace.descriptorSet1");
|
||||
}
|
||||
|
||||
void VkLightmap::UpdateAccelStructDescriptors()
|
||||
void VkLightmapper::UpdateAccelStructDescriptors()
|
||||
{
|
||||
if (useRayQuery)
|
||||
{
|
||||
WriteDescriptors()
|
||||
.AddAccelerationStructure(raytrace.descriptorSet1.get(), 0, fb->GetRaytrace()->GetAccelStruct())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetVertexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetIndexBuffer())
|
||||
.AddAccelerationStructure(raytrace.descriptorSet1.get(), 0, fb->GetLevelMesh()->GetAccelStruct())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetVertexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetIndexBuffer())
|
||||
.Execute(fb->GetDevice());
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteDescriptors()
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetNodeBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetVertexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetIndexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetNodeBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetVertexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet1.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetIndexBuffer())
|
||||
.Execute(fb->GetDevice());
|
||||
}
|
||||
|
||||
WriteDescriptors()
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, uniforms.Buffer.get(), 0, sizeof(Uniforms))
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetSurfaceIndexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetSurfaceBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetSurfaceIndexBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetSurfaceBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, lights.Buffer.get())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetPortalBuffer())
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetPortalBuffer())
|
||||
#ifdef USE_DRAWINDIRECT
|
||||
.AddBuffer(raytrace.descriptorSet0.get(), 5, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, drawindexed.ConstantsBuffer.get(), 0, drawindexed.BufferSize * sizeof(LightmapRaytracePC))
|
||||
#endif
|
||||
.Execute(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateResolvePipeline()
|
||||
void VkLightmapper::CreateResolvePipeline()
|
||||
{
|
||||
resolve.descriptorSetLayout = DescriptorSetLayoutBuilder()
|
||||
.AddBinding(0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
|
|
@ -887,7 +887,7 @@ void VkLightmap::CreateResolvePipeline()
|
|||
.Create(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateBlurPipeline()
|
||||
void VkLightmapper::CreateBlurPipeline()
|
||||
{
|
||||
blur.descriptorSetLayout = DescriptorSetLayoutBuilder()
|
||||
.AddBinding(0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
|
|
@ -943,7 +943,7 @@ void VkLightmap::CreateBlurPipeline()
|
|||
.Create(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateCopyPipeline()
|
||||
void VkLightmapper::CreateCopyPipeline()
|
||||
{
|
||||
copy.descriptorSetLayout = DescriptorSetLayoutBuilder()
|
||||
.AddBinding(0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
|
|
@ -999,7 +999,7 @@ void VkLightmap::CreateCopyPipeline()
|
|||
.Create(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateBakeImage()
|
||||
void VkLightmapper::CreateBakeImage()
|
||||
{
|
||||
int width = bakeImageSize;
|
||||
int height = bakeImageSize;
|
||||
|
|
@ -1084,7 +1084,7 @@ void VkLightmap::CreateBakeImage()
|
|||
.Execute(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateUniformBuffer()
|
||||
void VkLightmapper::CreateUniformBuffer()
|
||||
{
|
||||
VkDeviceSize align = fb->GetDevice()->PhysicalDevice.Properties.Properties.limits.minUniformBufferOffsetAlignment;
|
||||
uniforms.StructStride = (sizeof(Uniforms) + align - 1) / align * align;
|
||||
|
|
@ -1102,7 +1102,7 @@ void VkLightmap::CreateUniformBuffer()
|
|||
.Create(fb->GetDevice());
|
||||
}
|
||||
|
||||
void VkLightmap::CreateLightBuffer()
|
||||
void VkLightmapper::CreateLightBuffer()
|
||||
{
|
||||
size_t size = sizeof(LightInfo) * lights.BufferSize;
|
||||
|
||||
|
|
@ -1121,7 +1121,7 @@ void VkLightmap::CreateLightBuffer()
|
|||
lights.Pos = 0;
|
||||
}
|
||||
|
||||
void VkLightmap::CreateTileBuffer()
|
||||
void VkLightmapper::CreateTileBuffer()
|
||||
{
|
||||
size_t size = sizeof(CopyTileInfo) * copytiles.BufferSize;
|
||||
|
||||
|
|
@ -1139,7 +1139,7 @@ void VkLightmap::CreateTileBuffer()
|
|||
copytiles.Tiles = (CopyTileInfo*)copytiles.Buffer->Map(0, size);
|
||||
}
|
||||
|
||||
void VkLightmap::CreateDrawIndexedBuffer()
|
||||
void VkLightmapper::CreateDrawIndexedBuffer()
|
||||
{
|
||||
size_t size1 = sizeof(VkDrawIndexedIndirectCommand) * drawindexed.BufferSize;
|
||||
size_t size2 = sizeof(LightmapRaytracePC) * drawindexed.BufferSize;
|
||||
|
|
@ -119,11 +119,11 @@ struct CopyTileInfo
|
|||
|
||||
static_assert(sizeof(CopyTileInfo) == sizeof(int32_t) * 8);
|
||||
|
||||
class VkLightmap
|
||||
class VkLightmapper
|
||||
{
|
||||
public:
|
||||
VkLightmap(VulkanRenderDevice* fb);
|
||||
~VkLightmap();
|
||||
VkLightmapper(VulkanRenderDevice* fb);
|
||||
~VkLightmapper();
|
||||
|
||||
void BeginFrame();
|
||||
void Raytrace(const TArray<LevelMeshSurface*>& surfaces);
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "vk_descriptorset.h"
|
||||
#include "vulkan/vk_renderdevice.h"
|
||||
#include "vulkan/accelstructs/vk_raytrace.h"
|
||||
#include "vulkan/accelstructs/vk_levelmesh.h"
|
||||
#include "vulkan/shaders/vk_shader.h"
|
||||
#include "vulkan/samplers/vk_samplers.h"
|
||||
#include "vulkan/textures/vk_renderbuffers.h"
|
||||
|
|
@ -91,7 +91,7 @@ void VkDescriptorSetManager::UpdateLevelMeshSet()
|
|||
WriteDescriptors()
|
||||
.AddBuffer(LevelMesh.Set.get(), 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, rsbuffers->Viewpoint.UBO.get(), 0, sizeof(HWViewpointUniforms))
|
||||
.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->GetRaytrace()->GetSurfaceUniformsBuffer())
|
||||
.AddBuffer(LevelMesh.Set.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetSurfaceUniformsBuffer())
|
||||
.AddBuffer(LevelMesh.Set.get(), 3, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, rsbuffers->Lightbuffer.UBO.get(), 0, sizeof(LightBufferUBO))
|
||||
.AddBuffer(LevelMesh.Set.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, rsbuffers->Bonebuffer.SSO.get())
|
||||
.Execute(fb->GetDevice());
|
||||
|
|
@ -113,13 +113,13 @@ void VkDescriptorSetManager::UpdateFixedSet()
|
|||
update.AddCombinedImageSampler(Fixed.Set.get(), 1, fb->GetTextureManager()->Lightmap.View.get(), fb->GetSamplerManager()->LightmapSampler.get(), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
|
||||
if (fb->GetDevice()->SupportsExtension(VK_KHR_RAY_QUERY_EXTENSION_NAME) && fb->GetDevice()->PhysicalDevice.Features.RayQuery.rayQuery)
|
||||
{
|
||||
update.AddAccelerationStructure(Fixed.Set.get(), 2, fb->GetRaytrace()->GetAccelStruct());
|
||||
update.AddAccelerationStructure(Fixed.Set.get(), 2, fb->GetLevelMesh()->GetAccelStruct());
|
||||
}
|
||||
else
|
||||
{
|
||||
update.AddBuffer(Fixed.Set.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetNodeBuffer());
|
||||
update.AddBuffer(Fixed.Set.get(), 3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetVertexBuffer());
|
||||
update.AddBuffer(Fixed.Set.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetRaytrace()->GetIndexBuffer());
|
||||
update.AddBuffer(Fixed.Set.get(), 2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetNodeBuffer());
|
||||
update.AddBuffer(Fixed.Set.get(), 3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetVertexBuffer());
|
||||
update.AddBuffer(Fixed.Set.get(), 4, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, fb->GetLevelMesh()->GetIndexBuffer());
|
||||
}
|
||||
update.Execute(fb->GetDevice());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include "vk_pprenderpass.h"
|
||||
#include "vulkan/vk_renderstate.h"
|
||||
#include "vulkan/vk_renderdevice.h"
|
||||
#include "vulkan/accelstructs/vk_raytrace.h"
|
||||
#include "vulkan/accelstructs/vk_levelmesh.h"
|
||||
#include "vulkan/descriptorsets/vk_descriptorset.h"
|
||||
#include "vulkan/textures/vk_renderbuffers.h"
|
||||
#include "vulkan/samplers/vk_samplers.h"
|
||||
|
|
|
|||
|
|
@ -43,8 +43,8 @@
|
|||
#include "vk_renderdevice.h"
|
||||
#include "vulkan/vk_renderstate.h"
|
||||
#include "vulkan/vk_postprocess.h"
|
||||
#include "vulkan/accelstructs/vk_raytrace.h"
|
||||
#include "vulkan/accelstructs/vk_lightmap.h"
|
||||
#include "vulkan/accelstructs/vk_levelmesh.h"
|
||||
#include "vulkan/accelstructs/vk_lightmapper.h"
|
||||
#include "vulkan/pipelines/vk_renderpass.h"
|
||||
#include "vulkan/descriptorsets/vk_descriptorset.h"
|
||||
#include "vulkan/shaders/vk_shader.h"
|
||||
|
|
@ -211,8 +211,8 @@ void VulkanRenderDevice::InitializeState()
|
|||
mPostprocess.reset(new VkPostprocess(this));
|
||||
mDescriptorSetManager.reset(new VkDescriptorSetManager(this));
|
||||
mRenderPassManager.reset(new VkRenderPassManager(this));
|
||||
mRaytrace.reset(new VkRaytrace(this));
|
||||
mLightmap.reset(new VkLightmap(this));
|
||||
mLevelMesh.reset(new VkLevelMesh(this));
|
||||
mLightmapper.reset(new VkLightmapper(this));
|
||||
|
||||
mBufferManager->Init();
|
||||
|
||||
|
|
@ -480,12 +480,12 @@ void VulkanRenderDevice::BeginFrame()
|
|||
if (levelMeshChanged)
|
||||
{
|
||||
levelMeshChanged = false;
|
||||
mRaytrace->SetLevelMesh(levelMesh);
|
||||
mLevelMesh->SetLevelMesh(levelMesh);
|
||||
|
||||
if (levelMesh && levelMesh->StaticMesh->GetSurfaceCount() > 0)
|
||||
{
|
||||
GetTextureManager()->CreateLightmap(levelMesh->StaticMesh->LMTextureSize, levelMesh->StaticMesh->LMTextureCount, std::move(levelMesh->StaticMesh->LMTextureData));
|
||||
GetLightmap()->SetLevelMesh(levelMesh);
|
||||
GetLightmapper()->SetLevelMesh(levelMesh);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -496,8 +496,8 @@ void VulkanRenderDevice::BeginFrame()
|
|||
mSaveBuffers->BeginFrame(SAVEPICWIDTH, SAVEPICHEIGHT, SAVEPICWIDTH, SAVEPICHEIGHT);
|
||||
mRenderState->BeginFrame();
|
||||
mDescriptorSetManager->BeginFrame();
|
||||
mRaytrace->BeginFrame();
|
||||
mLightmap->BeginFrame();
|
||||
mLevelMesh->BeginFrame();
|
||||
mLightmapper->BeginFrame();
|
||||
}
|
||||
|
||||
void VulkanRenderDevice::Draw2D()
|
||||
|
|
@ -555,7 +555,7 @@ void VulkanRenderDevice::SetLevelMesh(LevelMesh* mesh)
|
|||
|
||||
void VulkanRenderDevice::UpdateLightmaps(const TArray<LevelMeshSurface*>& surfaces)
|
||||
{
|
||||
GetLightmap()->Raytrace(surfaces);
|
||||
GetLightmapper()->Raytrace(surfaces);
|
||||
}
|
||||
|
||||
void VulkanRenderDevice::SetShadowMaps(const TArray<float>& lights, hwrenderer::LevelAABBTree* tree, bool newTree)
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ class VkCommandBufferManager;
|
|||
class VkDescriptorSetManager;
|
||||
class VkRenderPassManager;
|
||||
class VkFramebufferManager;
|
||||
class VkRaytrace;
|
||||
class VkLightmap;
|
||||
class VkLevelMesh;
|
||||
class VkLightmapper;
|
||||
class VkRenderState;
|
||||
class VkStreamBuffer;
|
||||
class VkHardwareDataBuffer;
|
||||
|
|
@ -40,8 +40,8 @@ public:
|
|||
VkFramebufferManager* GetFramebufferManager() { return mFramebufferManager.get(); }
|
||||
VkDescriptorSetManager* GetDescriptorSetManager() { return mDescriptorSetManager.get(); }
|
||||
VkRenderPassManager *GetRenderPassManager() { return mRenderPassManager.get(); }
|
||||
VkRaytrace* GetRaytrace() { return mRaytrace.get(); }
|
||||
VkLightmap* GetLightmap() { return mLightmap.get(); }
|
||||
VkLevelMesh* GetLevelMesh() { return mLevelMesh.get(); }
|
||||
VkLightmapper* GetLightmapper() { return mLightmapper.get(); }
|
||||
VkRenderState *GetRenderState() { return mRenderState.get(); }
|
||||
VkPostprocess *GetPostprocess() { return mPostprocess.get(); }
|
||||
VkRenderBuffers *GetBuffers() { return mActiveRenderBuffers; }
|
||||
|
|
@ -112,8 +112,8 @@ private:
|
|||
std::unique_ptr<VkPostprocess> mPostprocess;
|
||||
std::unique_ptr<VkDescriptorSetManager> mDescriptorSetManager;
|
||||
std::unique_ptr<VkRenderPassManager> mRenderPassManager;
|
||||
std::unique_ptr<VkRaytrace> mRaytrace;
|
||||
std::unique_ptr<VkLightmap> mLightmap;
|
||||
std::unique_ptr<VkLevelMesh> mLevelMesh;
|
||||
std::unique_ptr<VkLightmapper> mLightmapper;
|
||||
std::unique_ptr<VkRenderState> mRenderState;
|
||||
|
||||
VkRenderBuffers *mActiveRenderBuffers = nullptr;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include "vulkan/descriptorsets/vk_descriptorset.h"
|
||||
#include "vulkan/textures/vk_renderbuffers.h"
|
||||
#include "vulkan/textures/vk_hwtexture.h"
|
||||
#include "vulkan/accelstructs/vk_raytrace.h"
|
||||
#include "vulkan/accelstructs/vk_levelmesh.h"
|
||||
#include <zvulkan/vulkanbuilders.h>
|
||||
|
||||
#include "hw_skydome.h"
|
||||
|
|
@ -845,17 +845,17 @@ void VkRenderState::ApplyLevelMesh()
|
|||
ApplyDepthBias();
|
||||
mNeedApply = true;
|
||||
|
||||
VkBuffer vertexBuffers[2] = { fb->GetRaytrace()->GetVertexBuffer()->buffer, fb->GetRaytrace()->GetUniformIndexBuffer()->buffer };
|
||||
VkBuffer vertexBuffers[2] = { fb->GetLevelMesh()->GetVertexBuffer()->buffer, fb->GetLevelMesh()->GetUniformIndexBuffer()->buffer };
|
||||
VkDeviceSize vertexBufferOffsets[] = { 0, 0 };
|
||||
mCommandBuffer->bindVertexBuffers(0, 2, vertexBuffers, vertexBufferOffsets);
|
||||
mCommandBuffer->bindIndexBuffer(fb->GetRaytrace()->GetIndexBuffer()->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
mCommandBuffer->bindIndexBuffer(fb->GetLevelMesh()->GetIndexBuffer()->buffer, 0, VK_INDEX_TYPE_UINT32);
|
||||
}
|
||||
|
||||
void VkRenderState::DrawLevelMeshDepthPass()
|
||||
{
|
||||
ApplyLevelMesh();
|
||||
|
||||
auto submesh = fb->GetRaytrace()->GetMesh()->StaticMesh.get();
|
||||
auto submesh = fb->GetLevelMesh()->GetMesh()->StaticMesh.get();
|
||||
for (LevelSubmeshDrawRange& range : submesh->DrawList)
|
||||
{
|
||||
DrawLevelMeshRange(mCommandBuffer, fb->GetLevelMeshPipelineKey(range.PipelineID), range.Start, range.Count, true);
|
||||
|
|
@ -872,7 +872,7 @@ void VkRenderState::DrawLevelMeshOpaquePass()
|
|||
{
|
||||
ApplyLevelMesh();
|
||||
|
||||
auto submesh = fb->GetRaytrace()->GetMesh()->StaticMesh.get();
|
||||
auto submesh = fb->GetLevelMesh()->GetMesh()->StaticMesh.get();
|
||||
for (LevelSubmeshDrawRange& range : submesh->DrawList)
|
||||
{
|
||||
DrawLevelMeshRange(mCommandBuffer, fb->GetLevelMeshPipelineKey(range.PipelineID), range.Start, range.Count, false);
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@
|
|||
#include "g_levellocals.h"
|
||||
#include "a_dynlight.h"
|
||||
#include "hw_renderstate.h"
|
||||
#include "common/rendering/vulkan/accelstructs/vk_lightmap.h"
|
||||
#include "common/rendering/vulkan/accelstructs/halffloat.h"
|
||||
|
||||
static bool RequireLevelMesh()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@
|
|||
#include "hwrenderer/scene/hw_walldispatcher.h"
|
||||
#include "hwrenderer/scene/hw_flatdispatcher.h"
|
||||
#include "common/rendering/hwrenderer/data/hw_meshbuilder.h"
|
||||
#include "common/rendering/vulkan/accelstructs/vk_lightmap.h"
|
||||
#include "common/rendering/vulkan/accelstructs/halffloat.h"
|
||||
|
||||
VSMatrix GetPlaneTextureRotationMatrix(FGameTexture* gltexture, const sector_t* sector, int plane);
|
||||
void GetTexCoordInfo(FGameTexture* tex, FTexCoordInfo* tci, side_t* side, int texpos);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue