Added RenderBufferName.h,RenderWorkflow.h and few update.

This commit is contained in:
hyzboy 2024-10-30 00:29:20 +08:00
parent 5ba5a331a5
commit 3e88b0b77f
7 changed files with 103 additions and 16 deletions

View File

@ -20,7 +20,7 @@ enum class LightingCullingMode
/**
* Tile的剔除模式的改进型
* Tile方法Tile后Compute Shader遍历Tile内所有象素Tile的最远z值和最近z值
* Tile方法Tile后Tile内所有象素Tile的最远z值和最近z值
* XY与zNear/zFar得出一个VolumeVolume相交性
*/
TileVolume, ///<瓦片体积剔除

View File

@ -0,0 +1,61 @@
#pragma once
#include<hgl/graph/VK.h>
VK_NAMESPACE_BEGIN
const RENDER_BUFFER_NAME RenderBuffer_Swapchain ="Swapchain";
const RENDER_BUFFER_NAME RenderBuffer_Depth ="Depth";
const RENDER_BUFFER_NAME RenderBuffer_Stencil ="Stencil";
const RENDER_BUFFER_NAME VBuffer_MeshID ="VB_MeshID"; ///< 所绘制的Mesh编号, R32UI格式
const RENDER_BUFFER_NAME VBuffer_TriangleID ="VB_TriangleID"; ///< 三角形编号, R8UI格式
const RENDER_BUFFER_NAME VBuffer_MaterialID ="VB_MaterialID"; ///< 材质ID与材质实例ID, RG8UI格式
const RENDER_BUFFER_NAME GBuffer_BaseColor ="GB_BaseColor"; ///<基础颜色(RGB565/RGB5A1/RGBA8/RGB10A2/RG11B10,RGBA16F)
const RENDER_BUFFER_NAME GBuffer_Luminance ="GB_Luminance"; ///<亮度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_CbCr ="GB_CbCr"; ///<色度(RG8/RG16F)
const RENDER_BUFFER_NAME GBuffer_Normal ="GB_Normal"; ///<法线(RG8,RG16F)
const RENDER_BUFFER_NAME GBuffer_BentNormal ="GB_BentNormal"; ///<弯曲法线(RG8,RG16F)
const RENDER_BUFFER_NAME GBuffer_Metallic ="GB_Metallic"; ///<金属度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Roughness ="GB_Roughness"; ///<粗糙度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Specular ="GB_Specular"; ///<高光(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Glossiness ="GB_Glossiness"; ///<光泽度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Reflection ="GB_Reflection"; ///<反射(R8)
const RENDER_BUFFER_NAME GBuffer_Refraction ="GB_Refraction"; ///<折射(R8)
const RENDER_BUFFER_NAME GBuffer_ClearCoat ="GB_ClearCoat"; ///<透明涂层(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_ClearCoatRoughness ="GB_ClearCoatRoughness"; ///<透明涂层粗糙度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_ClearCoatNormal ="GB_ClearCoatNormal"; ///<透明涂层法线(RG8/RG16F)
const RENDER_BUFFER_NAME GBuffer_IOR ="GB_IOR"; ///<折射率(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Tranmission ="GB_Tranmission"; ///<透射率(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Absorption ="GB_Absorption"; ///<吸收率(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_MicroThickness ="GB_MicroThickness"; ///<微厚度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_AmbientOcclusion ="GB_AmbientOcclusion"; ///<环境光遮蔽(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_Anisotropy ="GB_Anisotropy"; ///<各向异性(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_AnisotropyDirection="GB_AnisotropyDirection"; ///<各向异性方向(RG8/RG16F/RG32F)
const RENDER_BUFFER_NAME GBuffer_Emissive ="GB_Emissive"; ///<自发光(RGB565/RGB5A1/RGBA8/RGB10A2/RG11B10,RGBA16F)
const RENDER_BUFFER_NAME GBuffer_SheenColor ="GB_SheenColor"; ///<光泽颜色(RGB565/RGB5A1/RGBA8/RGB10A2/RG11B10,RGBA16F)
const RENDER_BUFFER_NAME GBuffer_SheenRoughness ="GB_SheenRoughness"; ///<光泽粗糙度(R8/R16F/R32F)
const RENDER_BUFFER_NAME GBuffer_SubsurfaceColor ="GB_SubsurfaceColor"; ///<次表面颜色(RGB565/RGB5A1/RGBA8/RGB10A2/RG11B10,RGBA16F)
const RENDER_BUFFER_NAME GBuffer_ShadingModel ="GB_ShadingModel"; ///<着色模型(R4UI/R8UI)
const RENDER_BUFFER_NAME GBuffer_LightingChannels ="GB_LightingChannels"; ///<光照通道(R8UI)
const RENDER_BUFFER_NAME GBuffer_MotionVector ="GB_MotionVector"; ///<运动矢量(RG16F)
const RENDER_BUFFER_NAME GBuffer_LastScreenPosition ="GB_LastScreenPosition"; ///<上一帧屏幕位置(RG16I)
VK_NAMESPACE_END

