perpare it for VertexColor3D material.
This commit is contained in:
parent
253d113375
commit
6c7f9ea9d1
@ -1 +1 @@
|
||||
Subproject commit a11148b38dd39d25aa6a4493c0028c482c8a5d2b
|
||||
Subproject commit 2c10960ec30766ccafb2612e81cb88a89307c633
|
@ -7,7 +7,7 @@
|
||||
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||
ENDIF()
|
||||
|
||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan/Basic")
|
||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Basic")
|
||||
endmacro()
|
||||
|
||||
CreateProject(01_draw_triangle_in_NDC draw_triangle_in_NDC.cpp)
|
||||
|
@ -4,6 +4,8 @@ SET(VULKAN_APP_FRAMEWORK ${CMAKE_CURRENT_SOURCE_DIR}/common/VulkanAppFramework.h
|
||||
|
||||
add_subdirectory(Basic)
|
||||
add_subdirectory(Texture)
|
||||
add_subdirectory(Gizmo)
|
||||
|
||||
add_subdirectory(Vulkan)
|
||||
add_subdirectory(2dVector)
|
||||
add_subdirectory(GUI)
|
||||
|
13
example/Gizmo/CMakeLists.txt
Normal file
13
example/Gizmo/CMakeLists.txt
Normal file
@ -0,0 +1,13 @@
|
||||
macro(CreateProject name)
|
||||
add_executable(${name} ${ARGN} ${VULKAN_APP_FRAMEWORK})
|
||||
target_link_libraries(${name} ${ULRE})
|
||||
|
||||
IF(MSVC)
|
||||
set_target_properties(${name} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${ULRE_RUNTIME_PATH})
|
||||
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||
ENDIF()
|
||||
|
||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Gizmo")
|
||||
endmacro()
|
||||
|
||||
CreateProject(PlaneGrid3D PlaneGrid3D.cpp)
|
@ -7,7 +7,7 @@
|
||||
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||
ENDIF()
|
||||
|
||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan/Texture")
|
||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Texture")
|
||||
endmacro()
|
||||
|
||||
CreateProject(05_texture_format texture_format_list.cpp)
|
||||
|
@ -8,8 +8,6 @@
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
{
|
||||
Prim prim; ///<图元类型
|
||||
|
||||
CoordinateSystem2D coordinate_system; ///<使用的坐标系
|
||||
|
||||
bool local_to_world; ///<包含LocalToWorld矩阵
|
||||
@ -18,10 +16,8 @@ struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
public:
|
||||
|
||||
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p):MaterialCreateConfig(da,name)
|
||||
Material2DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p):MaterialCreateConfig(da,name,p)
|
||||
{
|
||||
prim=p;
|
||||
|
||||
rt_output.color=1; //输出一个颜色
|
||||
rt_output.depth=false; //不输出深度
|
||||
rt_output.stencil=false; //不输出stencil
|
||||
@ -37,11 +33,6 @@ public:
|
||||
}
|
||||
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
namespace SamplerName
|
||||
{
|
||||
constexpr const char Color[]="TextureColor";
|
||||
}
|
||||
|
||||
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
||||
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
|
||||
MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *);
|
||||
|
33
inc/hgl/graph/mtl/3d/Material3DCreateConfig.h
Normal file
33
inc/hgl/graph/mtl/3d/Material3DCreateConfig.h
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/mtl/MaterialConfig.h>
|
||||
#include<hgl/graph/CoordinateSystem.h>
|
||||
#include<hgl/graph/VertexAttrib.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
struct Material3DCreateConfig:public MaterialCreateConfig
|
||||
{
|
||||
bool local_to_world; ///<包含LocalToWorld矩阵
|
||||
|
||||
VAT position_format; ///<position格式
|
||||
|
||||
public:
|
||||
|
||||
Material3DCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p):MaterialCreateConfig(da,name,p)
|
||||
{
|
||||
rt_output.color=1; //输出一个颜色
|
||||
rt_output.depth=true; //不输出深度
|
||||
rt_output.stencil=false; //不输出stencil
|
||||
|
||||
local_to_world=false;
|
||||
|
||||
position_format=VAT_VEC3;
|
||||
}
|
||||
};//struct Material3DCreateConfig:public MaterialCreateConfig
|
||||
|
||||
//MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
||||
//MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
|
||||
//MaterialCreateInfo *CreatePureTexture2D(const Material2DCreateConfig *);
|
||||
//MaterialCreateInfo *CreateRectTexture2D(Material2DCreateConfig *);
|
||||
//MaterialCreateInfo *CreateRectTexture2DArray(Material2DCreateConfig *);
|
||||
STD_MTL_NAMESPACE_END
|
@ -22,15 +22,19 @@ struct MaterialCreateConfig
|
||||
|
||||
uint32 shader_stage_flag_bit; ///<需要的shader
|
||||
|
||||
Prim prim; ///<图元类型
|
||||
|
||||
public:
|
||||
|
||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name)
|
||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p)
|
||||
{
|
||||
dev_attr=da;
|
||||
|
||||
mtl_name=name;
|
||||
|
||||
shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
|
||||
prim=p;
|
||||
}
|
||||
};//struct MaterialCreateConfig
|
||||
STD_MTL_NAMESPACE_END
|
||||
|
15
inc/hgl/graph/mtl/SamplerName.h
Normal file
15
inc/hgl/graph/mtl/SamplerName.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
namespace mtl
|
||||
{
|
||||
namespace SamplerName
|
||||
{
|
||||
constexpr const char Color[] = "TextureColor";
|
||||
}//namespace SamplerName
|
||||
}//namespace mtl
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
@ -1,6 +1,7 @@
|
||||
#include"Std2DMaterial.h"
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||
#include<hgl/graph/mtl/SamplerName.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
namespace
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||
#include<hgl/graph/mtl/UBOCommon.h>
|
||||
#include<hgl/graph/mtl/SamplerName.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
namespace
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||
#include"common/MFRectPrimitive.h"
|
||||
#include<hgl/graph/mtl/UBOCommon.h>
|
||||
#include<hgl/graph/mtl/SamplerName.h>
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
namespace
|
||||
|
59
src/ShaderGen/3d/Std3DMaterial.cpp
Normal file
59
src/ShaderGen/3d/Std3DMaterial.cpp
Normal file
@ -0,0 +1,59 @@
|
||||
#include"Std3DMaterial.h"
|
||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||
#include<hgl/graph/mtl/3d/Material3DCreateConfig.h>
|
||||
#include<hgl/graph/mtl/UBOCommon.h>
|
||||
#include"common/MFGetPosition.h"
|
||||
#include"common/MFRectPrimitive.h"
|
||||
|
||||
STD_MTL_NAMESPACE_BEGIN
|
||||
Std3DMaterial::Std3DMaterial(const Material3DCreateConfig *c)
|
||||
{
|
||||
mci=new MaterialCreateInfo(c);
|
||||
|
||||
cfg=c;
|
||||
}
|
||||
|
||||
bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc)
|
||||
{
|
||||
vsc->AddInput(cfg->position_format,VAN::Position);
|
||||
|
||||
if(cfg->local_to_world)
|
||||
{
|
||||
mci->SetLocalToWorld(VK_SHADER_STAGE_ALL_GRAPHICS);
|
||||
|
||||
vsc->AddAssign();
|
||||
}
|
||||
|
||||
mci->AddUBO(VK_SHADER_STAGE_VERTEX_BIT,
|
||||
DescriptorSetType::Global,
|
||||
SBS_ViewportInfo);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
MaterialCreateInfo *Std3DMaterial::Create()
|
||||
{
|
||||
if(!BeginCustomShader())
|
||||
return(nullptr);
|
||||
|
||||
if(mci->hasVertex())
|
||||
if(!CustomVertexShader(mci->GetVS()))
|
||||
return(nullptr);
|
||||
|
||||
if(mci->hasGeometry())
|
||||
if(!CustomGeometryShader(mci->GetGS()))
|
||||
return(nullptr);
|
||||
|
||||
if(mci->hasFragment())
|
||||
if(!CustomFragmentShader(mci->GetFS()))
|
||||
return(nullptr);
|
||||
|
||||
if(!EndCustomShader())
|
||||
return(false);
|
||||
|
||||
if(!mci->CreateShader())
|
||||
return(nullptr);
|
||||
|
||||
return(mci);
|
||||
}
|
||||
STD_MTL_NAMESPACE_END
|
47
src/ShaderGen/3d/Std3DMaterial.h
Normal file
47
src/ShaderGen/3d/Std3DMaterial.h
Normal file
@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/mtl/StdMaterial.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace graph
|
||||
{
|
||||
struct GPUDeviceAttribute;
|
||||
|
||||
class ShaderCreateInfoVertex;
|
||||
class ShaderCreateInfoGeometry;
|
||||
class ShaderCreateInfoFragment;
|
||||
|
||||
namespace mtl
|
||||
{
|
||||
class MaterialCreateInfo;
|
||||
struct Material3DCreateConfig;
|
||||
|
||||
class Std3DMaterial
|
||||
{
|
||||
protected:
|
||||
|
||||
const Material3DCreateConfig *cfg;
|
||||
|
||||
MaterialCreateInfo *mci;
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool BeginCustomShader(){return true;/*some work before creating shader*/};
|
||||
|
||||
virtual bool CustomVertexShader(ShaderCreateInfoVertex *);
|
||||
virtual bool CustomGeometryShader(ShaderCreateInfoGeometry *){return false;}
|
||||
virtual bool CustomFragmentShader(ShaderCreateInfoFragment *)=0;
|
||||
|
||||
virtual bool EndCustomShader(){return true;/*some work after creating shader*/};
|
||||
|
||||
public:
|
||||
|
||||
Std3DMaterial(const Material3DCreateConfig *);
|
||||
virtual ~Std3DMaterial()=default;
|
||||
|
||||
virtual MaterialCreateInfo *Create();
|
||||
};//class Std3DMaterial
|
||||
}//namespace mtl
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
@ -37,6 +37,7 @@ SOURCE_GROUP("GLSL Compiler" FILES ${GLSL_COMPILER_SOURCE})
|
||||
set(STD_MTL_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/mtl)
|
||||
|
||||
SET(SHADERGEN_COMMON_FILES ${STD_MTL_HEADER_PATH}/UBOCommon.h
|
||||
${STD_MTL_HEADER_PATH}/SamplerName.h
|
||||
common/MFCommon.h
|
||||
common/MFGetPosition.h)
|
||||
|
||||
@ -56,6 +57,13 @@ SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/Material2DCreateConfig.h
|
||||
2d/M_RectTexture2DArray.cpp
|
||||
)
|
||||
|
||||
SET(STD_MTL_3D_HEADER_PATH ${STD_MTL_HEADER_PATH}/3d)
|
||||
|
||||
SET(STD_MTL_3D_SOURCE_FILES ${STD_MTL_3D_HEADER_PATH}/Material3DCreateConfig.h
|
||||
3d/Std3DMaterial.h
|
||||
3d/Std3DMaterial.cpp
|
||||
)
|
||||
|
||||
SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
||||
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
||||
${STD_MTL_HEADER_PATH}/ShaderBuffer.h
|
||||
@ -63,6 +71,7 @@ SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
||||
|
||||
SOURCE_GROUP("Standard Material" FILES ${STD_MTL_SOURCE})
|
||||
SOURCE_GROUP("Standard Material\\2D" FILES ${STD_MTL_2D_SOURCE_FILES})
|
||||
SOURCE_GROUP("Standard Material\\3D" FILES ${STD_MTL_3D_SOURCE_FILES})
|
||||
|
||||
add_cm_library(ULRE.ShaderGen "ULRE" ${DESC_INFO_HEADER_FILES}
|
||||
${DESC_INFO_SOURCE_FILES}
|
||||
@ -74,4 +83,5 @@ add_cm_library(ULRE.ShaderGen "ULRE" ${DESC_INFO_HEADER_FILES}
|
||||
${SHADERGEN_COMMON_FILES}
|
||||
${STD_MTL_SOURCE}
|
||||
${STD_MTL_2D_SOURCE_FILES}
|
||||
${STD_MTL_3D_SOURCE_FILES}
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user