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

This commit is contained in:
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得出一个Volume计算所有光源与Volume相交性。
*/
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;