From 37f205f6640df6e112e8296d233290d5d06bcf34 Mon Sep 17 00:00:00 2001 From: apistol78 Date: Mon, 10 Jun 2024 15:24:07 +0200 Subject: [PATCH] Traktor: Able to specify sky parameters (clouds enable, colors etc). --- code/Weather/Sky/SkyComponent.cpp | 276 ++++++----- code/Weather/Sky/SkyComponent.h | 8 +- code/Weather/Sky/SkyComponentData.cpp | 17 +- code/Weather/Sky/SkyComponentData.h | 8 +- .../System/Terrain/Ocean/Shaders/Ocean.xdi | 463 +++++++++--------- .../Source/System/Weather/Sky/Modules/Sky.xdi | 16 +- .../Source/System/Weather/Sky/Shaders/Sky.xdi | 245 ++++++--- 7 files changed, 600 insertions(+), 433 deletions(-) diff --git a/code/Weather/Sky/SkyComponent.cpp b/code/Weather/Sky/SkyComponent.cpp index 0197e0041..c76d96d23 100644 --- a/code/Weather/Sky/SkyComponent.cpp +++ b/code/Weather/Sky/SkyComponent.cpp @@ -34,6 +34,8 @@ const resource::Id< render::Shader > c_shaderClouds2D(Guid(L"{9F52BE0A-0C1A-4928 const resource::Id< render::Shader > c_shaderClouds3D(Guid(L"{EF88CE37-0917-4402-B2D1-6E3F2D3CCCCF}")); const resource::Id< render::Shader > c_shaderCloudsDome(Guid(L"{151F822B-B85F-6349-B536-7663C95C43B8}")); +const render::Handle c_handleWeather_CloudsEnable(L"Weather_CloudsEnable"); + const render::Handle s_handleWeather_SkyRadius(L"Weather_SkyRadius"); const render::Handle s_handleWeather_SkyRotation(L"Weather_SkyRotation"); const render::Handle s_handleWeather_SkyTexture(L"Weather_SkyTexture"); @@ -43,6 +45,8 @@ const render::Handle s_handleWeather_SkyCloudBlend(L"Weather_SkyCloudBlend"); const render::Handle s_handleWeather_SkyIntensity(L"Weather_SkyIntensity"); const render::Handle s_handleWeather_SkySunDirection(L"Weather_SkySunDirection"); const render::Handle s_handleWeather_SkySunColor(L"Weather_SkySunColor"); +const render::Handle s_handleWeather_SkyOverHorizon(L"Weather_SkyOverHorizon"); +const render::Handle s_handleWeather_SkyUnderHorizon(L"Weather_SkyUnderHorizon"); const render::Handle s_handleWeather_SkyEyePosition(L"Weather_SkyEyePosition"); const render::Handle s_handleWeather_SkyCloudTexture(L"Weather_SkyCloudTexture"); const render::Handle s_handleWeather_SkyCloudTextureLast(L"Weather_SkyCloudTextureLast"); @@ -63,12 +67,18 @@ T_IMPLEMENT_RTTI_CLASS(L"traktor.weather.SkyComponent", SkyComponent, world::IEn SkyComponent::SkyComponent( const resource::Proxy< render::Shader >& shader, const resource::Proxy< render::ITexture >& texture, - float intensity + float intensity, + bool clouds, + const Color4f& overHorizon, + const Color4f& underHorizon ) : m_shader(shader) , m_texture(texture) , m_transform(Transform::identity()) , m_intensity(intensity) +, m_clouds(clouds) +, m_overHorizon(overHorizon) +, m_underHorizon(underHorizon) { } @@ -139,41 +149,44 @@ bool SkyComponent::create(resource::IResourceManager* resourceManager, render::I c_vertexCount - 1 ); - render::SimpleTextureCreateDesc stcd = {}; - render::VolumeTextureCreateDesc vtcd = {}; - - stcd.width = 512; - stcd.height = 512; - stcd.mipCount = 1; - stcd.format = render::TfR32G32B32A32F; - stcd.shaderStorage = true; - m_cloudTextures[0] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); - - vtcd.width = 64; - vtcd.height = 64; - vtcd.depth = 64; - vtcd.mipCount = 1; - vtcd.format = render::TfR32F; - vtcd.shaderStorage = true; - m_cloudTextures[1] = renderSystem->createVolumeTexture(vtcd, T_FILE_LINE_W); - - stcd.width = 1024; - stcd.height = 256; - stcd.mipCount = 1; - stcd.format = render::TfR32G32B32A32F; - stcd.shaderStorage = true; - m_cloudDomeTexture[0] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); - m_cloudDomeTexture[1] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); - - if (!m_cloudTextures[0] || !m_cloudTextures[1] || !m_cloudDomeTexture[0] || !m_cloudDomeTexture[1]) - return false; - - if (!resourceManager->bind(c_shaderClouds2D, m_shaderClouds2D)) - return false; - if (!resourceManager->bind(c_shaderClouds3D, m_shaderClouds3D)) - return false; - if (!resourceManager->bind(c_shaderCloudsDome, m_shaderCloudsDome)) - return false; + if (m_clouds) + { + render::SimpleTextureCreateDesc stcd = {}; + render::VolumeTextureCreateDesc vtcd = {}; + + stcd.width = 512; + stcd.height = 512; + stcd.mipCount = 1; + stcd.format = render::TfR32G32B32A32F; + stcd.shaderStorage = true; + m_cloudTextures[0] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); + + vtcd.width = 64; + vtcd.height = 64; + vtcd.depth = 64; + vtcd.mipCount = 1; + vtcd.format = render::TfR32F; + vtcd.shaderStorage = true; + m_cloudTextures[1] = renderSystem->createVolumeTexture(vtcd, T_FILE_LINE_W); + + stcd.width = 1024; + stcd.height = 256; + stcd.mipCount = 1; + stcd.format = render::TfR32G32B32A32F; + stcd.shaderStorage = true; + m_cloudDomeTexture[0] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); + m_cloudDomeTexture[1] = renderSystem->createSimpleTexture(stcd, T_FILE_LINE_W); + + if (!m_cloudTextures[0] || !m_cloudTextures[1] || !m_cloudDomeTexture[0] || !m_cloudDomeTexture[1]) + return false; + + if (!resourceManager->bind(c_shaderClouds2D, m_shaderClouds2D)) + return false; + if (!resourceManager->bind(c_shaderClouds3D, m_shaderClouds3D)) + return false; + if (!resourceManager->bind(c_shaderCloudsDome, m_shaderCloudsDome)) + return false; + } return true; } @@ -224,105 +237,108 @@ void SkyComponent::setup( { render::RenderGraph& renderGraph = context.getRenderGraph(); - if (m_shaderClouds2D.changed() || m_shaderClouds3D.changed()) + if (m_clouds) { - m_dirty = true; - m_shaderClouds2D.consume(); - m_shaderClouds3D.consume(); - } + if (m_shaderClouds2D.changed() || m_shaderClouds3D.changed()) + { + m_dirty = true; + m_shaderClouds2D.consume(); + m_shaderClouds3D.consume(); + } - if (m_dirty) - { - Ref< render::RenderPass > rp = new render::RenderPass(L"Sky compute clouds noise"); - rp->addBuild([=, this](const render::RenderGraph&, render::RenderContext* renderContext) { - { - auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds 2D"); - renderBlock->program = m_shaderClouds2D->getProgram().program; - renderBlock->workSize[0] = 512; - renderBlock->workSize[1] = 512; - renderBlock->workSize[2] = 1; + if (m_dirty) + { + Ref< render::RenderPass > rp = new render::RenderPass(L"Sky compute clouds noise"); + rp->addBuild([=, this](const render::RenderGraph&, render::RenderContext* renderContext) { + { + auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds 2D"); + renderBlock->program = m_shaderClouds2D->getProgram().program; + renderBlock->workSize[0] = 512; + renderBlock->workSize[1] = 512; + renderBlock->workSize[2] = 1; + + renderBlock->programParams = renderContext->alloc< render::ProgramParameters >(); + renderBlock->programParams->beginParameters(renderContext); + renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, m_cloudTextures[0], 0); + renderBlock->programParams->endParameters(renderContext); + + renderContext->compute(renderBlock); + renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Compute, m_cloudTextures[0], 0); + } + { + auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds 3D"); + renderBlock->program = m_shaderClouds3D->getProgram().program; + renderBlock->workSize[0] = 64; + renderBlock->workSize[1] = 64; + renderBlock->workSize[2] = 64; + + renderBlock->programParams = renderContext->alloc< render::ProgramParameters >(); + renderBlock->programParams->beginParameters(renderContext); + renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, m_cloudTextures[1], 0); + renderBlock->programParams->endParameters(renderContext); + + renderContext->compute(renderBlock); + renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Compute, m_cloudTextures[1], 0); + } + }); + renderGraph.addPass(rp); + + m_dirty = false; + } - renderBlock->programParams = renderContext->alloc< render::ProgramParameters >(); - renderBlock->programParams->beginParameters(renderContext); - renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, m_cloudTextures[0], 0); - renderBlock->programParams->endParameters(renderContext); + const int32_t cloudFrame = int32_t(worldRenderView.getTime() * 8.0f); + m_cloudBlend = (worldRenderView.getTime() * 8.0f) - cloudFrame; - renderContext->compute(renderBlock); - renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Compute, m_cloudTextures[0], 0); - } + // Generate dome projected cloud layer. + if ( + worldRenderView.getSnapshot() || + (worldRenderView.getIndex() == 0 && cloudFrame != m_cloudFrame) + ) + { + render::ITexture* input = m_cloudDomeTexture[m_count & 1]; + render::ITexture* output = m_cloudDomeTexture[(m_count + 1) & 1]; + + // Get sun from directional light in same entity as sky component. + Vector4 sunDirection = m_transform.axisY(); + Vector4 sunColor = Vector4(1.0f, 0.9f, 0.85f) * 1.8_simd; + if (m_owner != nullptr) { - auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds 3D"); - renderBlock->program = m_shaderClouds3D->getProgram().program; - renderBlock->workSize[0] = 64; - renderBlock->workSize[1] = 64; - renderBlock->workSize[2] = 64; + auto lightComponent = m_owner->getComponent< world::LightComponent >(); + if (lightComponent) + sunColor = lightComponent->getColor(); + } + + Ref< render::RenderPass > rp = new render::RenderPass(L"Sky compute clouds dome"); + rp->addBuild([=, this](const render::RenderGraph&, render::RenderContext* renderContext) { + auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds dome"); + renderBlock->program = m_shaderCloudsDome->getProgram().program; + renderBlock->workSize[0] = 1024; + renderBlock->workSize[1] = 256; + renderBlock->workSize[2] = 1; renderBlock->programParams = renderContext->alloc< render::ProgramParameters >(); renderBlock->programParams->beginParameters(renderContext); - renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, m_cloudTextures[1], 0); + renderBlock->programParams->setImageViewParameter(s_handleWeather_InputTexture, input, 0); + renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, output, 0); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud2D, m_cloudTextures[0]); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud3D, m_cloudTextures[1]); + renderBlock->programParams->setFloatParameter(s_handleWeather_SkyRadius, worldRenderView.getViewFrustum().getFarZ() - 10.0f); + renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunColor, sunColor); + renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunDirection, sunDirection); + renderBlock->programParams->setFloatParameter(s_handleWeather_SkyTemporalBlend, (worldRenderView.getSnapshot() || m_cloudFrame == 0) ? 1.0f : 0.2f); + renderBlock->programParams->setFloatParameter(world::s_handleTime, worldRenderView.getTime()); renderBlock->programParams->endParameters(renderContext); renderContext->compute(renderBlock); - renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Compute, m_cloudTextures[1], 0); - } - }); - renderGraph.addPass(rp); - - m_dirty = false; - } - - const int32_t cloudFrame = int32_t(worldRenderView.getTime() * 8.0f); - m_cloudBlend = (worldRenderView.getTime() * 8.0f) - cloudFrame; + renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Fragment, output, 0); + }); + renderGraph.addPass(rp); - // Generate dome projected cloud layer. - if ( - worldRenderView.getSnapshot() || - (worldRenderView.getIndex() == 0 && cloudFrame != m_cloudFrame) - ) - { - render::ITexture* input = m_cloudDomeTexture[m_count & 1]; - render::ITexture* output = m_cloudDomeTexture[(m_count + 1) & 1]; + m_count++; - // Get sun from directional light in same entity as sky component. - Vector4 sunDirection = m_transform.axisY(); - Vector4 sunColor = Vector4(1.0f, 0.9f, 0.85f) * 1.8_simd; - if (m_owner != nullptr) - { - auto lightComponent = m_owner->getComponent< world::LightComponent >(); - if (lightComponent) - sunColor = lightComponent->getColor(); + if (!worldRenderView.getSnapshot()) + m_cloudFrame = cloudFrame; } - - Ref< render::RenderPass > rp = new render::RenderPass(L"Sky compute clouds dome"); - rp->addBuild([=, this](const render::RenderGraph&, render::RenderContext* renderContext) { - auto renderBlock = renderContext->allocNamed< render::ComputeRenderBlock >(L"Sky clouds dome"); - renderBlock->program = m_shaderCloudsDome->getProgram().program; - renderBlock->workSize[0] = 1024; - renderBlock->workSize[1] = 256; - renderBlock->workSize[2] = 1; - - renderBlock->programParams = renderContext->alloc< render::ProgramParameters >(); - renderBlock->programParams->beginParameters(renderContext); - renderBlock->programParams->setImageViewParameter(s_handleWeather_InputTexture, input, 0); - renderBlock->programParams->setImageViewParameter(s_handleWeather_OutputTexture, output, 0); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud2D, m_cloudTextures[0]); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud3D, m_cloudTextures[1]); - renderBlock->programParams->setFloatParameter(s_handleWeather_SkyRadius, worldRenderView.getViewFrustum().getFarZ() - 10.0f); - renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunColor, sunColor); - renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunDirection, sunDirection); - renderBlock->programParams->setFloatParameter(s_handleWeather_SkyTemporalBlend, (worldRenderView.getSnapshot() || m_cloudFrame == 0) ? 1.0f : 0.2f); - renderBlock->programParams->setFloatParameter(world::s_handleTime, worldRenderView.getTime()); - renderBlock->programParams->endParameters(renderContext); - - renderContext->compute(renderBlock); - renderContext->compute< render::BarrierRenderBlock >(render::Stage::Compute, render::Stage::Fragment, output, 0); - }); - renderGraph.addPass(rp); - - m_count++; - - if (!worldRenderView.getSnapshot()) - m_cloudFrame = cloudFrame; } } @@ -333,6 +349,7 @@ void SkyComponent::build( ) { auto perm = worldRenderPass.getPermutation(m_shader); + m_shader->setCombination(c_handleWeather_CloudsEnable, m_clouds, perm); auto sp = m_shader->getProgram(perm); if (!sp) return; @@ -370,15 +387,22 @@ void SkyComponent::build( renderBlock->programParams->setFloatParameter(s_handleWeather_SkyRadius, worldRenderView.getViewFrustum().getFarZ() - 10.0f); renderBlock->programParams->setFloatParameter(s_handleWeather_SkyRotation, rotation); renderBlock->programParams->setFloatParameter(s_handleWeather_SkyIntensity, m_intensity); - renderBlock->programParams->setFloatParameter(s_handleWeather_SkyCloudBlend, m_cloudBlend); renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunDirection, sunDirection); renderBlock->programParams->setVectorParameter(s_handleWeather_SkySunColor, sunColor); + renderBlock->programParams->setVectorParameter(s_handleWeather_SkyOverHorizon, m_overHorizon); + renderBlock->programParams->setVectorParameter(s_handleWeather_SkyUnderHorizon, m_underHorizon); renderBlock->programParams->setVectorParameter(s_handleWeather_SkyEyePosition, eyePosition); renderBlock->programParams->setTextureParameter(s_handleWeather_SkyTexture, m_texture); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud2D, m_cloudTextures[0]); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud3D, m_cloudTextures[1]); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloudTexture, cloudDomeTexture); - renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloudTextureLast, cloudDomeTextureLast); + + if (m_clouds) + { + renderBlock->programParams->setFloatParameter(s_handleWeather_SkyCloudBlend, m_cloudBlend); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud2D, m_cloudTextures[0]); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloud3D, m_cloudTextures[1]); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloudTexture, cloudDomeTexture); + renderBlock->programParams->setTextureParameter(s_handleWeather_SkyCloudTextureLast, cloudDomeTextureLast); + } + renderBlock->programParams->endParameters(renderContext); renderContext->draw(sp.priority, renderBlock); diff --git a/code/Weather/Sky/SkyComponent.h b/code/Weather/Sky/SkyComponent.h index e8fa339d1..99b362d05 100644 --- a/code/Weather/Sky/SkyComponent.h +++ b/code/Weather/Sky/SkyComponent.h @@ -61,7 +61,10 @@ class T_DLLCLASS SkyComponent : public world::IEntityComponent explicit SkyComponent( const resource::Proxy< render::Shader >& shader, const resource::Proxy< render::ITexture >& texture, - float intensity + float intensity, + bool clouds, + const Color4f& overHorizon, + const Color4f& underHorizon ); virtual ~SkyComponent(); @@ -104,6 +107,9 @@ class T_DLLCLASS SkyComponent : public world::IEntityComponent world::Entity* m_owner = nullptr; Transform m_transform; float m_intensity = 1.0f; + bool m_clouds = true; + Color4f m_overHorizon = Color4f(0.2f, 0.5f, 0.85f, 0.0f); + Color4f m_underHorizon = Color4f(0.1f, 0.1f, 0.12f, 0.0f); int32_t m_count = 0; int32_t m_cloudFrame = 0; float m_cloudBlend = 0.0f; diff --git a/code/Weather/Sky/SkyComponentData.cpp b/code/Weather/Sky/SkyComponentData.cpp index fd0098fbc..b12b2c8a6 100644 --- a/code/Weather/Sky/SkyComponentData.cpp +++ b/code/Weather/Sky/SkyComponentData.cpp @@ -29,11 +29,10 @@ const resource::Id< render::Shader > c_defaultShader(Guid(L"{4CF929EB-3A8B-C340- } -T_IMPLEMENT_RTTI_EDIT_CLASS(L"traktor.weather.SkyComponentData", 4, SkyComponentData, world::IEntityComponentData) +T_IMPLEMENT_RTTI_EDIT_CLASS(L"traktor.weather.SkyComponentData", 6, SkyComponentData, world::IEntityComponentData) SkyComponentData::SkyComponentData() : m_shader(c_defaultShader) -, m_intensity(1.0f) { } @@ -53,7 +52,10 @@ Ref< SkyComponent > SkyComponentData::createComponent(resource::IResourceManager Ref< SkyComponent > skyComponent = new SkyComponent( shader, texture, - m_intensity + m_intensity, + m_clouds, + m_overHorizon, + m_underHorizon ); skyComponent->create(resourceManager, renderSystem); return skyComponent; @@ -89,6 +91,15 @@ void SkyComponentData::serialize(ISerializer& s) if (s.getVersion< SkyComponentData >() >= 4) s >> Member< float >(L"intensity", m_intensity, AttributeRange(0.0f) | AttributeUnit(UnitType::Percent)); + + if (s.getVersion< SkyComponentData >() >= 5) + s >> Member< bool >(L"clouds", m_clouds); + + if (s.getVersion< SkyComponentData >() >= 6) + { + s >> Member< Color4f >(L"overHorizon", m_overHorizon); + s >> Member< Color4f >(L"underHorizon", m_underHorizon); + } } } diff --git a/code/Weather/Sky/SkyComponentData.h b/code/Weather/Sky/SkyComponentData.h index 90bb34473..1c7a14d19 100644 --- a/code/Weather/Sky/SkyComponentData.h +++ b/code/Weather/Sky/SkyComponentData.h @@ -1,6 +1,6 @@ /* * TRAKTOR - * Copyright (c) 2022-2023 Anders Pistol. + * Copyright (c) 2022-2024 Anders Pistol. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -8,6 +8,7 @@ */ #pragma once +#include "Core/Math/Color4f.h" #include "Resource/Id.h" #include "World/IEntityComponentData.h" @@ -67,7 +68,10 @@ class T_DLLCLASS SkyComponentData : public world::IEntityComponentData private: resource::Id< render::Shader > m_shader; resource::Id< render::ITexture > m_texture; - float m_intensity; + float m_intensity = 1.0f; + bool m_clouds = true; + Color4f m_overHorizon = Color4f(0.2f, 0.5f, 0.85f, 0.0f); + Color4f m_underHorizon = Color4f(0.1f, 0.1f, 0.12f, 0.0f); }; } diff --git a/data/Source/System/Terrain/Ocean/Shaders/Ocean.xdi b/data/Source/System/Terrain/Ocean/Shaders/Ocean.xdi index 8f51a740f..8b4897e98 100644 --- a/data/Source/System/Terrain/Ocean/Shaders/Ocean.xdi +++ b/data/Source/System/Terrain/Ocean/Shaders/Ocean.xdi @@ -44,7 +44,7 @@ {9172DF46-5E10-BA42-8DA5-7576BFD7DE9A} - 207 + 217 -615 Position @@ -173,8 +173,8 @@ {27233818-FC79-524A-8A87-6D75EDA9A16B} - 1412 - 543 + 1446 + 558 L_SurfaceElevation @@ -182,8 +182,8 @@ {03811780-9518-6E4F-A6CB-B6668F5FA61E} - 1254 - 573 + 1232 + 584 y @@ -191,8 +191,8 @@ {C1439711-F197-B847-819D-44565E902E93} - 3652 - 802 + 3623 + 799 {4F91544C-FDC4-2042-8CAA-E721B4DB04C1} @@ -217,8 +217,8 @@ {46A921E9-6342-844F-8BA5-4172B82D79F9} - 3641 - 886 + 3633 + 883 z @@ -226,7 +226,7 @@ {07DE2DE4-40CA-804F-841E-0B8F98A26A7C} - 3824 + 3839 818 @@ -234,8 +234,8 @@ {1BC58BB7-4E28-F346-967D-CFD5E4F68760} - 4528 - 902 + 4477 + 863 L_DepthFactor @@ -243,8 +243,8 @@ {289F7E9C-D57D-714E-846B-46152985B1C7} - 6935 - 1570 + 7208 + 1578 L_DepthFactor @@ -261,8 +261,8 @@ {F2F64AEA-AF10-DD4F-BECA-CB693C8C4EDA} - 6117 - 601 + 5917 + 675 Ocean_ShallowTint Vector @@ -283,8 +283,8 @@ {1A8032F5-2B64-454F-B755-BD8DFCC369AA} - 6133 - 647 + 5917 + 718 Ocean_DeepColor Vector @@ -302,8 +302,8 @@ {C02030AF-E63C-2644-A895-36D45005B5E6} - 5452 - 1446 + 5099 + 1440 L_Foam @@ -311,8 +311,8 @@ {D7F4078D-0DA1-BB48-ACEC-50B29BEB2957} - 4821 - 1195 + 4454 + 1200 {AAEBB86D-4227-1847-A147-A07C2A5D10B9} Texture2D @@ -321,8 +321,8 @@ {EADE38D6-6809-B14B-B79A-DFF9733CBBAE} - 5226 - 1284 + 4859 + 1289 FtLinear FtLinear @@ -339,8 +339,8 @@ {80CB4932-CB55-D543-9529-468B41C8509B} - 4494 - 1334 + 4127 + 1339 L_WorldPosition @@ -348,16 +348,16 @@ {D71887B3-1A90-6045-8CC1-2E092E82D636} - 4703 - 1347 + 4336 + 1352 {C670FB0B-35A7-1541-9837-84AFAC29A7E3} - 5033 - 1351 + 4666 + 1356 xz @@ -365,16 +365,16 @@ {412B88ED-E058-4248-9C47-7F134DFE2371} - 4792 - 1349 + 4425 + 1354 {72E1CD43-2EE1-F54D-AA96-0F8FB1ECCE2D} - 4620 - 1396 + 4253 + 1401 0.04 @@ -382,8 +382,8 @@ {2AE0A49E-87BC-B24E-8FCC-34F02B6271D1} - 7994 - 1428 + 8267 + 1436 World_DeferredColor @@ -429,8 +429,8 @@ {E7699DB6-936F-9942-8A80-59AD6B0ACB4A} - 6185 - 1553 + 6624 + 1525 World_VisualCopyMap Texture2D @@ -440,8 +440,8 @@ {87833C0B-3553-4C4D-8BA3-C79F874B2040} - 6479 - 1574 + 6918 + 1546 FtLinear FtLinear @@ -458,32 +458,32 @@ {377DC967-0611-A44B-8673-0320C467DD01} - 6060 - 1682 + 6281 + 1598 {AD226821-988C-B748-92C2-AD10DCB46686} - 6214 - 1633 + 6427 + 1549 {76FF4631-FC41-EF42-8D3F-85CCCDF9D067} - 6020 - 1628 + 6233 + 1544 {D094C929-99AC-F246-8ED4-D956288B6511} - 7161 - 1465 + 7434 + 1473 @@ -532,7 +532,7 @@ {ED95106E-9A75-CF45-B982-753F812F5AD3} - 5438 + 5454 911 0 @@ -541,7 +541,7 @@ {6314802C-0644-FE45-A005-DA92798793C1} - 5428 + 5444 999 L_ViewNormal @@ -801,8 +801,8 @@ {05FF13B6-AB9A-B34B-873D-22D81DDA9867} - 5370 - 1641 + 5384 + 1505 0.2 @@ -821,7 +821,7 @@ {F821EF57-F0C4-724A-B7D8-887A02F3260D} - 618 + 644 490 L_Foam @@ -830,8 +830,8 @@ {3AD3C24B-55BA-B348-AC87-05BFAC3A9993} - 7632 - 1496 + 7905 + 1504 {AFD5FE57-FE20-134A-9C0F-5E25CAB9B3F2} @@ -858,8 +858,8 @@ {9E5ECDF6-5770-0D48-AD2A-E63522339F57} - 7383 - 1582 + 7656 + 1590 L_ViewPosition @@ -1084,8 +1084,8 @@ Read current fragment ]]> - 6188 - 1509 + 6627 + 1481 @@ -1100,8 +1100,8 @@ Read current fragment {E1F9C6F4-AA5B-9C44-BC07-9F9A1B3CEA00} - 6667 - 369 + 6424 + 547 Scatter @@ -1170,21 +1170,12 @@ $Output = vec4(scatter, 0.0f); ]]> - - {4FF35D5D-9106-EE40-9190-D76355D2F79F} - - - 6149 - 371 - - L_ViewPosition - {EF1373CD-97CC-864A-BA3D-0D2760A081A6} - 6149 - 325 + 5949 + 460 L_ViewNormal @@ -1371,8 +1362,8 @@ $Output = vec4(scatter, 0.0f); {FF9CB8F2-CB26-5B44-9A95-A92DF313D83E} - 6133 - 417 + 5933 + 503 L_LightDirection @@ -1380,8 +1371,8 @@ $Output = vec4(scatter, 0.0f); {C92B179E-8E7E-8742-9842-E7E665952051} - 6133 - 509 + 5933 + 589 L_ViewDirection @@ -1389,8 +1380,8 @@ $Output = vec4(scatter, 0.0f); {42181944-1082-EA4E-A4EF-FF95C6F5D188} - 6149 - 463 + 5933 + 546 L_DepthFactor @@ -1398,8 +1389,8 @@ $Output = vec4(scatter, 0.0f); {C8EF8E9D-8C2A-EC4A-A80F-58EFC3BB43EA} - 6149 - 555 + 5949 + 632 L_Irradiance @@ -1407,8 +1398,8 @@ $Output = vec4(scatter, 0.0f); {3504C002-CF68-2542-AAA2-6F2A044EF524} - 5460 - 1373 + 5099 + 1378 x @@ -1416,16 +1407,16 @@ $Output = vec4(scatter, 0.0f); {E32396D9-528C-CD4C-84B5-DBE89E7A8B78} - 5672 - 1390 + 5309 + 1385 {D5843542-7795-0D45-A49F-42CB1CA39E02} - 5860 - 1680 + 5907 + 1481 L_Roughness @@ -1433,7 +1424,7 @@ $Output = vec4(scatter, 0.0f); {C7B3B2BD-FD0C-0F43-A0B2-7322DC5F4350} - 5428 + 5444 955 L_Roughness @@ -1451,8 +1442,8 @@ $Output = vec4(scatter, 0.0f); {A4029210-7EB8-FC49-A9F2-005C873D2CD9} - 5376 - 1694 + 5384 + 1558 0.8 @@ -1460,8 +1451,8 @@ $Output = vec4(scatter, 0.0f); {1AF7A3BF-5BFA-E543-8895-0E44D4621E69} - 5648 - 1637 + 5656 + 1501 @@ -1486,7 +1477,7 @@ $Output = vec4(scatter, 0.0f); 4277 - 829 + 848 0 1 @@ -1822,8 +1813,8 @@ Dummy {5BB82970-DF53-2343-B680-D7A5425EA141} - 5018 - 1224 + 4651 + 1229 @@ -1858,8 +1849,8 @@ Read sun direction {88111C5D-C57F-6146-A14F-5DCA4A8F5CB3} - 6102 - 1830 + 6265 + 1678 Unnamed @@ -1898,8 +1889,8 @@ $Output = vec4(r * -0.05f, 0.0f); {69E7DEA1-4A45-7D42-A199-ECF571A8104B} - 5901 - 1886 + 6070 + 1734 L_ViewNormal @@ -1907,8 +1898,8 @@ $Output = vec4(r * -0.05f, 0.0f); {029C448C-ED9B-EB40-B406-CCFA2D4A2B63} - 5891 - 1826 + 6054 + 1674 L_ViewDirection @@ -1916,8 +1907,8 @@ $Output = vec4(r * -0.05f, 0.0f); {595CEF78-DEF4-F441-B2A7-141CC9F5F508} - 6339 - 1834 + 6460 + 1670 xy @@ -1925,8 +1916,8 @@ $Output = vec4(r * -0.05f, 0.0f); {B1EE0094-6D31-8148-A6F5-B72FF609426D} - 6484 - 1760 + 6647 + 1608 @@ -1941,8 +1932,8 @@ $Output = vec4(r * -0.05f, 0.0f); {B8655422-628E-394A-B33D-970F754CED96} - 259 - -558 + 265 + -561 500 @@ -1950,8 +1941,8 @@ $Output = vec4(r * -0.05f, 0.0f); {EEFF6D5B-70D2-AB46-B4E9-B42CD4385764} - 285 - -517 + 271 + -507 Ocean_Tile Vector @@ -1961,7 +1952,7 @@ $Output = vec4(r * -0.05f, 0.0f); {9B89538B-61FE-F345-AF0F-4D1023C50C76} - 482 + 461 -503 @@ -1978,7 +1969,7 @@ $Output = vec4(r * -0.05f, 0.0f); {3275587E-4619-E64E-8011-0536026EAD2D} - 679 + 671 -514 @@ -2656,7 +2647,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2666,137 +2657,137 @@ $Output = vec4(r * -0.05f, 0.0f); - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {0FF6511C-0293-41A8-860E-81978BD01F7F} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {0FF6511C-0293-41A8-850E-81978BD01F7F} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {0FF6511C-0293-41A8-860E-81978BD01F7F} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {0FF6511C-0293-41A8-860E-81978BD01F7F} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {0FF6511C-0293-41A8-870E-81978BD01F7F} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {0FF6511C-0293-41A8-880E-81978BD01F7F} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {0FF6511C-0293-41A8-890E-81978BD01F7F} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {ACC77B35-91B5-4405-ABC8-D0DA24D68178} - + {0FF6511C-0293-41A8-830E-81978BD01F7F} - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {0FF6511C-0293-41A8-840E-81978BD01F7F} - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2806,7 +2797,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2816,7 +2807,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2826,7 +2817,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2890,7 +2881,7 @@ $Output = vec4(r * -0.05f, 0.0f); {AF6C971B-D67A-42EE-A12B-97D36927C89F} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} @@ -2900,23 +2891,23 @@ $Output = vec4(r * -0.05f, 0.0f); {84BF3C26-64A7-4032-B775-1D369052B243} - + {D2D716D6-C4A1-471F-894A-D718515F6281} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {69997292-C813-490C-910C-620B9AD3A2BB} - + {9E839249-E9B9-4736-8BDD-A95A1C892B42} @@ -2926,7 +2917,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2936,7 +2927,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {84BF3C26-64A7-4032-B775-1D369052B243} @@ -2946,11 +2937,11 @@ $Output = vec4(r * -0.05f, 0.0f); - + {9E839249-E9B9-4736-8BDD-A95A1C892B42} - + {5A25771B-894F-4D92-8D1E-FBF8449850E8} @@ -2960,33 +2951,33 @@ $Output = vec4(r * -0.05f, 0.0f); {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {8760B263-C70C-46BA-9E97-A3D6B08941E9} - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {7ACEE4C2-A92D-4E50-BFAE-C1D744BEE5E0} - + {0D78442F-AA88-4B95-A497-E86A86E07FB8} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {9E839249-E9B9-4736-8BDD-A95A1C892B42} @@ -2996,17 +2987,17 @@ $Output = vec4(r * -0.05f, 0.0f); - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {69997292-C813-490C-910C-620B9AD3A2BB} - + {8F2140B5-F4E2-4E8F-8121-13C980250D3C} @@ -3016,101 +3007,101 @@ $Output = vec4(r * -0.05f, 0.0f); - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {F0CBF543-3ABA-D346-B737-070FE06DBEC9} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {A62A00A9-83D9-5546-9E26-6D5A40821D7E} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {37007839-EF02-2147-9676-C1C38A214D0F} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {17CACE84-6798-2B44-A575-4A44864947B5} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {3DE04294-4DEA-4A13-A460-2274647357EA} - + {335AF6FD-1E3E-A545-B933-1479607B86CF} - + {9F45B2C3-B513-4646-B0C1-663748FD169C} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {71A0310C-3928-44C3-8D4F-7D9AFF9EAE70} - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {05706B00-0F9C-4DBA-B455-9D4E0D96ACD2} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {0664FBEF-CF9D-724A-90D1-BEAB3A517019} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {0664FBEF-CF9D-724A-90D1-BEAB3A517019} @@ -3120,7 +3111,7 @@ $Output = vec4(r * -0.05f, 0.0f); {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {9F45B2C3-B513-4646-B0C1-663748FD169C} @@ -3140,13 +3131,13 @@ $Output = vec4(r * -0.05f, 0.0f); {70C35B91-1C36-454C-98EC-7514AACF73C8} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} @@ -3156,21 +3147,21 @@ $Output = vec4(r * -0.05f, 0.0f); - + {70C35B91-1C36-454C-98EC-7514AACF73C8} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} @@ -3186,41 +3177,41 @@ $Output = vec4(r * -0.05f, 0.0f); - + {32FD3DAA-16C1-44C8-8A1E-E9ECF97F31D2} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {345BDBFA-3326-40BF-B9DE-8ECA78A3EEF4} - + {6B0EBF94-A421-EB45-AE66-6C2ACECEF50D} - + {AA571ACC-7699-4D10-BCD7-4E857EFB35EA} - + {6B0EBF94-A421-EB45-AE66-6C2ACECEF50D} - + {8C41D88A-1D17-4237-B720-CCC0B7FF71B9} @@ -3230,7 +3221,7 @@ $Output = vec4(r * -0.05f, 0.0f); {FFE19E4E-24A8-47A4-AE80-307495E31066} - + {BDB32F7B-599C-42C8-A2CE-2B1BD0738E8B} @@ -3240,7 +3231,7 @@ $Output = vec4(r * -0.05f, 0.0f); {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {D2D716D6-C4A1-471F-894A-D718515F6281} @@ -3250,107 +3241,107 @@ $Output = vec4(r * -0.05f, 0.0f); {2D90AB77-694C-4586-AA05-5CF062EFFFAB} - + {69997292-C813-490C-910C-620B9AD3A2BB} - + {9E839249-E9B9-4736-8BDD-A95A1C892B42} - + {9BA81525-6E53-498C-AA97-B31FB48F3A50} - + {2D90AB77-694C-4586-AA05-5CF062EFFFAB} - + {55606599-DA57-584A-9A22-85DB6F4829EF} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {93DEEDC9-D4C7-47F8-8D6A-A79DABD6BA6A} - + {8FFB3BDB-A00E-4406-994C-0D52FAF04871} - + {E23CF1C9-F916-D24B-815A-CC7E01284D75} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {93DEEDC9-D4C7-47F8-8D6A-A79DABD6BA6A} - + {8FFB3BDB-A00E-4406-994C-0D52FAF04871} - + {E23CF1C9-F916-D24B-815A-CC7E01284D75} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {D3B5F4D8-D054-F740-BB89-11CC0AB7F510} - + {84BF3C26-64A7-4032-B775-1D369052B243} - + {22B8EE58-2845-314E-BFDA-E792A95C09DA} - + {BC06BB80-ECA8-C241-86CF-1EB033FE5141} - + {F2E22CA6-DFF3-4B20-A70A-0D7A44EACD8C} - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {9F45B2C3-B513-4646-B0C1-663748FD169C} @@ -3360,13 +3351,13 @@ $Output = vec4(r * -0.05f, 0.0f); {3B01355D-9153-4864-9B56-7D55F801BFF3} - + {3DE04294-4DEA-4A13-A460-2274647357EA} - + {32FD3DAA-16C1-44C8-8A1E-E9ECF97F31D2} @@ -3376,17 +3367,17 @@ $Output = vec4(r * -0.05f, 0.0f); - + {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {93DEEDC9-D4C7-47F8-8D6A-A79DABD6BA6A} - + {8FFB3BDB-A00E-4406-994C-0D52FAF04871} @@ -3420,7 +3411,7 @@ $Output = vec4(r * -0.05f, 0.0f); {4F10C0E3-F820-457F-AB7D-CFDF2AA3C69A} - + {D2D716D6-C4A1-471F-894A-D718515F6281} @@ -3436,7 +3427,7 @@ $Output = vec4(r * -0.05f, 0.0f); - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} @@ -3456,31 +3447,31 @@ $Output = vec4(r * -0.05f, 0.0f); - + {32FD3DAA-16C1-44C8-8A1E-E9ECF97F31D2} - + {11585EBC-914D-4E6D-A10D-D01694FF9840} - + {1E6639B6-8B58-4694-99E7-C058E3583522} - + {69997292-C813-490C-910C-620B9AD3A2BB} - + {D33F8931-C90C-4EBA-8A04-A31D3E08FAB7} - + {D2D716D6-C4A1-471F-894A-D718515F6281} @@ -3490,23 +3481,23 @@ $Output = vec4(r * -0.05f, 0.0f); {ADB4FC1D-3726-4CC5-B4D5-1E2468274325} - + {3DE04294-4DEA-4A13-A460-2274647357EA} - + {9E839249-E9B9-4736-8BDD-A95A1C892B42} - + {9F45B2C3-B513-4646-B0C1-663748FD169C} - + {32FD3DAA-16C1-44C8-8A1E-E9ECF97F31D2} @@ -3516,11 +3507,11 @@ $Output = vec4(r * -0.05f, 0.0f); - + {32FD3DAA-16C1-44C8-8A1E-E9ECF97F31D2} - + {3DE04294-4DEA-4A13-A460-2274647357EA} diff --git a/data/Source/System/Weather/Sky/Modules/Sky.xdi b/data/Source/System/Weather/Sky/Modules/Sky.xdi index 6199c36d1..1ce03e357 100644 --- a/data/Source/System/Weather/Sky/Modules/Sky.xdi +++ b/data/Source/System/Weather/Sky/Modules/Sky.xdi @@ -5,25 +5,20 @@ // Sky and clouds from shadertoy.com/view/MdGfzh #using \{921BBC45-4C75-624A-AA78-9B5FEC80645B} -vec3 getSkyColor(vec3 sunDirection, vec3 sunColor, vec3 rd) +vec3 GetSkyColor(vec3 sunDirection, vec3 sunColor, vec3 overHorizon, vec3 underHorizon, vec3 rd) { const float sundot = clamp(dot(rd, sunDirection), 0.0f, 1.0f); // Over horizon - const vec3 OverHorizon = vec3(0.2f, 0.5f, 0.85f); - vec3 col = OverHorizon - max(rd.y, 0.01f) * max(rd.y, 0.01f) * 0.5f; + vec3 col = overHorizon - max(rd.y, 0.01f) * max(rd.y, 0.01f) * 0.5f; // Under horizon - const vec3 UnderHorizon = vec3(0.1f, 0.1f, 0.12f); - col = mix(col, UnderHorizon, pow(1.0f - max(rd.y, 0.0f), 6.0f)); + col = mix(col, underHorizon, pow(1.0f - max(rd.y, 0.0f), 6.0f)); // Add sun - col += 0.25f * sunColor * pow(sundot, 5.0f); - col += 0.20f * sunColor * pow(sundot, 512.0f); - col += 0.25f * sunColor * pow(sundot, 64.0f); - col += sunColor * pow(sundot, 8.0f); + col += sunColor * pow(max(sundot - 0.1, 0), 8.0f); - col += clamp((0.1 - rd.y) * 10.0f, 0.0f, 1.0f) * vec3(0.0f, 0.1f, 0.2f); + col += clamp((0.1 - rd.y) * 10.0f, 0.0f, 1.0f) * overHorizon; return col; } @@ -320,6 +315,7 @@ float tilableFbm(vec3 p, const int octaves, float tile) return c / w; } + ]]> diff --git a/data/Source/System/Weather/Sky/Shaders/Sky.xdi b/data/Source/System/Weather/Sky/Shaders/Sky.xdi index e913b37b6..8d85440aa 100644 --- a/data/Source/System/Weather/Sky/Shaders/Sky.xdi +++ b/data/Source/System/Weather/Sky/Shaders/Sky.xdi @@ -167,8 +167,8 @@ {A6CF4D34-4EFC-A646-AE57-A51459495761} - 2801 - 944 + 3117 + 961 World_ForwardColor @@ -260,8 +260,8 @@ {FA371FDA-5996-4181-98D2-92B88A67D250} - 2425 - 1220 + 2741 + 1237 false @@ -306,8 +306,8 @@ {69A59CB0-54FF-E348-8D14-4F7974EF3EF4} - 2801 - 1113 + 3117 + 1130 World_DeferredColor @@ -353,8 +353,8 @@ {3D7D4539-5904-EC42-B481-B5E9A947DE3E} - 2801 - 1282 + 3117 + 1299 World_SimpleColor @@ -445,8 +445,8 @@ {B229DF57-A4C7-6D43-B9BD-9A2150252068} - 2301 - 909 + 2617 + 926 {D2F9DC59-6D32-4F4A-9C84-689849C25897} @@ -487,8 +487,8 @@ {E88E5C56-08FC-CA46-BCEA-4A1DA38CAA35} - 1995 - 1161 + 2311 + 1178 0 10 @@ -516,8 +516,8 @@ {3878417E-8F73-4CE4-8C47-53D163131E1F} - -427 - 684 + -431 + 648 Sky color @@ -542,6 +542,14 @@ {D31F47A6-19A4-440D-8432-A9E4610D070D} SunColor + + {61462D3A-94EF-D64C-9E85-3EC2E0B01745} + OverHorizon + + + {AD277C19-9612-9141-AA5C-097F83F5B743} + UnderHorizon + @@ -553,8 +561,15 @@ @@ -571,8 +586,8 @@ $Output = vec4(clr, 1.0f); {8FB6549E-5322-4FD8-8912-FD35D323CFF6} - -770 - 783 + -754 + 779 WorldPosition @@ -669,8 +684,8 @@ $Distance = dist; {2BB29238-2675-42BB-9382-17C55B6C1380} - -768 - 902 + -752 + 896 FtLinear FtLinear @@ -687,8 +702,8 @@ $Distance = dist; {1AD17D96-8F2E-457A-AAB5-8EBCE60711EA} - -818 - 824 + -802 + 818 Weather_SkyCloud2D Texture2D @@ -698,8 +713,8 @@ $Distance = dist; {20235D86-BCB0-485E-91F7-F7E2ADE78B21} - -818 - 863 + -802 + 857 Weather_SkyCloud3D Texture3D @@ -727,7 +742,7 @@ $Distance = dist; -754 - 941 + 935 World_Time Scalar @@ -737,8 +752,8 @@ $Distance = dist; {49BB686E-3893-4F3E-AFAC-FAC0AC817383} - -818 - 744 + -802 + 662 Weather_SkySunColor Vector @@ -748,8 +763,8 @@ $Distance = dist; {CFE120E4-0277-41B4-A10C-9C932F6764B0} - -834 - 705 + -818 + 623 Weather_SkySunDirection Vector @@ -794,7 +809,7 @@ $Distance = dist; -818 - 980 + 974 Weather_SkyEyePosition Vector @@ -970,8 +985,8 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {E7530B7B-E7A2-3C4B-8072-C3B73EE99101} - -792 - 1019 + -776 + 1013 0, 0, 0, 0 @@ -1024,8 +1039,8 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {BAC7DCC6-4741-B54D-A845-5798F052AEE8} - 2607 - 960 + 2923 + 977 xyz @@ -1033,8 +1048,8 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {ED011191-7BF2-2F4B-8AB7-9AF7A659B853} - 2488 - 1294 + 2804 + 1311 xyz @@ -1086,6 +1101,66 @@ $Output = vec4(texCoord, 0.0f, 0.0f); Scalar Frame + + {65EE6AC5-7D25-844B-B7AE-790215C27DA1} + + + 1976 + 1234 + + Weather_CloudsEnable + + + {98628942-AC32-7D44-BB38-C138F1F6D6DF} + + + 1730 + 1330 + + SkyColor + + + {ACE3D045-2AFD-9741-88E0-3E1F745BD4F6} + + + 2111 + 767 + + Weather_CloudsEnable + + + {06CE4BB1-B8C6-E24F-9E10-0719CFA745EF} + + + 1838 + 852 + + Weather_SkyRadius + Scalar + Once + + + {0CF0ACDC-F017-5E45-8BA8-266248431786} + + + -818 + 701 + + Weather_SkyOverHorizon + Vector + Frame + + + {3F5650EA-F241-BC47-B523-B8813F1C899C} + + + -834 + 740 + + Weather_SkyUnderHorizon + Vector + Frame + @@ -1548,16 +1623,6 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {32EB5230-1F0D-40B8-93F6-9C8E5469454E} - - - - {0D78442F-AA88-4B95-A497-E86A86E07FB8} - - - - {9BA81525-6E53-498C-AA97-B31FB48F3A50} - - @@ -1608,16 +1673,6 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {7ACEE4C2-A92D-4E50-BFAE-C1D744BEE5E0} - - - - {0D78442F-AA88-4B95-A497-E86A86E07FB8} - - - - {51EA7D6F-840D-46B9-9B20-09A837C1300E} - - @@ -1828,6 +1883,86 @@ $Output = vec4(texCoord, 0.0f, 0.0f); {5A25771B-894F-4D92-8D1E-FBF8449850E8} + + + + {0D78442F-AA88-4B95-A497-E86A86E07FB8} + + + + {A1DDB166-9422-45A3-AE93-6702275DAD1C} + + + + + + {9D9FA2FC-9298-4A6F-88A9-A055F8A91F52} + + + + {9BA81525-6E53-498C-AA97-B31FB48F3A50} + + + + + + {84BF3C26-64A7-4032-B775-1D369052B243} + + + + {92AA3735-BB4C-4541-81DA-AC500930B2E6} + + + + + + {0D78442F-AA88-4B95-A497-E86A86E07FB8} + + + + {A1DDB166-9422-45A3-AE93-6702275DAD1C} + + + + + + {9D9FA2FC-9298-4A6F-88A9-A055F8A91F52} + + + + {51EA7D6F-840D-46B9-9B20-09A837C1300E} + + + + + + {1E6639B6-8B58-4694-99E7-C058E3583522} + + + + {92AA3735-BB4C-4541-81DA-AC500930B2E6} + + + + + + {1E6639B6-8B58-4694-99E7-C058E3583522} + + + + {61462D3A-94EF-D64C-9E85-3EC2E0B01745} + + + + + + {1E6639B6-8B58-4694-99E7-C058E3583522} + + + + {AD277C19-9612-9141-AA5C-097F83F5B743} + +