From 96819d2dcdb0f3777abd388cdc081743fd2e2a7d Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 30 Jun 2026 08:49:37 +0200 Subject: [PATCH] Fix scene texture node with `WorldPosition` --- .../Tools/MaterialGenerator/MaterialGenerator.Textures.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp index 09ad93cec..e09b1e9ad 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Textures.cpp @@ -475,7 +475,11 @@ void MaterialGenerator::ProcessGroupTextures(Box* box, Node* node, Value& value) uv = MaterialValue::Cast(tryGetValue(uvBox, getUVs), VariantType::Float2).Value; else uv = TEXT("input.TexCoord.xy"); - value = writeLocal(VariantType::Float3, String::Format(TEXT("GetWorldPos({1}, {0}.rgb)"), depthSample->Value, uv), node); + const auto layer = GetRootLayer(); + if (layer && layer->Domain == MaterialDomain::PostProcess) + value = writeLocal(VariantType::Float3, String::Format(TEXT("GetWorldPos({1}, {0})"), depthSample->Value, uv), node); + else // TODO: reimpl GetWorldPos() for other domains (see 'Content/Editor/MaterialTemplates/PostProcess.shader'), can be via matrix inverse in a shader + value = ShaderGraphValue::InitForZero(VariantType::Float3); break; } case MaterialSceneTextures::SceneStencil: