added a standard material that it's VertexColor2DNDC.
This commit is contained in:
parent
d26cae0086
commit
8bf1ad2a46
@ -8,7 +8,7 @@
|
|||||||
#include<hgl/graph/SceneInfo.h>
|
#include<hgl/graph/SceneInfo.h>
|
||||||
#include<hgl/graph/VKVertexInputConfig.h>
|
#include<hgl/graph/VKVertexInputConfig.h>
|
||||||
#include<hgl/graph/VKRenderablePrimitiveCreater.h>
|
#include<hgl/graph/VKRenderablePrimitiveCreater.h>
|
||||||
#include<hgl/shadergen/MaterialCreateInfo.h>
|
#include<hgl/graph/mtl/2d/VertexColor2DNDC.h>
|
||||||
|
|
||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
@ -98,45 +98,11 @@ private:
|
|||||||
|
|
||||||
bool InitAutoMaterial()
|
bool InitAutoMaterial()
|
||||||
{
|
{
|
||||||
MaterialCreateInfo mci("VertexColor2DNDC", ///<名称,随便起
|
auto *mci=mtl::CreateVertexColor2DNDC();
|
||||||
1, ///<最终一个RT输出
|
|
||||||
false); ///<无深度输出
|
|
||||||
|
|
||||||
//vertex部分
|
material_instance=db->CreateMaterialInstance(mci,&vil_config);
|
||||||
{
|
|
||||||
ShaderCreateInfoVertex *vsc=mci.GetVS();
|
|
||||||
|
|
||||||
vsc->AddInput(VAT_VEC2,VAN::Position);
|
delete mci;
|
||||||
vsc->AddInput(VAT_VEC4,VAN::Color);
|
|
||||||
|
|
||||||
vsc->AddOutput(VAT_VEC4,"Color");
|
|
||||||
|
|
||||||
vsc->SetShaderCodes(R"(
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
Output.Color=Color;
|
|
||||||
|
|
||||||
gl_Position=vec4(Position,0,1);
|
|
||||||
})");
|
|
||||||
}
|
|
||||||
|
|
||||||
//fragment部分
|
|
||||||
{
|
|
||||||
ShaderCreateInfoFragment *fsc=mci.GetFS();
|
|
||||||
|
|
||||||
fsc->AddOutput(VAT_VEC4,"Color");
|
|
||||||
|
|
||||||
fsc->SetShaderCodes(R"(
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
Color=Input.Color;
|
|
||||||
})");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!mci.CreateShader())
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
material_instance=db->CreateMaterialInstance(&mci,&vil_config);
|
|
||||||
|
|
||||||
return material_instance;
|
return material_instance;
|
||||||
}
|
}
|
||||||
|
17
inc/hgl/graph/mtl/2d/VertexColor2DNDC.h
Normal file
17
inc/hgl/graph/mtl/2d/VertexColor2DNDC.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#ifndef HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE
|
||||||
|
#define HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
namespace graph
|
||||||
|
{
|
||||||
|
class MaterialCreateInfo;
|
||||||
|
|
||||||
|
namespace mtl
|
||||||
|
{
|
||||||
|
MaterialCreateInfo *CreateVertexColor2DNDC();
|
||||||
|
}//namespace mtl
|
||||||
|
}//namespace graph
|
||||||
|
}//namespace hgl
|
||||||
|
|
||||||
|
#endif//HGL_GRAPH_MTL_2D_VERTEX2DNDC_INCLUDE
|
6
inc/hgl/graph/mtl/StdMaterial.h
Normal file
6
inc/hgl/graph/mtl/StdMaterial.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define STD_MTL_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace mtl{
|
||||||
|
#define STD_MTL_NAMESPACE_END }}}
|
||||||
|
|
||||||
|
#define STD_MTL_NAMESPACE_USING using namespace hgl::graph::mtl
|
@ -1,104 +1,115 @@
|
|||||||
#include<hgl/shadergen/ShaderDescriptorInfo.h>
|
#include<hgl/shadergen/ShaderDescriptorInfo.h>
|
||||||
#include<hgl/CompOperator.h>
|
#include<hgl/CompOperator.h>
|
||||||
|
|
||||||
namespace hgl{namespace graph{
|
namespace hgl{namespace graph
|
||||||
|
|
||||||
using ParamPreciseFlagBits=uint8;
|
|
||||||
using PPFB=ParamPreciseFlagBits;
|
|
||||||
|
|
||||||
constexpr const PPFB PPFB_None =0x00; ///<参数没有出现在任何地方
|
|
||||||
constexpr const PPFB PPFB_Global =0x01; ///<参数出现在全局(使用一个const值处理)
|
|
||||||
constexpr const PPFB PPFB_Vertex =0x02; ///<参数出现在顶点(在vertex shader使用一个顶点值处理)
|
|
||||||
constexpr const PPFB PPFB_Texture =0x04; ///<参数出现在纹理(在fragment shader使用一个纹理处理)
|
|
||||||
|
|
||||||
using TextureComponentFlagBits=uint8;
|
|
||||||
using TCFB=TextureComponentFlagBits;
|
|
||||||
|
|
||||||
constexpr const TCFB TCFB_Luminance =0x01; ///<亮度
|
|
||||||
constexpr const TCFB TCFB_Alpha =0x02; ///<透明度
|
|
||||||
constexpr const TCFB TCFB_Red =0x04; ///<红色
|
|
||||||
constexpr const TCFB TCFB_Green =0x08; ///<绿色
|
|
||||||
constexpr const TCFB TCFB_Blue =0x10; ///<蓝色
|
|
||||||
constexpr const TCFB TCFB_Cb =0x20; ///<Cb
|
|
||||||
constexpr const TCFB TCFB_Cr =0x40; ///<Cr
|
|
||||||
|
|
||||||
//constexpr const TCFB TCFB_NormalX =0x80;
|
|
||||||
//constexpr const TCFB TCFB_NormalY =0x100;
|
|
||||||
//constexpr const TCFB TCFB_NormalZ =0x200;
|
|
||||||
//constexpr const TCFB TCFB_Metallic =0x400;
|
|
||||||
//constexpr const TCFB TCFB_Roughness =0x800;
|
|
||||||
//constexpr const TCFB TCFB_AO =0x1000;
|
|
||||||
//constexpr const TCFB TCFB_Emissive =0x2000;
|
|
||||||
//constexpr const TCFB TCFB_Specular =0x4000;
|
|
||||||
//constexpr const TCFB TCFB_SpecularPower =0x8000;
|
|
||||||
|
|
||||||
constexpr const TCFB TCFB_RGB =TCFB_Red|TCFB_Green|TCFB_Blue;
|
|
||||||
constexpr const TCFB TCFB_RGBA =TCFB_RGB|TCFB_Alpha;
|
|
||||||
constexpr const TCFB TCFB_YCbCr =TCFB_Luminance|TCFB_Cb|TCFB_Cr;
|
|
||||||
constexpr const TCFB TCFB_YCbCrAlpha =TCFB_YCbCr|TCFB_Alpha;
|
|
||||||
constexpr const TCFB TCFB_LumAlpha =TCFB_Luminance|TCFB_Alpha;
|
|
||||||
constexpr const TCFB TCFB_LumRGB =TCFB_Luminance|TCFB_RGB;
|
|
||||||
//constexpr const TCFB TCFB_Normal2C =TCFB_NormalX|TCFB_NormalY;
|
|
||||||
//constexpr const TCFB TCFB_Normal =TCFB_Normal2C|TCFB_NormalZ;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 标准材质,依赖内建的Shader自动生成器
|
|
||||||
*/
|
|
||||||
struct StandardMaterial
|
|
||||||
{
|
{
|
||||||
};//struct StandardMaterial
|
using ParamPreciseFlagBits=uint8;
|
||||||
|
using PPFB=ParamPreciseFlagBits;
|
||||||
|
|
||||||
/**
|
constexpr const PPFB PPFB_None =0x00; ///<参数没有出现在任何地方
|
||||||
* 标准2D材质
|
constexpr const PPFB PPFB_Global =0x01; ///<参数出现在全局(使用一个const值处理)
|
||||||
*/
|
constexpr const PPFB PPFB_Vertex =0x02; ///<参数出现在顶点(在vertex shader使用一个顶点值处理)
|
||||||
struct Standard2DMaterial:public StandardMaterial
|
constexpr const PPFB PPFB_Texture =0x04; ///<参数出现在纹理(在fragment shader使用一个纹理处理)
|
||||||
{
|
|
||||||
union
|
using TextureComponentFlagBits=uint8;
|
||||||
|
using TCFB=TextureComponentFlagBits;
|
||||||
|
|
||||||
|
constexpr const TCFB TCFB_Luminance =0x01; ///<亮度
|
||||||
|
constexpr const TCFB TCFB_Alpha =0x02; ///<透明度
|
||||||
|
constexpr const TCFB TCFB_Red =0x04; ///<红色
|
||||||
|
constexpr const TCFB TCFB_Green =0x08; ///<绿色
|
||||||
|
constexpr const TCFB TCFB_Blue =0x10; ///<蓝色
|
||||||
|
constexpr const TCFB TCFB_Cb =0x20; ///<Cb
|
||||||
|
constexpr const TCFB TCFB_Cr =0x40; ///<Cr
|
||||||
|
|
||||||
|
//constexpr const TCFB TCFB_NormalX =0x80;
|
||||||
|
//constexpr const TCFB TCFB_NormalY =0x100;
|
||||||
|
//constexpr const TCFB TCFB_NormalZ =0x200;
|
||||||
|
//constexpr const TCFB TCFB_Metallic =0x400;
|
||||||
|
//constexpr const TCFB TCFB_Roughness =0x800;
|
||||||
|
//constexpr const TCFB TCFB_AO =0x1000;
|
||||||
|
//constexpr const TCFB TCFB_Emissive =0x2000;
|
||||||
|
//constexpr const TCFB TCFB_Specular =0x4000;
|
||||||
|
//constexpr const TCFB TCFB_SpecularPower =0x8000;
|
||||||
|
|
||||||
|
constexpr const TCFB TCFB_RGB =TCFB_Red|TCFB_Green|TCFB_Blue;
|
||||||
|
constexpr const TCFB TCFB_RGBA =TCFB_RGB|TCFB_Alpha;
|
||||||
|
constexpr const TCFB TCFB_YCbCr =TCFB_Luminance|TCFB_Cb|TCFB_Cr;
|
||||||
|
constexpr const TCFB TCFB_YCbCrAlpha =TCFB_YCbCr|TCFB_Alpha;
|
||||||
|
constexpr const TCFB TCFB_LumAlpha =TCFB_Luminance|TCFB_Alpha;
|
||||||
|
constexpr const TCFB TCFB_LumRGB =TCFB_Luminance|TCFB_RGB;
|
||||||
|
//constexpr const TCFB TCFB_Normal2C =TCFB_NormalX|TCFB_NormalY;
|
||||||
|
//constexpr const TCFB TCFB_Normal =TCFB_Normal2C|TCFB_NormalZ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标准材质,依赖内建的Shader自动生成器
|
||||||
|
*/
|
||||||
|
struct StandardMaterial
|
||||||
{
|
{
|
||||||
struct
|
};//struct StandardMaterial
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标准2D材质
|
||||||
|
*/
|
||||||
|
struct Standard2DMaterial:public StandardMaterial
|
||||||
|
{
|
||||||
|
union
|
||||||
{
|
{
|
||||||
bool z_test :1; ///<是否进行Z测试
|
struct
|
||||||
bool z_write :1; ///<是否写入Z值
|
{
|
||||||
|
bool z_test :1; ///<是否进行Z测试
|
||||||
|
bool z_write :1; ///<是否写入Z值
|
||||||
|
|
||||||
bool ortho_matrix :1; ///<是否使用ortho坐标系
|
bool ortho_matrix :1; ///<是否使用ortho坐标系
|
||||||
bool position_matrix:1; ///<是否包含pos变换矩阵
|
bool position_matrix:1; ///<是否包含pos变换矩阵
|
||||||
bool color_uv :1; ///<是否包含颜色纹理坐标
|
bool color_uv :1; ///<是否包含颜色纹理坐标
|
||||||
bool color_uv_matrix:1; ///<是否包含颜色纹理坐标变换矩阵
|
bool color_uv_matrix:1; ///<是否包含颜色纹理坐标变换矩阵
|
||||||
bool alpha_uv :1; ///<是否包含透明纹理坐标
|
bool alpha_uv :1; ///<是否包含透明纹理坐标
|
||||||
bool alpha_uv_matrix:1; ///<是否包含透明纹理坐标变换矩阵
|
bool alpha_uv_matrix:1; ///<是否包含透明纹理坐标变换矩阵
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8 flags;
|
uint8 flags;
|
||||||
}vert;
|
}vert;
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
{
|
||||||
bool discard:1; ///<是否使用discard
|
struct
|
||||||
bool blur:1; ///<是否模糊
|
{
|
||||||
};
|
bool discard:1; ///<是否使用discard
|
||||||
}frag;
|
bool blur:1; ///<是否模糊
|
||||||
|
};
|
||||||
|
}frag;
|
||||||
|
|
||||||
TCFB color_texture; ///<颜色纹理格式
|
TCFB color_texture; ///<颜色纹理格式
|
||||||
TCFB alpha_texture; ///<透明纹理格式(即便颜色纹理包含Alpha,也有可能存在独立的alpha纹理)
|
TCFB alpha_texture; ///<透明纹理格式(即便颜色纹理包含Alpha,也有可能存在独立的alpha纹理)
|
||||||
|
|
||||||
PPFB color; ///<是否包含颜色缩放系数
|
PPFB color; ///<是否包含颜色缩放系数
|
||||||
PPFB alpha; ///<是否包含alpha缩放系数
|
PPFB alpha; ///<是否包含alpha缩放系数
|
||||||
|
uint8 color_format;
|
||||||
|
|
||||||
PPFB lum; ///<是否包含亮度调整
|
PPFB lum; ///<是否包含亮度调整
|
||||||
PPFB hue; ///<是否包含色调调整
|
PPFB hue; ///<是否包含色调调整
|
||||||
PPFB contrast; ///<是否包含对比度调整
|
PPFB contrast; ///<是否包含对比度调整
|
||||||
|
|
||||||
PPFB outline; ///<是否描边
|
PPFB outline; ///<是否描边
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
CompOperatorMemcmp(const Standard2DMaterial &);
|
CompOperatorMemcmp(const Standard2DMaterial &);
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
|
{
|
||||||
|
hgl_zero(*this);
|
||||||
|
}
|
||||||
|
};//struct Standard2DMaterial:public StandardMaterial
|
||||||
|
|
||||||
|
struct Vertex2DNDCMaterial:public Standard2DMaterial
|
||||||
{
|
{
|
||||||
hgl_zero(*this);
|
Vertex2DNDCMaterial()
|
||||||
}
|
{
|
||||||
};//struct Standard2DMaterial:public StandardMaterial
|
Reset();
|
||||||
|
|
||||||
|
color=PPFB_Vertex;
|
||||||
|
}
|
||||||
|
};
|
||||||
}}//namespace hgl::graph
|
}}//namespace hgl::graph
|
||||||
|
50
src/ShaderGen/2d/VertexColor2DNDC.cpp
Normal file
50
src/ShaderGen/2d/VertexColor2DNDC.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include<hgl/graph/mtl/StdMaterial.h>
|
||||||
|
#include<hgl/graph/VKMaterial.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
|
#include<hgl/shadergen/MaterialCreateInfo.h>
|
||||||
|
|
||||||
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
|
MaterialCreateInfo *CreateVertexColor2DNDC()
|
||||||
|
{
|
||||||
|
MaterialCreateInfo *mci=new MaterialCreateInfo("VertexColor2DNDC", ///<名称,随便起
|
||||||
|
1, ///<最终一个RT输出
|
||||||
|
false); ///<无深度输出
|
||||||
|
|
||||||
|
//vertex部分
|
||||||
|
{
|
||||||
|
ShaderCreateInfoVertex *vsc=mci->GetVS();
|
||||||
|
|
||||||
|
vsc->AddInput(VAT_VEC2,VAN::Position);
|
||||||
|
vsc->AddInput(VAT_VEC4,VAN::Color);
|
||||||
|
|
||||||
|
vsc->AddOutput(VAT_VEC4,"Color");
|
||||||
|
|
||||||
|
vsc->SetShaderCodes(R"(
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
Output.Color=Color;
|
||||||
|
|
||||||
|
gl_Position=vec4(Position,0,1);
|
||||||
|
})");
|
||||||
|
}
|
||||||
|
|
||||||
|
//fragment部分
|
||||||
|
{
|
||||||
|
ShaderCreateInfoFragment *fsc=mci->GetFS();
|
||||||
|
|
||||||
|
fsc->AddOutput(VAT_VEC4,"Color");
|
||||||
|
|
||||||
|
fsc->SetShaderCodes(R"(
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
Color=Input.Color;
|
||||||
|
})");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mci->CreateShader())
|
||||||
|
return mci;
|
||||||
|
|
||||||
|
delete mci;
|
||||||
|
return(nullptr);
|
||||||
|
}
|
||||||
|
STD_MTL_NAMESPACE_END
|
@ -1,6 +1,5 @@
|
|||||||
set(SHADERGEN_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/shadergen)
|
set(SHADERGEN_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/shadergen)
|
||||||
|
|
||||||
|
|
||||||
SET(SHADER_CREATER_HEADER_FILES ${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfo.h
|
SET(SHADER_CREATER_HEADER_FILES ${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfo.h
|
||||||
${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfoMap.h
|
${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfoMap.h
|
||||||
${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfoVertex.h
|
${SHADERGEN_INCLUDE_PATH}/ShaderCreateInfoVertex.h
|
||||||
@ -21,35 +20,40 @@ SET(MATERIAL_CREATE_INFO_SOURCE_FILES MaterialCreateInfo.cpp)
|
|||||||
SOURCE_GROUP("Material Create Info" FILES ${MATERIAL_CREATE_INFO_HEADER_FILES}
|
SOURCE_GROUP("Material Create Info" FILES ${MATERIAL_CREATE_INFO_HEADER_FILES}
|
||||||
${MATERIAL_CREATE_INFO_SOURCE_FILES})
|
${MATERIAL_CREATE_INFO_SOURCE_FILES})
|
||||||
|
|
||||||
SET(SHADERGEN_HEADER_FILES ${SHADERGEN_INCLUDE_PATH}/ShaderDescriptorInfo.h
|
SET(DESC_INFO_HEADER_FILES ${SHADERGEN_INCLUDE_PATH}/ShaderDescriptorInfo.h
|
||||||
${SHADERGEN_INCLUDE_PATH}/MaterialDescriptorInfo.h)
|
${SHADERGEN_INCLUDE_PATH}/MaterialDescriptorInfo.h)
|
||||||
|
|
||||||
SET(SHADERGEN_SOURCE_FILES
|
SET(DESC_INFO_SOURCE_FILES ShaderDescriptorInfo.cpp
|
||||||
#PMC.cpp
|
MaterialDescriptorInfo.cpp)
|
||||||
# VertexPolicy.cpp
|
|
||||||
ShaderDescriptorInfo.cpp
|
SOURCE_GROUP("Material Create Info\\Descriptor Info" FILES ${DESC_INFO_HEADER_FILES}
|
||||||
MaterialDescriptorInfo.cpp
|
${DESC_INFO_SOURCE_FILES})
|
||||||
)
|
|
||||||
|
|
||||||
SET(GLSL_COMPILER_SOURCE GLSLCompiler.h
|
SET(GLSL_COMPILER_SOURCE GLSLCompiler.h
|
||||||
GLSLCompiler.cpp)
|
GLSLCompiler.cpp)
|
||||||
|
|
||||||
SOURCE_GROUP("GLSL Compiler" FILES ${GLSL_COMPILER_SOURCE})
|
SOURCE_GROUP("GLSL Compiler" FILES ${GLSL_COMPILER_SOURCE})
|
||||||
|
|
||||||
SOURCE_GROUP("Material Create Info\\Descriptor Info" FILES ${SHADERGEN_HEADER_FILES}
|
|
||||||
${SHADERGEN_SOURCE_FILES})
|
|
||||||
|
|
||||||
SET(STANDARD_MATERIAL_SOURCE ${SHADERGEN_INCLUDE_PATH}/StandardMaterial.h
|
set(STD_MTL_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/mtl)
|
||||||
StandardMaterial.cpp)
|
|
||||||
|
SET(STD_MTL_2D_HEADER_PATH ${STD_MTL_HEADER_PATH}/2d)
|
||||||
|
|
||||||
|
SET(STD_MTL_2D_SOURCE_FILES ${STD_MTL_2D_HEADER_PATH}/VertexColor2DNDC.h
|
||||||
|
2d/VertexColor2DNDC.cpp)
|
||||||
|
|
||||||
|
SET(STANDARD_MATERIAL_SOURCE ${STD_MTL_HEADER_PATH}/StdMaterial.h)
|
||||||
|
|
||||||
SOURCE_GROUP("Standard Material" FILES ${STANDARD_MATERIAL_SOURCE})
|
SOURCE_GROUP("Standard Material" FILES ${STANDARD_MATERIAL_SOURCE})
|
||||||
|
SOURCE_GROUP("Standard Material\\2D" FILES ${STD_MTL_2D_SOURCE_FILES})
|
||||||
|
|
||||||
add_cm_library(ULRE.ShaderGen "ULRE" ${SHADERGEN_HEADER_FILES}
|
add_cm_library(ULRE.ShaderGen "ULRE" ${DESC_INFO_HEADER_FILES}
|
||||||
${SHADERGEN_SOURCE_FILES}
|
${DESC_INFO_SOURCE_FILES}
|
||||||
${MATERIAL_CREATE_INFO_HEADER_FILES}
|
${MATERIAL_CREATE_INFO_HEADER_FILES}
|
||||||
${MATERIAL_CREATE_INFO_SOURCE_FILES}
|
${MATERIAL_CREATE_INFO_SOURCE_FILES}
|
||||||
${SHADER_CREATER_HEADER_FILES}
|
${SHADER_CREATER_HEADER_FILES}
|
||||||
${SHADER_CREATER_SOURCE_FILES}
|
${SHADER_CREATER_SOURCE_FILES}
|
||||||
${GLSL_COMPILER_SOURCE}
|
${GLSL_COMPILER_SOURCE}
|
||||||
${STANDARD_MATERIAL_SOURCE}
|
${STANDARD_MATERIAL_SOURCE}
|
||||||
|
${STD_MTL_2D_SOURCE_FILES}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user