@ -7,7 +7,9 @@ namespace UnityEngine.Rendering.PostProcessing
internal class PSSRUpscaler : Upscaler
internal class PSSRUpscaler : Upscaler
{
{
#if UNITY_PS5
#if UNITY_PS5
public static bool IsSupported = > UnityEngine . PS5 . Utility . isTrinityMode ;
public static bool IsSupported = > UnityEngine . PS5 . Utility . isTrinityMode & & PluginInitialized ;
private static readonly bool PluginInitialized ;
private PSSRPlugin . DispatchParams _dispatchParams ;
private PSSRPlugin . DispatchParams _dispatchParams ;
private IntPtr _dispatchParamsBuffer ;
private IntPtr _dispatchParamsBuffer ;
@ -18,22 +20,27 @@ namespace UnityEngine.Rendering.PostProcessing
private RenderTexture _outputColor ;
private RenderTexture _outputColor ;
private Texture2D _outputIntermediate ;
private Texture2D _outputIntermediate ;
private bool _pluginInitialized ;
private bool _contextInitialized ;
private bool _contextInitialized ;
private uint _frameCount ;
private uint _frameCount ;
// TODO: InitPssr from class constructor
public override void CreateContext ( PostProcessRenderContext context , Upscaling config )
static PSSRUpscaler ( )
{
{
if ( PSSRPlugin . InitPssr ( ) < 0 )
if ( PSSRPlugin . InitPssr ( ) < 0 )
{
{
Debug . LogError ( "Failed to initialize PSSR plugin!" ) ;
Debug . LogError ( "Failed to initialize PSSR plugin!" ) ;
_pluginInitialized = false ;
return ;
PluginInitialized = false ;
}
}
_pluginInitialized = true ;
PluginInitialized = true ;
}
public override void CreateContext ( PostProcessRenderContext context , Upscaling config )
{
if ( ! PluginInitialized )
{
Debug . LogWarning ( "PSSR plugin is not initialized!" ) ;
return ;
}
PSSRPlugin . InitParams initParams ;
PSSRPlugin . InitParams initParams ;
initParams . displayWidth = ( uint ) config . UpscaleSize . x ;
initParams . displayWidth = ( uint ) config . UpscaleSize . x ;
@ -88,18 +95,12 @@ namespace UnityEngine.Rendering.PostProcessing
Marshal . FreeHGlobal ( _dispatchParamsBuffer ) ;
Marshal . FreeHGlobal ( _dispatchParamsBuffer ) ;
_dispatchParamsBuffer = IntPtr . Zero ;
_dispatchParamsBuffer = IntPtr . Zero ;
}
}
if ( _pluginInitialized )
{
PSSRPlugin . ReleasePssr ( ) ;
_pluginInitialized = false ;
}
}
}
public override void Render ( PostProcessRenderContext context , Upscaling config )
public override void Render ( PostProcessRenderContext context , Upscaling config )
{
{
var cmd = context . command ;
var cmd = context . command ;
if ( ! _p luginInitialized | | ! _contextInitialized )
if ( ! PluginInitialized | | ! _contextInitialized )
{
{
cmd . BlitFullscreenTriangle ( context . source , context . destination ) ;
cmd . BlitFullscreenTriangle ( context . source , context . destination ) ;
return ;
return ;