From d54de2a3494ba95b72c6e4493055a10d2bd45017 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 12 Dec 2023 12:49:05 -0600 Subject: [PATCH] fix sun corona by locking in the material feature variation to ensure it uses vertex lighting due to colorization, as well as a few other switches, and applying an explicit vs default stateblock blend do similar with moon so you don't have to set that to explicitly translucent either --- Engine/source/environment/scatterSky.cpp | 7 +++++++ Engine/source/environment/sun.cpp | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Engine/source/environment/scatterSky.cpp b/Engine/source/environment/scatterSky.cpp index 9869bf4a7..0d7bb727b 100644 --- a/Engine/source/environment/scatterSky.cpp +++ b/Engine/source/environment/scatterSky.cpp @@ -921,6 +921,13 @@ void ScatterSky::_initMoon() features.removeFeature(MFT_ReflectionProbes); features.addFeature(MFT_isBackground); mMoonMatInst = MATMGR->createMatInstance(mMoonMatAsset->getMaterialDefinitionName(), features, getGFXVertexFormat()); + + GFXStateBlockDesc desc; + desc.setBlend(true); + desc.setAlphaTest(true); + desc.setZReadWrite(true, false); + mMoonMatInst->addStateBlockDesc(desc); + mMoonMatInst->init(features, getGFXVertexFormat()); } } diff --git a/Engine/source/environment/sun.cpp b/Engine/source/environment/sun.cpp index c7ffefa05..615337a1f 100644 --- a/Engine/source/environment/sun.cpp +++ b/Engine/source/environment/sun.cpp @@ -41,6 +41,7 @@ #include "materials/baseMatInstance.h" #include "materials/sceneData.h" #include "math/util/matrixSet.h" +#include "materials/materialFeatureTypes.h" IMPLEMENT_CO_NETOBJECT_V1(Sun); @@ -454,7 +455,21 @@ void Sun::_initCorona() if (mCoronaMaterialAsset.notNull()) { - mCoronaMatInst = MATMGR->createMatInstance(mCoronaMaterialAsset->getMaterialDefinitionName(), MATMGR->getDefaultFeatures(), getGFXVertexFormat()); + FeatureSet features = MATMGR->getDefaultFeatures(); + features.removeFeature(MFT_RTLighting); + features.removeFeature(MFT_Visibility); + features.removeFeature(MFT_ReflectionProbes); + features.addFeature(MFT_isBackground); + features.addFeature(MFT_VertLit); + + mCoronaMatInst = MATMGR->createMatInstance(mCoronaMaterialAsset->getMaterialDefinitionName(), features, getGFXVertexFormat()); + + GFXStateBlockDesc desc; + desc.setBlend(true); + desc.setAlphaTest(true); + desc.setZReadWrite(true, false); + mCoronaMatInst->addStateBlockDesc(desc); + mCoronaMatInst->init(features, getGFXVertexFormat()); } }