GLTF PBR Renderer: updated alpha mode shader paramter
assiduous
2 years ago
256 | 256 |
Macros.AddShaderMacro("USE_TEXTURE_ATLAS", m_Settings.UseTextureAtals);
|
257 | 257 |
Macros.AddShaderMacro("PBR_WORKFLOW_METALLIC_ROUGHNESS", GLTF::Material::PBR_WORKFLOW_METALL_ROUGH);
|
258 | 258 |
Macros.AddShaderMacro("PBR_WORKFLOW_SPECULAR_GLOSINESS", GLTF::Material::PBR_WORKFLOW_SPEC_GLOSS);
|
|
259 |
Macros.AddShaderMacro("GLTF_ALPHA_MODE_OPAQUE", GLTF::Material::ALPHA_MODE_OPAQUE);
|
|
260 |
Macros.AddShaderMacro("GLTF_ALPHA_MODE_MASK", GLTF::Material::ALPHA_MODE_MASK);
|
|
261 |
Macros.AddShaderMacro("GLTF_ALPHA_MODE_BLEND", GLTF::Material::ALPHA_MODE_BLEND);
|
259 | 262 |
ShaderCI.Macros = Macros;
|
260 | 263 |
RefCntAutoPtr<IShader> pVS;
|
261 | 264 |
{
|
|
903 | 906 |
for (const auto& primitive : Mesh.Primitives)
|
904 | 907 |
{
|
905 | 908 |
const auto& material = GLTFModel.Materials[primitive.MaterialId];
|
906 | |
if (material.AlphaMode != AlphaMode)
|
|
909 |
if (material.Attribs.AlphaMode != AlphaMode)
|
907 | 910 |
continue;
|
908 | 911 |
|
909 | 912 |
const PSOKey Key{AlphaMode, material.DoubleSided};
|
112 | 112 |
}
|
113 | 113 |
#endif
|
114 | 114 |
|
115 | |
if (g_MaterialInfo.UseAlphaMask != 0 && BaseColor.a < g_MaterialInfo.AlphaMaskCutoff)
|
|
115 |
if (g_MaterialInfo.AlphaMode == GLTF_ALPHA_MODE_MASK && BaseColor.a < g_MaterialInfo.AlphaMaskCutoff)
|
116 | 116 |
{
|
117 | 117 |
discard;
|
118 | 118 |
}
|
18 | 18 |
#ifndef PBR_WORKFLOW_SPECULAR_GLOSINESS
|
19 | 19 |
# define PBR_WORKFLOW_SPECULAR_GLOSINESS 1
|
20 | 20 |
#endif
|
|
21 |
|
|
22 |
|
|
23 |
#ifndef GLTF_ALPHA_MODE_OPAQUE
|
|
24 |
# define GLTF_ALPHA_MODE_OPAQUE 0
|
|
25 |
#endif
|
|
26 |
|
|
27 |
#ifndef GLTF_ALPHA_MODE_MASK
|
|
28 |
# define GLTF_ALPHA_MODE_MASK 1
|
|
29 |
#endif
|
|
30 |
|
|
31 |
#ifndef GLTF_ALPHA_MODE_BLEND
|
|
32 |
# define GLTF_ALPHA_MODE_BLEND 2
|
|
33 |
#endif
|
|
34 |
|
21 | 35 |
|
22 | 36 |
struct GLTFNodeShaderTransforms
|
23 | 37 |
{
|
|
71 | 85 |
float MetallicFactor;
|
72 | 86 |
|
73 | 87 |
float RoughnessFactor;
|
74 | |
int UseAlphaMask;
|
|
88 |
int AlphaMode;
|
75 | 89 |
float AlphaMaskCutoff;
|
76 | 90 |
float Dummy0;
|
77 | 91 |
|
18 | 18 |
"#ifndef PBR_WORKFLOW_SPECULAR_GLOSINESS\n"
|
19 | 19 |
"# define PBR_WORKFLOW_SPECULAR_GLOSINESS 1\n"
|
20 | 20 |
"#endif\n"
|
|
21 |
"\n"
|
|
22 |
"\n"
|
|
23 |
"#ifndef GLTF_ALPHA_MODE_OPAQUE\n"
|
|
24 |
"# define GLTF_ALPHA_MODE_OPAQUE 0\n"
|
|
25 |
"#endif\n"
|
|
26 |
"\n"
|
|
27 |
"#ifndef GLTF_ALPHA_MODE_MASK\n"
|
|
28 |
"# define GLTF_ALPHA_MODE_MASK 1\n"
|
|
29 |
"#endif\n"
|
|
30 |
"\n"
|
|
31 |
"#ifndef GLTF_ALPHA_MODE_BLEND\n"
|
|
32 |
"# define GLTF_ALPHA_MODE_BLEND 2\n"
|
|
33 |
"#endif\n"
|
|
34 |
"\n"
|
21 | 35 |
"\n"
|
22 | 36 |
"struct GLTFNodeShaderTransforms\n"
|
23 | 37 |
"{\n"
|
|
71 | 85 |
" float MetallicFactor;\n"
|
72 | 86 |
"\n"
|
73 | 87 |
" float RoughnessFactor;\n"
|
74 | |
" int UseAlphaMask; \n"
|
|
88 |
" int AlphaMode; \n"
|
75 | 89 |
" float AlphaMaskCutoff;\n"
|
76 | 90 |
" float Dummy0;\n"
|
77 | 91 |
"\n"
|
112 | 112 |
" }\n"
|
113 | 113 |
"#endif\n"
|
114 | 114 |
"\n"
|
115 | |
" if (g_MaterialInfo.UseAlphaMask != 0 && BaseColor.a < g_MaterialInfo.AlphaMaskCutoff)\n"
|
|
115 |
" if (g_MaterialInfo.AlphaMode == GLTF_ALPHA_MODE_MASK && BaseColor.a < g_MaterialInfo.AlphaMaskCutoff)\n"
|
116 | 116 |
" {\n"
|
117 | 117 |
" discard;\n"
|
118 | 118 |
" }\n"
|