View File

@ -6,20 +6,6 @@
VK_NAMESPACE_BEGIN
enum class RenderOrder
{
First, ///<最先渲染
NearToFar, ///<从近到远
Irrorder, ///<无序渲染
FarToNear, ///<从远到近
Last, ///<最后渲染
ENUM_CLASS_RANGE(First,Last)
};//enum class RenderOrder
class GraphModule;
/**

View File

@ -0,0 +1,30 @@
#pragma once
#include<hgl/graph/BlendMode.h>
#include<hgl/graph/RenderBufferName.h>
#include<hgl/type/SortedSets.h>
VK_NAMESPACE_BEGIN
enum class RenderOrder
{
First, ///<最先渲染
NearToFar, ///<从近到远
Irrorder, ///<无序渲染
FarToNear, ///<从远到近
Last, ///<最后渲染
ENUM_CLASS_RANGE(First,Last)
};//enum class RenderOrder
struct RenderWorkConfig
{
BlendMode blend_mode;
RenderOrder render_order;
SortedSets<RENDER_BUFFER_NAME> output_buffer;
};//struct RenderWorkConfig;
VK_NAMESPACE_END

View File

@ -4,6 +4,7 @@
#include<hgl/math/Math.h>
#include<hgl/type/String.h>
#include<hgl/type/Map.h>
#include<hgl/type/IDName.h>
#include<hgl/graph/VKNamespace.h>
#include<hgl/graph/VKFormat.h>
#include<hgl/graph/VKPrimitiveType.h>
@ -24,6 +25,10 @@ constexpr size_t VK_DESCRIPTOR_TYPE_END_RANGE=VK_DESCRIPTOR_TYPE_INPUT_ATTACHMEN
constexpr size_t VK_DESCRIPTOR_TYPE_RANGE_SIZE=VK_DESCRIPTOR_TYPE_END_RANGE-VK_DESCRIPTOR_TYPE_BEGIN_RANGE+1;
#endif//VK_DESCRIPTOR_TYPE_RANGE_SIZE
DefineIDName(TEXTURE_NAME,char)
DefineIDName(SHADER_NAME,char)
DefineIDName(RENDER_BUFFER_NAME,char)
class TextureManager;
class GraphModule;

View File

@ -304,6 +304,8 @@ SET(GRAPH_MANAGER_SOURCE manager/GraphManager.cpp
SOURCE_GROUP("Render Framework\\Manager" FILES ${GRAPH_MANAGER_HEADER} ${GRAPH_MANAGER_SOURCE})
SET(RENDER_FRAMEWORK_FILES ${SG_INCLUDE_PATH}/RenderFramework.h
${SG_INCLUDE_PATH}/RenderBufferName.h
${SG_INCLUDE_PATH}/RenderWorkflow.h
RenderFramework.cpp)
SOURCE_GROUP("Render Framework" FILES ${RENDER_FRAMEWORK_FILES})

View File

@ -327,8 +327,11 @@ GPUDevice *VulkanDeviceCreater::CreateRenderDevice()
device_attr->uint32_index_type=true;
}
if(require.blendOperationAdvanced>=VulkanHardwareRequirement::SupportLevel::Want)
if(physical_device->SupportBlendOpAdvanced()
&&require.blendOperationAdvanced>=VulkanHardwareRequirement::SupportLevel::Want)
{
device_attr->blendOpAdvance=true;
}
device_attr->surface_format=surface_format;