Unity 6.3
0 онлайн 63 гостей 3 в системе
Вход

FSR2TextureTable

структура в UnityEngine.AMD

Выполнено в:UnityEngine.AMDModule

Описание

Набор слотов текстуры, доступных для FSR2Context. SA GraphicsDevice.ExecuteFSR2.

С помощью этой структуры задают входные и выходные текстуры для реализации FSR2.

Примечание: Вы должны создать текстуру цвета выхода colorOutput с enableRandomWrite параметр установлен на true при инициализации RTHandle текстуры. Это связано с FSR2 проходами, требующими доступа к ресурсам в вычислительном шейдере

См. Раздел " Вводные ресурсы " в документации FSR2 для больше деталей.

Дополнительные ресурсы: AMDUnityPlugin, GraphicsDevice, FSR2Context, FSR2CommandInitializationData, FSR2CommandExecutionData

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) { if (amdDevice == null) { InitializeAMDDevice(); }

float scalingRatio = fsr2Context == null ? 1.0f : amdDevice.GetUpscaleRatioFromQualityMode(m_Quality); fsr2OutputColorBuffer = RTHandles.Alloc( new Vector2(scalingRatio, scalingRatio), slices: 1, dimension: TextureDimension.Tex2D, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, name: "fsr2OutputColorBuffer", enableRandomWrite: true ); }

protected override void Execute(CustomPassContext ctx) { bool initializeFsr2Context = fsr2Context == null || HasInputResolutionChanged(ctx) || HasOutputResolutionChanged(ctx); if (initializeFsr2Context) { // fsr2Context initialization code }

fsr2Context.executeData.enableSharpening = m_EnableSharpening ? 1 : 0; // populate rest of the fsr2Context.executeData

FSR2TextureTable fsr2TextureTable = new FSR2TextureTable() { // Mandatory inputs colorInput = ctx.cameraColorBuffer, colorOutput = fsr2OutputColorBuffer, depth = ctx.cameraDepthBuffer, motionVectors = ctx.cameraMotionVectorsBuffer,

// Optional inputs transparencyMask = null, exposureTexture = null, reactiveMask = null, biasColorMask = null };

amdDevice.ExecuteFSR2(ctx.cmd, fsr2Context, fsr2TextureTable); }

protected override void Cleanup() { // cleanup code }

private GraphicsDevice amdDevice = null; private FSR2Context fsr2Context = null; private RTHandle fsr2OutputColorBuffer;

[SerializeField] public float m_Sharpness = 0.92f; [SerializeField] public bool m_EnableSharpening = true; [SerializeField] public FSR2Quality m_Quality = FSR2Quality.Quality; FSR2Quality m_QualityBefore = FSR2Quality.Quality; Vector2Int m_InputTextureSize = new Vector2Int(0,0); }

Свойства

Свойство Описание
biasColorMaskМаска, такого же размера, как colorInput, предпочтительно формата R8_UNORM, которая информирует FSR2 о возможных движущихся пикселях. Если наблюдается сильное дублирование, установите пиксели на эту маску, чтобы исправить проблему. Эта текстура необязательна.
colorInputВходный цветовой буфер для увеличения выборки для FSR2Context. Эта текстура обязательна, и вы должны установить для нее не нулевое значение.
colorOutputВходный цветовой буфер для увеличения выборки для FSR2Context. Эта текстура обязательна, и вы должны установить для нее не нулевое значение.
depthВходный буфер глубины. Этот буфер должен иметь такой же размер, как и входящий цветовой буфер. Эта текстура обязательна, и вы должны установить для нее ненулевое значение.
exposureTextureТекстура 1x1 со значениями предварительной экспозиции. Если вы не используете предварительную экспозицию, не задавайте эту текстуру. Эта текстура необязательна.
motionVectorsВекторы движения, запрошенные FSR2Context. В зависимости от AMD.FSR2FeatureFlags, указанного в FSR2Context.initData, этот буфер может быть меньшим масштабом или полным выходным разрешением. Эта текстура обязательна, и вы должны установить для нее не нулевое значение.
reactiveMaskМаска отображения, указывающая зависимость от временной информации. Дополнительные ресурсы: Документация Github по реактивной маске.
transparencyMaskБитовая маска прозрачности. Она должна быть такого же размера, как и текстура входа. Эта текстура помогает FSR2Context с проблемами с душевыми эффектами. Эта текстура необязательна.