initData
The immutable initialization parameters used to configure FSR2.
Read time 1 minuteLast updated 6 days ago
Definition
- Type: Property
- Namespace: UnityEngine.AMD
- Assembly: UnityEngine.AMDModule
public ref readonly FSR2CommandInitializationData initData { get; }
Remarks
Set once when creating the FSR2Context with GraphicsDevice.CreateFeature. These values determine the internal resolution limits, display size, and operational flags.
Additional Resources: FSR2CommandInitializationData.
Examples
using UnityEngine;using UnityEngine.Rendering;using UnityEngine.Rendering.HighDefinition;using UnityEngine.Experimental.Rendering;using UnityEngine.AMD;// Example HDRP custom pass public class CustomFSRPass : CustomPass{ void InitializeAMDDevice() { // device initialization code } bool HasOutputResolutionChanged(CustomPassContext ctx) { // detect resolution change } bool HasInputResolutionChanged(CustomPassContext ctx) { // detect resolution change } protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) { // setup code } protected override void Execute(CustomPassContext ctx) { bool initializeFsr2Context = fsr2Context == null || HasInputResolutionChanged(ctx) || HasOutputResolutionChanged(ctx); if (initializeFsr2Context) { if (fsr2Context != null) { amdDevice.DestroyFeature(ctx.cmd, fsr2Context); fsr2Context = null; } Vector2Int renderSize = ctx.cameraColorBuffer.GetScaledSize(); float scalingRatio = amdDevice.GetUpscaleRatioFromQualityMode(m_Quality); uint displaySizeWidth = (uint)(renderSize.x * scalingRatio); uint displaySizeHeight = (uint)(renderSize.y * scalingRatio); FSR2CommandInitializationData initData = new FSR2CommandInitializationData(); initData.SetFlag(FfxFsr2InitializationFlags.EnableHighDynamicRange, true); initData.SetFlag(FfxFsr2InitializationFlags.EnableDisplayResolutionMotionVectors, true); initData.SetFlag(FfxFsr2InitializationFlags.EnableMotionVectorsJitterCancellation, false); initData.SetFlag(FfxFsr2InitializationFlags.DepthInverted, true); initData.maxRenderSizeWidth = displaySizeWidth; initData.maxRenderSizeHeight = displaySizeHeight; initData.displaySizeWidth = displaySizeWidth; initData.displaySizeHeight = displaySizeHeight; fsr2Context = amdDevice.CreateFeature(ctx.cmd, initData); // At this point, we can access the readonly initData within the fsr2Context. Debug.LogFormat("FSR2 Context:\n" + "\tmaxRenderSizeWidth={0}\n\tmaxRenderSizeHeight={1}\n" + "\tdisplaySizeWidth={2}\n\tdisplaySizeHeight={3}\n" + "\tflags={4}", fsr2Context.initData.maxRenderSizeWidth, fsr2Context.initData.maxRenderSizeHeight, fsr2Context.initData.displaySizeWidth, fsr2Context.initData.displaySizeHeight, fsr2Context.initData.ffxFsrFlags ); } // pass execution code } protected override void Cleanup() { // cleanup code } private GraphicsDevice amdDevice = null; private FSR2Context fsr2Context = null; [SerializeField] public FSR2Quality m_Quality = FSR2Quality.Quality; // other fields}