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")
|
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan/Basic")
|
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Basic")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
CreateProject(01_draw_triangle_in_NDC draw_triangle_in_NDC.cpp)
|
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(Basic)
|
||||||
add_subdirectory(Texture)
|
add_subdirectory(Texture)
|
||||||
|
add_subdirectory(Gizmo)
|
||||||
|
|
||||||
add_subdirectory(Vulkan)
|
add_subdirectory(Vulkan)
|
||||||
add_subdirectory(2dVector)
|
add_subdirectory(2dVector)
|
||||||
add_subdirectory(GUI)
|
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")
|
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan/Texture")
|
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Texture")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
CreateProject(05_texture_format texture_format_list.cpp)
|
CreateProject(05_texture_format texture_format_list.cpp)
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
struct Material2DCreateConfig:public MaterialCreateConfig
|
struct Material2DCreateConfig:public MaterialCreateConfig
|
||||||
{
|
{
|
||||||
Prim prim; ///<图元类型
|
|
||||||
|
|
||||||
CoordinateSystem2D coordinate_system; ///<使用的坐标系
|
CoordinateSystem2D coordinate_system; ///<使用的坐标系
|
||||||
|
|
||||||
bool local_to_world; ///<包含LocalToWorld矩阵
|
bool local_to_world; ///<包含LocalToWorld矩阵
|
||||||
@ -18,10 +16,8 @@ struct Material2DCreateConfig:public MaterialCreateConfig
|
|||||||
|
|
||||||
public:
|
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.color=1; //输出一个颜色
|
||||||
rt_output.depth=false; //不输出深度
|
rt_output.depth=false; //不输出深度
|
||||||
rt_output.stencil=false; //不输出stencil
|
rt_output.stencil=false; //不输出stencil
|
||||||
@ -37,11 +33,6 @@ public:
|
|||||||
}
|
}
|
||||||
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
};//struct Material2DCreateConfig:public MaterialCreateConfig
|
||||||
|
|
||||||
namespace SamplerName
|
|
||||||
{
|
|
||||||
constexpr const char Color[]="TextureColor";
|
|
||||||
}
|
|
||||||
|
|
||||||
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
MaterialCreateInfo *CreateVertexColor2D(const Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
|
MaterialCreateInfo *CreatePureColor2D(const Material2DCreateConfig *);
|
||||||
MaterialCreateInfo *CreatePureTexture2D(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
|
uint32 shader_stage_flag_bit; ///<需要的shader
|
||||||
|
|
||||||
|
Prim prim; ///<图元类型
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name)
|
MaterialCreateConfig(const GPUDeviceAttribute *da,const AnsiString &name,const Prim &p)
|
||||||
{
|
{
|
||||||
dev_attr=da;
|
dev_attr=da;
|
||||||
|
|
||||||
mtl_name=name;
|
mtl_name=name;
|
||||||
|
|
||||||
shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT;
|
shader_stage_flag_bit=VK_SHADER_STAGE_VERTEX_BIT|VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||||
|
|
||||||
|
prim=p;
|
||||||
}
|
}
|
||||||
};//struct MaterialCreateConfig
|
};//struct MaterialCreateConfig
|
||||||
STD_MTL_NAMESPACE_END
|
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"Std2DMaterial.h"
|
||||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||||
|
#include<hgl/graph/mtl/SamplerName.h>
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
namespace
|
namespace
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||||
#include<hgl/graph/mtl/UBOCommon.h>
|
#include<hgl/graph/mtl/UBOCommon.h>
|
||||||
|
#include<hgl/graph/mtl/SamplerName.h>
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
namespace
|
namespace
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
#include<hgl/graph/mtl/2d/Material2DCreateConfig.h>
|
||||||
#include"common/MFRectPrimitive.h"
|
#include"common/MFRectPrimitive.h"
|
||||||
#include<hgl/graph/mtl/UBOCommon.h>
|
#include<hgl/graph/mtl/UBOCommon.h>
|
||||||
|
#include<hgl/graph/mtl/SamplerName.h>
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
namespace
|
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(STD_MTL_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/mtl)
|
||||||
|
|
||||||
SET(SHADERGEN_COMMON_FILES ${STD_MTL_HEADER_PATH}/UBOCommon.h
|
SET(SHADERGEN_COMMON_FILES ${STD_MTL_HEADER_PATH}/UBOCommon.h
|
||||||
|
${STD_MTL_HEADER_PATH}/SamplerName.h
|
||||||
common/MFCommon.h
|
common/MFCommon.h
|
||||||
common/MFGetPosition.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
|
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
|
SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h
|
||||||
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
${STD_MTL_HEADER_PATH}/StdMaterial.h
|
||||||
${STD_MTL_HEADER_PATH}/ShaderBuffer.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" FILES ${STD_MTL_SOURCE})
|
||||||
SOURCE_GROUP("Standard Material\\2D" FILES ${STD_MTL_2D_SOURCE_FILES})
|
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}
|
add_cm_library(ULRE.ShaderGen "ULRE" ${DESC_INFO_HEADER_FILES}
|
||||||
${DESC_INFO_SOURCE_FILES}
|
${DESC_INFO_SOURCE_FILES}
|
||||||
@ -74,4 +83,5 @@ add_cm_library(ULRE.ShaderGen "ULRE" ${DESC_INFO_HEADER_FILES}
|
|||||||
${SHADERGEN_COMMON_FILES}
|
${SHADERGEN_COMMON_FILES}
|
||||||
${STD_MTL_SOURCE}
|
${STD_MTL_SOURCE}
|
||||||
${STD_MTL_2D_SOURCE_FILES}
|
${STD_MTL_2D_SOURCE_FILES}
|
||||||
|
${STD_MTL_3D_SOURCE_FILES}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user