From 591f0ee6a9dfa021b879ce51a692e5c3c2cfc6a7 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 23 Aug 2024 00:26:42 +0200 Subject: [PATCH] Fix regressions after rendering changes --- Content/Editor/MaterialTemplates/Terrain.shader | 2 ++ Content/Engine/DefaultTerrainMaterial.flax | 4 ++-- .../Particles/Graph/GPU/ParticleEmitterGraph.GPU.Textures.cpp | 4 ++-- .../Tools/MaterialGenerator/MaterialGenerator.Textures.cpp | 4 ++-- Source/Engine/Visject/ShaderGraph.cpp | 2 ++ 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Content/Editor/MaterialTemplates/Terrain.shader b/Content/Editor/MaterialTemplates/Terrain.shader index f7819c863..3c4567321 100644 --- a/Content/Editor/MaterialTemplates/Terrain.shader +++ b/Content/Editor/MaterialTemplates/Terrain.shader @@ -162,6 +162,8 @@ ObjectData GetObject() return object; } +#define LoadObjectFromCB(var) var = GetObject() + MaterialInput GetMaterialInput(PixelInput input) { MaterialInput output = GetGeometryMaterialInput(input.Geometry); diff --git a/Content/Engine/DefaultTerrainMaterial.flax b/Content/Engine/DefaultTerrainMaterial.flax index 96bf55cda..b75d68dcd 100644 --- a/Content/Engine/DefaultTerrainMaterial.flax +++ b/Content/Engine/DefaultTerrainMaterial.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bc64b044a3f7999e020717efd4ef14c5cf6bd2a251ef94b754bec1e3cc5a3da -size 23451 +oid sha256:69b58818698fe9609cee68d29642d75a752db39a1b06508d26994edaa37f0503 +size 23499 diff --git a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Textures.cpp b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Textures.cpp index 01c7017a9..ce7f45712 100644 --- a/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Textures.cpp +++ b/Source/Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.Textures.cpp @@ -311,7 +311,7 @@ void ParticleEmitterGPUGenerator::ProcessGroupTextures(Box* box, Node* node, Val { auto param = findOrAddGlobalSDF(); Value worldPosition = tryGetValue(node->GetBox(1), Value(VariantType::Float3, TEXT("input.WorldPosition.xyz"))).Cast(VariantType::Float3); - Value startCascade = tryGetValue(node->GetBox(2), 0, Value::Zero).Cast(VariantType::Uint); + Value startCascade = tryGetValue(node->TryGetBox(2), 0, Value::Zero).Cast(VariantType::Uint); value = writeLocal(VariantType::Float, String::Format(TEXT("SampleGlobalSDF({0}, {0}_Tex, {0}_Mip, {1}, {2})"), param.ShaderName, worldPosition.Value, startCascade.Value), node); _includes.Add(TEXT("./Flax/GlobalSignDistanceField.hlsl")); break; @@ -323,7 +323,7 @@ void ParticleEmitterGPUGenerator::ProcessGroupTextures(Box* box, Node* node, Val auto distanceBox = node->GetBox(2); auto param = findOrAddGlobalSDF(); Value worldPosition = tryGetValue(node->GetBox(1), Value(VariantType::Float3, TEXT("input.WorldPosition.xyz"))).Cast(VariantType::Float3); - Value startCascade = tryGetValue(node->GetBox(3), 0, Value::Zero).Cast(VariantType::Uint); + Value startCascade = tryGetValue(node->TryGetBox(3), 0, Value::Zero).Cast(VariantType::Uint); auto distance = writeLocal(VariantType::Float, node); auto gradient = writeLocal(VariantType::Float3, String::Format(TEXT("SampleGlobalSDFGradient({0}, {0}_Tex, {0}_Mip, {1}, {2}, {3})"), param.ShaderName, worldPosition.Value, distance.Value, startCascade.Value), node); _includes.Add(TEXT("./Flax/GlobalSignDistanceField.hlsl")); diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp index 15ee6876d..7df348182 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp @@ -665,7 +665,7 @@ void MaterialGenerator::ProcessGroupTextures(Box* box, Node* node, Value& value) { auto param = findOrAddGlobalSDF(); Value worldPosition = tryGetValue(node->GetBox(1), Value(VariantType::Float3, TEXT("input.WorldPosition.xyz"))).Cast(VariantType::Float3); - Value startCascade = tryGetValue(node->GetBox(2), 0, Value::Zero).Cast(VariantType::Uint); + Value startCascade = tryGetValue(node->TryGetBox(2), 0, Value::Zero).Cast(VariantType::Uint); value = writeLocal(VariantType::Float, String::Format(TEXT("SampleGlobalSDF({0}, {0}_Tex, {0}_Mip, {1}, {2})"), param.ShaderName, worldPosition.Value, startCascade.Value), node); _includes.Add(TEXT("./Flax/GlobalSignDistanceField.hlsl")); break; @@ -677,7 +677,7 @@ void MaterialGenerator::ProcessGroupTextures(Box* box, Node* node, Value& value) auto distanceBox = node->GetBox(2); auto param = findOrAddGlobalSDF(); Value worldPosition = tryGetValue(node->GetBox(1), Value(VariantType::Float3, TEXT("input.WorldPosition.xyz"))).Cast(VariantType::Float3); - Value startCascade = tryGetValue(node->GetBox(3), 0, Value::Zero).Cast(VariantType::Uint); + Value startCascade = tryGetValue(node->TryGetBox(3), 0, Value::Zero).Cast(VariantType::Uint); auto distance = writeLocal(VariantType::Float, node); auto gradient = writeLocal(VariantType::Float3, String::Format(TEXT("SampleGlobalSDFGradient({0}, {0}_Tex, {0}_Mip, {1}, {2}, {3})"), param.ShaderName, worldPosition.Value, distance.Value, startCascade.Value), node); _includes.Add(TEXT("./Flax/GlobalSignDistanceField.hlsl")); diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index 886452af6..718e9cba9 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -1049,6 +1049,8 @@ ShaderGenerator::Value ShaderGenerator::eatBox(Node* caller, Box* box) ShaderGenerator::Value ShaderGenerator::tryGetValue(Box* box, int32 defaultValueBoxIndex, const Value& defaultValue) { + if (!box) + return defaultValue; const auto parentNode = box->GetParent(); if (box->HasConnection()) return eatBox(parentNode, box->FirstConnection());