PostRenderViewFamily_RenderThread p

I have implemented a stereoscopic rendering device and inherited the ISceneViewExtension interface. I intend to process the ViewFamily 's RenderTarget in the PostRenderViewFamily_RenderThread interface of ISceneViewExtension , using a compute shader to interleave the left and right views, and then reassign the output result back to the ViewFamily . The current issue is that it runs correctly in the editor but fails to work after packaging. The relevant code is as follows:

void FBN3DStereoRenderingDevice::PostRenderViewFamily_RenderThread(FRDGBuilder& GraphBuilder, FSceneViewFamily& InViewFamily)
{

	UE_LOG(LogTemp, Log, TEXT("PostRenderViewFamily_RenderThread : %d"), InViewFamily.Views.Num());

	if (!bIsStereo) return;

	if (!InViewFamily.RenderTarget || !InViewFamily.RenderTarget->GetRenderTargetTexture())
	{
		UE_LOG(LogTemp, Error, TEXT("Invalid RenderTarget in ViewFamily!"));
		return;
	}

	FIntPoint TargetSize = InViewFamily.RenderTarget->GetSizeXY();
	if (TargetSize.X <= 0 || TargetSize.Y <= 0)
	{
		UE_LOG(LogTemp, Error, TEXT("Invalid render target size: %dx%d"), TargetSize.X, TargetSize.Y);
		return;
	}

	FRDGTextureRef BackBuffer = GraphBuilder.RegisterExternalTexture(
		CreateRenderTarget(
			InViewFamily.RenderTarget->GetRenderTargetTexture(),
			TEXT("BackBuffer")
		),
		ERDGTextureFlags::None
	);


	FRDGTextureDesc IntermediateDesc = FRDGTextureDesc::Create2D(
		BackBuffer->Desc.Extent,
		PF_A2B10G10R10,
		FClearValueBinding::None,
		TexCreate_ShaderResource | TexCreate_UAV
	);
	FRDGTextureRef IntermediateTexture = GraphBuilder.CreateTexture(IntermediateDesc, TEXT("IntermediateTexture"));

	AddCopyTexturePass(GraphBuilder, BackBuffer, IntermediateTexture);

	FRDGTextureDesc OutputDesc = FRDGTextureDesc::Create2D(
		InViewFamily.RenderTarget->GetSizeXY(),
		PF_A2B10G10R10,
		FClearValueBinding::White,
		TexCreate_RenderTargetable | TexCreate_ShaderResource | TexCreate_UAV | TexCreate_External 
	);

	FRDGTextureRef outputTexture = GraphBuilder.CreateTexture(OutputDesc, TEXT("StereoInterweave"));

	if (!BackBuffer || !outputTexture) {
		UE_LOG(LogTemp, Log, TEXT("BackBuffer Or OutputTexture is InValide"));
		return;
	}
	else {
		UE_LOG(LogTemp, Log, TEXT("BackBuffer And OutputTexture is Valide"));
	}


	FBN3DComputeShaderInterface::Interweave(GraphBuilder, ResolutionX, ResolutionY, Mode, TexLayout,
		PixelPitch, PixelWidth, PlaceHeight, Offset, Slant, Zadd, MiddleEyePos, IntermediateTexture, outputTexture);

	AddCopyTexturePass(GraphBuilder, outputTexture, BackBuffer, FRHICopyTextureInfo());
}

void FBN3DComputeShaderInterface::DispatchRenderThread(FRDGBuilder& GraphBuilder, FBN3DComputeShaderDispatchParams Params) {

	TShaderMapRef<FBN3DComputeShader> ComputeShader(GetGlobalShaderMap(GMaxRHIFeatureLevel), PermutationVector);

	bool bIsShaderValid = ComputeShader.IsValid();

	if (bIsShaderValid) {
		FBN3DComputeShader::FParameters* PassParameters = GraphBuilder.AllocParameters<FBN3DComputeShader::FParameters>();

		if (!Params.inputTexture || !Params.outputTexture) {

			UE_LOG(LogTemp, Log, TEXT("Params.inputTexture || !Params.outputTexture  is InValide!!!!"));
			return;
		}
		else {
			UE_LOG(LogTemp, Log, TEXT("Params.inputTexture || Params.outputTexture  is Valide!!!!"));
		}

		···

		PassParameters->BInputTexture = Params.inputTexture;
		PassParameters->Result = GraphBuilder.CreateUAV(Params.outputTexture);	
	}
}
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )

	```
	SHADER_PARAMETER_RDG_TEXTURE(Texture2D, BInputTexture)
	SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D<float4>, Result)

END_SHADER_PARAMETER_STRUCT()
usf file:
#include "/Engine/Public/Platform.ush"

....

Texture2D BInputTexture;
RWTexture2D<float4> Result;

the error is:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000044

LX3DProject!ValidateShaderParameters()
LX3DProject!FComputeShaderUtils::Dispatch() [D:\Program Files\Epic Games\UE_5.4\Engine\Source\Runtime\RenderCore\Public\RenderGraphUtils.h:500]
LX3DProject!TRDGLambdaPass<FBN3DComputeShader::FParameters,FBN3DComputeShaderInterface::DispatchRenderThread'::5’::<lambda_1> >::Execute() [D:\Program Files\Epic Games\UE_5.4\Engine\Source\Runtime\RenderCore\Public\RenderGraphPass.h:630]
LX3DProject!FRDGBuilder::ExecutePass()
LX3DProject!FRDGBuilder::Execute()
LX3DProject!FSceneRenderer::RenderThreadEnd()
LX3DProject!UE::RendererPrivateUtils::Implementation::TPersistentBuffer<UE::HLSL::FCellBlockData,UE::RendererPrivateUtils::Implementation::FStructuredBufferTraits>::ValidateGPUData<FSceneCullingBuilder::UploadToGPU’::51'::<lambda_1> >'::12’::<lambda_1>::()
LX3DProject!FRenderCommandPipeRegistry::StopRecording'::2’::<lambda_1>::operator()()
LX3DProject!TGraphTask<TFunctionGraphTaskImpl<void __cdecl(void),1> >::ExecuteTask()
LX3DProject!FNamedTaskThread::ProcessTasksNamedThread()
LX3DProject!FNamedTaskThread::ProcessTasksUntilQuit()
LX3DProject!RenderingThreadMain()
LX3DProject!FRenderingThread::Run()
LX3DProject!FRunnableThreadWin::Run()

who can tell me why? i confused for two weeks!!!