From 21534473c922da89a7e62cf958582a157ebc56db Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Mon, 8 Dec 2025 14:22:29 +0000 Subject: [PATCH] Update shaderGen.cpp vertex shaders need to regen on run again to get the vertex format setup --- Engine/source/shaderGen/shaderGen.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Engine/source/shaderGen/shaderGen.cpp b/Engine/source/shaderGen/shaderGen.cpp index ab29205cf..2cd88eb29 100644 --- a/Engine/source/shaderGen/shaderGen.cpp +++ b/Engine/source/shaderGen/shaderGen.cpp @@ -93,6 +93,8 @@ ShaderGen::~ShaderGen() { GFXDevice::getDeviceEventSignal().remove(this, &ShaderGen::_handleGFXEvent); _uninit(); + + mFileCache.clear(); } void ShaderGen::registerInitDelegate(GFXAdapterType adapterType, ShaderGenInitDelegate& initDelegate) @@ -190,7 +192,7 @@ void ShaderGen::generateShader( const MaterialFeatureData& featureData, _uninit(); _init(); - const bool skipRegen = !Con::getBoolVariable("ShaderGen::GenNewShaders", true); + bool skipRegen = !Con::getBoolVariable("ShaderGen::GenNewShaders", true); const FeatureSet& features = mFeatureData.features; U32 stages = 0; @@ -240,7 +242,12 @@ void ShaderGen::generateShader( const MaterialFeatureData& featureData, // set the shaderdata file for this stage, shaderdata ptr needs to be passed in here. dSprintf(fileName, sizeof(fileName), "shadergen:/%s.%s", stageName.c_str(), mFileEnding.c_str()); shaderData->setShaderStageFile(curStage, fileName); - continue; + if (!(curStage & GFXShaderStage::VERTEX_SHADER)) + { + continue; + } + + skipRegen = true; } mFileCache[stageName] = true; @@ -251,10 +258,13 @@ void ShaderGen::generateShader( const MaterialFeatureData& featureData, mOutput = new MultiLine; FileStream* stream = new FileStream(); - if (!stream->open(fileName, Torque::FS::File::Write)) + if (!skipRegen) { - AssertFatal(false, "Failed to open Shader Stream"); - return; + if (!stream->open(fileName, Torque::FS::File::Write)) + { + AssertFatal(false, "Failed to open Shader Stream"); + return; + } } switch (curStage) @@ -350,15 +360,15 @@ void ShaderGen::_processVertFeatures( Vector ¯os, bool macro feature->processVertMacros( macros, mFeatureData ); - if ( macrosOnly ) - continue; - feature->setInstancingFormat( &mInstancingFormat ); feature->mVertexFormat = mVertexFormat; feature->processVert( mComponents, mFeatureData ); + if (macrosOnly) + continue; + String line; if ( index > -1 ) line = String::ToString( " // %s %d\r\n", feature->getName().c_str(), index ); @@ -601,5 +611,4 @@ void ShaderGen::flushProceduralShaders() } mProcShaderData.clear(); - mFileCache.clear(); }