Revert Depth Offset (wrong impl, can be done later)
This commit is contained in:
@@ -22,9 +22,6 @@ void PS_GBuffer(
|
|||||||
#if USE_GBUFFER_CUSTOM_DATA
|
#if USE_GBUFFER_CUSTOM_DATA
|
||||||
,out float4 RT3 : SV_Target4
|
,out float4 RT3 : SV_Target4
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
,out float Depth : SV_Depth
|
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -39,11 +36,6 @@ void PS_GBuffer(
|
|||||||
MaterialInput materialInput = GetMaterialInput(input);
|
MaterialInput materialInput = GetMaterialInput(input);
|
||||||
Material material = GetMaterialPS(materialInput);
|
Material material = GetMaterialPS(materialInput);
|
||||||
|
|
||||||
// Depth offset
|
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Masking
|
// Masking
|
||||||
#if MATERIAL_MASKED
|
#if MATERIAL_MASKED
|
||||||
clip(material.Mask - MATERIAL_MASK_THRESHOLD);
|
clip(material.Mask - MATERIAL_MASK_THRESHOLD);
|
||||||
|
|||||||
@@ -36,9 +36,6 @@ META_PS(USE_FORWARD, FEATURE_LEVEL_ES2)
|
|||||||
void PS_Forward(
|
void PS_Forward(
|
||||||
in PixelInput input
|
in PixelInput input
|
||||||
,out float4 output : SV_Target0
|
,out float4 output : SV_Target0
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
,out float Depth : SV_Depth
|
|
||||||
#endif
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
output = 0;
|
output = 0;
|
||||||
@@ -51,11 +48,6 @@ void PS_Forward(
|
|||||||
// Get material parameters
|
// Get material parameters
|
||||||
MaterialInput materialInput = GetMaterialInput(input);
|
MaterialInput materialInput = GetMaterialInput(input);
|
||||||
Material material = GetMaterialPS(materialInput);
|
Material material = GetMaterialPS(materialInput);
|
||||||
|
|
||||||
// Depth offset
|
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Masking
|
// Masking
|
||||||
#if MATERIAL_MASKED
|
#if MATERIAL_MASKED
|
||||||
|
|||||||
@@ -587,18 +587,14 @@ void ClipLODTransition(PixelInput input)
|
|||||||
|
|
||||||
// Pixel Shader function for Depth Pass
|
// Pixel Shader function for Depth Pass
|
||||||
META_PS(true, FEATURE_LEVEL_ES2)
|
META_PS(true, FEATURE_LEVEL_ES2)
|
||||||
void PS_Depth(PixelInput input
|
void PS_Depth(PixelInput input)
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
,out float Depth : SV_Depth
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
#if USE_DITHERED_LOD_TRANSITION
|
#if USE_DITHERED_LOD_TRANSITION
|
||||||
// LOD masking
|
// LOD masking
|
||||||
ClipLODTransition(input);
|
ClipLODTransition(input);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MATERIAL_MASKED || MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE || USE_DEPTH_OFFSET
|
#if MATERIAL_MASKED || MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE
|
||||||
// Get material parameters
|
// Get material parameters
|
||||||
MaterialInput materialInput = GetMaterialInput(input);
|
MaterialInput materialInput = GetMaterialInput(input);
|
||||||
Material material = GetMaterialPS(materialInput);
|
Material material = GetMaterialPS(materialInput);
|
||||||
@@ -610,11 +606,6 @@ void PS_Depth(PixelInput input
|
|||||||
#if MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE
|
#if MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE
|
||||||
clip(material.Opacity - MATERIAL_OPACITY_THRESHOLD);
|
clip(material.Opacity - MATERIAL_OPACITY_THRESHOLD);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Depth offset
|
|
||||||
#if USE_DEPTH_OFFSET
|
|
||||||
Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset);
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
TessellationMultiplier = 12,
|
TessellationMultiplier = 12,
|
||||||
WorldDisplacement = 13,
|
WorldDisplacement = 13,
|
||||||
SubsurfaceColor = 14,
|
SubsurfaceColor = 14,
|
||||||
DepthOffset = 15,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@@ -86,7 +85,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +116,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = withTess;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = withTess;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = withTess;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = withTess;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = info.ShadingModel == MaterialShadingModel.Subsurface || info.ShadingModel == MaterialShadingModel.Foliage;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = info.ShadingModel == MaterialShadingModel.Subsurface || info.ShadingModel == MaterialShadingModel.Foliage;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MaterialDomain.PostProcess:
|
case MaterialDomain.PostProcess:
|
||||||
@@ -137,7 +134,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MaterialDomain.Decal:
|
case MaterialDomain.Decal:
|
||||||
@@ -158,7 +154,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MaterialDomain.GUI:
|
case MaterialDomain.GUI:
|
||||||
@@ -177,7 +172,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MaterialDomain.VolumeParticle:
|
case MaterialDomain.VolumeParticle:
|
||||||
@@ -196,7 +190,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false;
|
||||||
GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: throw new ArgumentOutOfRangeException();
|
default: throw new ArgumentOutOfRangeException();
|
||||||
@@ -288,7 +281,7 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
Title = "Material",
|
Title = "Material",
|
||||||
Description = "Main material node",
|
Description = "Main material node",
|
||||||
Flags = NodeFlags.MaterialGraph | NodeFlags.NoRemove | NodeFlags.NoSpawnViaGUI | NodeFlags.NoSpawnViaPaste | NodeFlags.NoCloseButton,
|
Flags = NodeFlags.MaterialGraph | NodeFlags.NoRemove | NodeFlags.NoSpawnViaGUI | NodeFlags.NoSpawnViaPaste | NodeFlags.NoCloseButton,
|
||||||
Size = new Float2(150, 320),
|
Size = new Float2(150, 300),
|
||||||
Elements = new[]
|
Elements = new[]
|
||||||
{
|
{
|
||||||
NodeElementArchetype.Factory.Input(0, "", true, typeof(void), 0),
|
NodeElementArchetype.Factory.Input(0, "", true, typeof(void), 0),
|
||||||
@@ -306,7 +299,6 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
NodeElementArchetype.Factory.Input(12, "Tessellation Multiplier", true, typeof(float), 12),
|
NodeElementArchetype.Factory.Input(12, "Tessellation Multiplier", true, typeof(float), 12),
|
||||||
NodeElementArchetype.Factory.Input(13, "World Displacement", true, typeof(Float3), 13),
|
NodeElementArchetype.Factory.Input(13, "World Displacement", true, typeof(Float3), 13),
|
||||||
NodeElementArchetype.Factory.Input(14, "Subsurface Color", true, typeof(Float3), 14),
|
NodeElementArchetype.Factory.Input(14, "Subsurface Color", true, typeof(Float3), 14),
|
||||||
NodeElementArchetype.Factory.Input(15, "Depth Offset", true, typeof(float), 15),
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new NodeArchetype
|
new NodeArchetype
|
||||||
|
|||||||
@@ -426,9 +426,6 @@ void Material::InitCompilationOptions(ShaderCompilationOptions& options)
|
|||||||
info.BlendMode != MaterialBlendMode::Opaque &&
|
info.BlendMode != MaterialBlendMode::Opaque &&
|
||||||
EnumHasAnyFlags(info.UsageFlags, MaterialUsageFlags::UseRefraction) &&
|
EnumHasAnyFlags(info.UsageFlags, MaterialUsageFlags::UseRefraction) &&
|
||||||
(info.FeaturesFlags & MaterialFeaturesFlags::DisableDistortion) == MaterialFeaturesFlags::None;
|
(info.FeaturesFlags & MaterialFeaturesFlags::DisableDistortion) == MaterialFeaturesFlags::None;
|
||||||
const bool useDepthOffset =
|
|
||||||
(info.Domain == MaterialDomain::Surface) &&
|
|
||||||
EnumHasAnyFlags(info.UsageFlags, MaterialUsageFlags::UseDepthOffset);
|
|
||||||
|
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
static const char* Numbers[] =
|
static const char* Numbers[] =
|
||||||
@@ -499,7 +496,6 @@ void Material::InitCompilationOptions(ShaderCompilationOptions& options)
|
|||||||
options.Macros.Add({ "USE_FORWARD", Numbers[useForward ? 1 : 0] });
|
options.Macros.Add({ "USE_FORWARD", Numbers[useForward ? 1 : 0] });
|
||||||
options.Macros.Add({ "USE_DEFERRED", Numbers[isSurfaceOrTerrainOrDeformable && info.BlendMode == MaterialBlendMode::Opaque ? 1 : 0] });
|
options.Macros.Add({ "USE_DEFERRED", Numbers[isSurfaceOrTerrainOrDeformable && info.BlendMode == MaterialBlendMode::Opaque ? 1 : 0] });
|
||||||
options.Macros.Add({ "USE_DISTORTION", Numbers[useDistortion ? 1 : 0] });
|
options.Macros.Add({ "USE_DISTORTION", Numbers[useDistortion ? 1 : 0] });
|
||||||
options.Macros.Add({ "USE_DEPTH_OFFSET", Numbers[useDepthOffset ? 1 : 0] });
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -330,11 +330,6 @@ API_ENUM(Attributes="Flags") enum class MaterialUsageFlags : uint32
|
|||||||
/// The flag used to indicate that material uses refraction feature.
|
/// The flag used to indicate that material uses refraction feature.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
UseRefraction = 1 << 6,
|
UseRefraction = 1 << 6,
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The flag used to indicate that material uses per-pixel depth offset feature.
|
|
||||||
/// </summary>
|
|
||||||
UseDepthOffset = 1 << 7,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ENUM_OPERATORS(MaterialUsageFlags);
|
DECLARE_ENUM_OPERATORS(MaterialUsageFlags);
|
||||||
|
|||||||
@@ -27,12 +27,11 @@ MaterialGenerator::MaterialGraphBoxesMapping MaterialGenerator::MaterialGraphBox
|
|||||||
{ 12, TEXT("TessellationMultiplier"), MaterialTreeType::VertexShader, MaterialValue(VariantType::Float, TEXT("4.0f")) },
|
{ 12, TEXT("TessellationMultiplier"), MaterialTreeType::VertexShader, MaterialValue(VariantType::Float, TEXT("4.0f")) },
|
||||||
{ 13, TEXT("WorldDisplacement"), MaterialTreeType::DomainShader, MaterialValue::InitForZero(VariantType::Float3) },
|
{ 13, TEXT("WorldDisplacement"), MaterialTreeType::DomainShader, MaterialValue::InitForZero(VariantType::Float3) },
|
||||||
{ 14, TEXT("SubsurfaceColor"), MaterialTreeType::PixelShader, MaterialValue::InitForZero(VariantType::Float3) },
|
{ 14, TEXT("SubsurfaceColor"), MaterialTreeType::PixelShader, MaterialValue::InitForZero(VariantType::Float3) },
|
||||||
{ 15, TEXT("DepthOffset"), MaterialTreeType::PixelShader, MaterialValue::InitForZero(VariantType::Float) },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const MaterialGenerator::MaterialGraphBoxesMapping& MaterialGenerator::GetMaterialRootNodeBox(MaterialGraphBoxes box)
|
const MaterialGenerator::MaterialGraphBoxesMapping& MaterialGenerator::GetMaterialRootNodeBox(MaterialGraphBoxes box)
|
||||||
{
|
{
|
||||||
static_assert(ARRAY_COUNT(MaterialGenerator::MaterialGraphBoxesMappings) == 16, "Invalid amount of boxes added for root node. Please update the code above");
|
static_assert(ARRAY_COUNT(MaterialGenerator::MaterialGraphBoxesMappings) == 15, "Invalid amount of boxes added for root node. Please update the code above");
|
||||||
return MaterialGraphBoxesMappings[static_cast<int32>(box)];
|
return MaterialGraphBoxesMappings[static_cast<int32>(box)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
|||||||
EAT_BOX(AmbientOcclusion);
|
EAT_BOX(AmbientOcclusion);
|
||||||
EAT_BOX(Opacity);
|
EAT_BOX(Opacity);
|
||||||
EAT_BOX(Refraction);
|
EAT_BOX(Refraction);
|
||||||
EAT_BOX(DepthOffset);
|
|
||||||
EAT_BOX(Mask);
|
EAT_BOX(Mask);
|
||||||
EAT_BOX(Emissive);
|
EAT_BOX(Emissive);
|
||||||
EAT_BOX(SubsurfaceColor);
|
EAT_BOX(SubsurfaceColor);
|
||||||
@@ -205,7 +204,6 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
|||||||
EAT_BOX(AmbientOcclusion);
|
EAT_BOX(AmbientOcclusion);
|
||||||
EAT_BOX(Opacity);
|
EAT_BOX(Opacity);
|
||||||
EAT_BOX(Refraction);
|
EAT_BOX(Refraction);
|
||||||
EAT_BOX(DepthOffset);
|
|
||||||
EAT_BOX(Mask);
|
EAT_BOX(Mask);
|
||||||
EAT_BOX(Emissive);
|
EAT_BOX(Emissive);
|
||||||
EAT_BOX(SubsurfaceColor);
|
EAT_BOX(SubsurfaceColor);
|
||||||
@@ -248,7 +246,6 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
|||||||
EAT_BOX(AmbientOcclusion);
|
EAT_BOX(AmbientOcclusion);
|
||||||
EAT_BOX(Opacity);
|
EAT_BOX(Opacity);
|
||||||
EAT_BOX(Refraction);
|
EAT_BOX(Refraction);
|
||||||
EAT_BOX(DepthOffset);
|
|
||||||
EAT_BOX(Mask);
|
EAT_BOX(Mask);
|
||||||
EAT_BOX(Emissive);
|
EAT_BOX(Emissive);
|
||||||
|
|
||||||
@@ -256,7 +253,6 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
|||||||
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
||||||
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
||||||
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
||||||
CHECK_MATERIAL_FEATURE(DepthOffset, UseDepthOffset);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -336,7 +332,6 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
|||||||
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
||||||
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
||||||
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
||||||
CHECK_MATERIAL_FEATURE(DepthOffset, UseDepthOffset);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,7 +256,6 @@ bool MaterialGenerator::Generate(WriteStream& source, MaterialInfo& materialInfo
|
|||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Roughness);
|
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Roughness);
|
||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Opacity);
|
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Opacity);
|
||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Refraction);
|
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Refraction);
|
||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::DepthOffset);
|
|
||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::SubsurfaceColor);
|
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::SubsurfaceColor);
|
||||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Mask);
|
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Mask);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,11 +89,6 @@ enum class MaterialGraphBoxes
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
SubsurfaceColor = 14,
|
SubsurfaceColor = 14,
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The custom depth offset applied per-pixel.
|
|
||||||
/// </summary>
|
|
||||||
DepthOffset = 15,
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The amount of input boxes.
|
/// The amount of input boxes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -129,7 +129,6 @@ void MaterialLayer::UpdateFeaturesFlags()
|
|||||||
CHECK_BOX_AS_FEATURE(PositionOffset, UsePositionOffset);
|
CHECK_BOX_AS_FEATURE(PositionOffset, UsePositionOffset);
|
||||||
CHECK_BOX_AS_FEATURE(WorldDisplacement, UseDisplacement);
|
CHECK_BOX_AS_FEATURE(WorldDisplacement, UseDisplacement);
|
||||||
CHECK_BOX_AS_FEATURE(Refraction, UseRefraction);
|
CHECK_BOX_AS_FEATURE(Refraction, UseRefraction);
|
||||||
CHECK_BOX_AS_FEATURE(DepthOffset, UseDepthOffset);
|
|
||||||
#undef CHECK_BOX_AS_FEATURE
|
#undef CHECK_BOX_AS_FEATURE
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,17 +170,16 @@ MaterialLayer* MaterialLayer::Load(const Guid& id, ReadStream* graphData, const
|
|||||||
LOG(Warning, "Missing root node in '{0}'.", caller);
|
LOG(Warning, "Missing root node in '{0}'.", caller);
|
||||||
layer->createRootNode();
|
layer->createRootNode();
|
||||||
}
|
}
|
||||||
// Ensure to have valid root node
|
// Ensure to have valid root node
|
||||||
else if (layer->Root->Boxes.Count() != static_cast<int32>(MaterialGraphBoxes::MAX))
|
else if (layer->Root->Boxes.Count() < static_cast<int32>(MaterialGraphBoxes::MAX))
|
||||||
{
|
{
|
||||||
#define ADD_BOX(type, valueType) \
|
#define ADD_BOX(type, valueType) \
|
||||||
if(layer->Root->Boxes.Count() <= static_cast<int32>(MaterialGraphBoxes::type)) \
|
if (layer->Root->Boxes.Count() <= static_cast<int32>(MaterialGraphBoxes::type)) \
|
||||||
layer->Root->Boxes.Add(MaterialGraphBox(layer->Root, static_cast<int32>(MaterialGraphBoxes::type), VariantType::valueType))
|
layer->Root->Boxes.Add(MaterialGraphBox(layer->Root, static_cast<int32>(MaterialGraphBoxes::type), VariantType::valueType))
|
||||||
ADD_BOX(TessellationMultiplier, Float);
|
ADD_BOX(TessellationMultiplier, Float);
|
||||||
ADD_BOX(WorldDisplacement, Float3);
|
ADD_BOX(WorldDisplacement, Float3);
|
||||||
ADD_BOX(SubsurfaceColor, Float3);
|
ADD_BOX(SubsurfaceColor, Float3);
|
||||||
ADD_BOX(DepthOffset, Float);
|
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes added for root node. Please update the code above");
|
||||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes added for root node. Please update the code above");
|
|
||||||
ASSERT(layer->Root->Boxes.Count() == static_cast<int32>(MaterialGraphBoxes::MAX));
|
ASSERT(layer->Root->Boxes.Count() == static_cast<int32>(MaterialGraphBoxes::MAX));
|
||||||
#if BUILD_DEBUG
|
#if BUILD_DEBUG
|
||||||
// Test for valid pointers after node upgrade
|
// Test for valid pointers after node upgrade
|
||||||
@@ -227,12 +225,11 @@ void MaterialLayer::createRootNode()
|
|||||||
INIT_BOX(Normal, Float3);
|
INIT_BOX(Normal, Float3);
|
||||||
INIT_BOX(Opacity, Float);
|
INIT_BOX(Opacity, Float);
|
||||||
INIT_BOX(Refraction, Float);
|
INIT_BOX(Refraction, Float);
|
||||||
INIT_BOX(DepthOffset, Float);
|
|
||||||
INIT_BOX(PositionOffset, Float3);
|
INIT_BOX(PositionOffset, Float3);
|
||||||
INIT_BOX(TessellationMultiplier, Float);
|
INIT_BOX(TessellationMultiplier, Float);
|
||||||
INIT_BOX(WorldDisplacement, Float3);
|
INIT_BOX(WorldDisplacement, Float3);
|
||||||
INIT_BOX(SubsurfaceColor, Float3);
|
INIT_BOX(SubsurfaceColor, Float3);
|
||||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes created for root node. Please update the code above");
|
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes created for root node. Please update the code above");
|
||||||
#undef INIT_BOX
|
#undef INIT_BOX
|
||||||
|
|
||||||
// Mark as root
|
// Mark as root
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ struct Material
|
|||||||
float3 WorldDisplacement;
|
float3 WorldDisplacement;
|
||||||
float Mask;
|
float Mask;
|
||||||
float TessellationMultiplier;
|
float TessellationMultiplier;
|
||||||
float DepthOffset;
|
|
||||||
#if USE_CUSTOM_VERTEX_INTERPOLATORS
|
#if USE_CUSTOM_VERTEX_INTERPOLATORS
|
||||||
float4 CustomVSToPS[CUSTOM_VERTEX_INTERPOLATORS_COUNT];
|
float4 CustomVSToPS[CUSTOM_VERTEX_INTERPOLATORS_COUNT];
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user