123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 |
- using System;
- using UnityEngine.Assertions;
- using UnityEngine.Experimental.Rendering;
-
- namespace UnityEngine.Rendering
- {
- /// <summary>
- /// Default instance of a RTHandleSystem
- /// </summary>
- public static class RTHandles
- {
- static RTHandleSystem s_DefaultInstance = new RTHandleSystem();
-
- /// <summary>
- /// Maximum allocated width of the default RTHandle System
- /// </summary>
- public static int maxWidth { get { return s_DefaultInstance.GetMaxWidth(); } }
- /// <summary>
- /// Maximum allocated height of the default RTHandle System
- /// </summary>
- public static int maxHeight { get { return s_DefaultInstance.GetMaxHeight(); } }
- /// <summary>
- /// Current properties of the default RTHandle System
- /// </summary>
- public static RTHandleProperties rtHandleProperties { get { return s_DefaultInstance.rtHandleProperties; } }
-
- /// <summary>
- /// Calculate the dimensions (in pixels) of the RTHandles given the scale factor.
- /// </summary>
- /// <param name="scaleFactor">The scale factor to use when calculating the dimensions. The base unscaled size used, is the sizes passed to the last ResetReferenceSize call.</param>
- /// <returns>The calculated dimensions.</returns>
- public static Vector2Int CalculateDimensions(Vector2 scaleFactor)
- {
- return s_DefaultInstance.CalculateDimensions(scaleFactor);
- }
-
- /// <summary>
- /// Calculate the dimensions (in pixels) of the RTHandles given the scale function. The base unscaled size used, is the sizes passed to the last ResetReferenceSize call.
- /// </summary>
- /// <param name="scaleFunc">The scale function to use when calculating the dimensions.</param>
- /// <returns>The calculated dimensions.</returns>
- public static Vector2Int CalculateDimensions(ScaleFunc scaleFunc)
- {
- return s_DefaultInstance.CalculateDimensions(scaleFunc);
- }
-
- /// <summary>
- /// Allocate a new fixed sized RTHandle with the default RTHandle System.
- /// </summary>
- /// <param name="width">With of the RTHandle.</param>
- /// <param name="height">Heigh of the RTHandle.</param>
- /// <param name="slices">Number of slices of the RTHandle.</param>
- /// <param name="depthBufferBits">Bit depths of a depth buffer.</param>
- /// <param name="colorFormat">GraphicsFormat of a color buffer.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="dimension">Texture dimension of the RTHandle.</param>
- /// <param name="enableRandomWrite">Set to true to enable UAV random read writes on the texture.</param>
- /// <param name="useMipMap">Set to true if the texture should have mipmaps.</param>
- /// <param name="autoGenerateMips">Set to true to automatically generate mipmaps.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="msaaSamples">Number of MSAA samples for the RTHandle.</param>
- /// <param name="bindTextureMS">Set to true if the texture needs to be bound as a multisampled texture in the shader.</param>
- /// <param name="useDynamicScale">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="useDynamicScaleExplicit">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="memoryless">Use this property to set the render texture memoryless modes.</param>
- /// <param name="vrUsage">Special treatment of the VR eye texture used in stereoscopic rendering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- int width,
- int height,
- int slices = 1,
- DepthBits depthBufferBits = DepthBits.None,
- GraphicsFormat colorFormat = GraphicsFormat.R8G8B8A8_SRGB,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- TextureDimension dimension = TextureDimension.Tex2D,
- bool enableRandomWrite = false,
- bool useMipMap = false,
- bool autoGenerateMips = true,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- MSAASamples msaaSamples = MSAASamples.None,
- bool bindTextureMS = false,
- bool useDynamicScale = false,
- bool useDynamicScaleExplicit = false,
- RenderTextureMemoryless memoryless = RenderTextureMemoryless.None,
- VRTextureUsage vrUsage = VRTextureUsage.None,
- string name = ""
- )
- {
- return s_DefaultInstance.Alloc(
- width,
- height,
- slices,
- depthBufferBits,
- colorFormat,
- filterMode,
- wrapMode,
- dimension,
- enableRandomWrite,
- useMipMap,
- autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- msaaSamples,
- bindTextureMS,
- useDynamicScale,
- useDynamicScaleExplicit,
- memoryless,
- vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new fixed sized RTHandle with the default RTHandle System.
- /// </summary>
- /// <param name="width">With of the RTHandle.</param>
- /// <param name="height">Heigh of the RTHandle.</param>
- /// <param name="wrapModeU">U coordinate wrapping mode of the RTHandle.</param>
- /// <param name="wrapModeV">V coordinate wrapping mode of the RTHandle.</param>
- /// <param name="wrapModeW">W coordinate wrapping mode of the RTHandle.</param>
- /// <param name="slices">Number of slices of the RTHandle.</param>
- /// <param name="depthBufferBits">Bit depths of a depth buffer.</param>
- /// <param name="colorFormat">GraphicsFormat of a color buffer.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="dimension">Texture dimension of the RTHandle.</param>
- /// <param name="enableRandomWrite">Set to true to enable UAV random read writes on the texture.</param>
- /// <param name="useMipMap">Set to true if the texture should have mipmaps.</param>
- /// <param name="autoGenerateMips">Set to true to automatically generate mipmaps.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="msaaSamples">Number of MSAA samples for the RTHandle.</param>
- /// <param name="bindTextureMS">Set to true if the texture needs to be bound as a multisampled texture in the shader.</param>
- /// <param name="useDynamicScale">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="useDynamicScaleExplicit">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="memoryless">Use this property to set the render texture memoryless modes.</param>
- /// <param name="vrUsage">Special treatment of the VR eye texture used in stereoscopic rendering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- int width,
- int height,
- TextureWrapMode wrapModeU,
- TextureWrapMode wrapModeV,
- TextureWrapMode wrapModeW = TextureWrapMode.Repeat,
- int slices = 1,
- DepthBits depthBufferBits = DepthBits.None,
- GraphicsFormat colorFormat = GraphicsFormat.R8G8B8A8_SRGB,
- FilterMode filterMode = FilterMode.Point,
- TextureDimension dimension = TextureDimension.Tex2D,
- bool enableRandomWrite = false,
- bool useMipMap = false,
- bool autoGenerateMips = true,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- MSAASamples msaaSamples = MSAASamples.None,
- bool bindTextureMS = false,
- bool useDynamicScale = false,
- bool useDynamicScaleExplicit = false,
- RenderTextureMemoryless memoryless = RenderTextureMemoryless.None,
- VRTextureUsage vrUsage = VRTextureUsage.None,
- string name = ""
- )
- {
- return s_DefaultInstance.Alloc(
- width,
- height,
- wrapModeU,
- wrapModeV,
- wrapModeW,
- slices,
- depthBufferBits,
- colorFormat,
- filterMode,
- dimension,
- enableRandomWrite,
- useMipMap,
- autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- msaaSamples,
- bindTextureMS,
- useDynamicScale,
- useDynamicScaleExplicit,
- memoryless,
- vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new fixed sized RTHandle with the default RTHandle System.
- /// </summary>
- /// <param name="width">With of the RTHandle.</param>
- /// <param name="height">Height of the RTHandle.</param>
- /// <param name="info">Struct containing details of allocation</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(int width, int height, RTHandleAllocInfo info)
- {
- return s_DefaultInstance.Alloc(width, height, info);
- }
-
- /// <summary>
- /// Allocate a new fixed sized RTHandle with the default RTHandle System.
- /// </summary>
- /// <param name="descriptor">RenderTexture descriptor of the RTHandle.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- in RenderTextureDescriptor descriptor,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- string name = ""
- )
- {
- var result = s_DefaultInstance.Alloc(
- descriptor.width,
- descriptor.height,
- descriptor.volumeDepth,
- (DepthBits)descriptor.depthBufferBits,
- descriptor.graphicsFormat,
- filterMode,
- wrapMode,
- descriptor.dimension,
- descriptor.enableRandomWrite,
- descriptor.useMipMap,
- descriptor.autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- (MSAASamples)descriptor.msaaSamples,
- descriptor.bindMS,
- descriptor.useDynamicScale,
- descriptor.useDynamicScaleExplicit,
- descriptor.memoryless,
- descriptor.vrUsage,
- name
- );
- return result;
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFactor">Constant scale for the RTHandle size computation.</param>
- /// <param name="slices">Number of slices of the RTHandle.</param>
- /// <param name="depthBufferBits">Bit depths of a depth buffer.</param>
- /// <param name="colorFormat">GraphicsFormat of a color buffer.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="dimension">Texture dimension of the RTHandle.</param>
- /// <param name="enableRandomWrite">Set to true to enable UAV random read writes on the texture.</param>
- /// <param name="useMipMap">Set to true if the texture should have mipmaps.</param>
- /// <param name="autoGenerateMips">Set to true to automatically generate mipmaps.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="msaaSamples">Number of MSAA samples.</param>
- /// <param name="bindTextureMS">Set to true if the texture needs to be bound as a multisampled texture in the shader.</param>
- /// <param name="useDynamicScale">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="useDynamicScaleExplicit">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="memoryless">Use this property to set the render texture memoryless modes.</param>
- /// <param name="vrUsage">Special treatment of the VR eye texture used in stereoscopic rendering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- Vector2 scaleFactor,
- int slices = 1,
- DepthBits depthBufferBits = DepthBits.None,
- GraphicsFormat colorFormat = GraphicsFormat.R8G8B8A8_SRGB,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- TextureDimension dimension = TextureDimension.Tex2D,
- bool enableRandomWrite = false,
- bool useMipMap = false,
- bool autoGenerateMips = true,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- MSAASamples msaaSamples = MSAASamples.None,
- bool bindTextureMS = false,
- bool useDynamicScale = false,
- bool useDynamicScaleExplicit = false,
- RenderTextureMemoryless memoryless = RenderTextureMemoryless.None,
- VRTextureUsage vrUsage = VRTextureUsage.None,
- string name = ""
- )
- {
- return s_DefaultInstance.Alloc(
- scaleFactor,
- slices,
- depthBufferBits,
- colorFormat,
- filterMode,
- wrapMode,
- dimension,
- enableRandomWrite,
- useMipMap,
- autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- msaaSamples,
- bindTextureMS,
- useDynamicScale,
- useDynamicScaleExplicit,
- memoryless,
- vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFactor">Constant scale for the RTHandle size computation.</param>
- /// <param name="descriptor">RenderTexture descriptor of the RTHandle.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- Vector2 scaleFactor,
- in RenderTextureDescriptor descriptor,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- string name = ""
- )
- {
- return s_DefaultInstance.Alloc(
- scaleFactor,
- descriptor.volumeDepth,
- (DepthBits)descriptor.depthBufferBits,
- descriptor.graphicsFormat,
- filterMode,
- wrapMode,
- descriptor.dimension,
- descriptor.enableRandomWrite,
- descriptor.useMipMap,
- descriptor.autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- (MSAASamples)descriptor.msaaSamples,
- descriptor.bindMS,
- descriptor.useDynamicScale,
- descriptor.useDynamicScaleExplicit,
- descriptor.memoryless,
- descriptor.vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFactor">Constant scale for the RTHandle size computation.</param>
- /// <param name="info">Struct containing details of allocation</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(Vector2 scaleFactor, RTHandleAllocInfo info)
- {
- return s_DefaultInstance.Alloc(scaleFactor, info);
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFunc">Function used for the RTHandle size computation.</param>
- /// <param name="slices">Number of slices of the RTHandle.</param>
- /// <param name="depthBufferBits">Bit depths of a depth buffer.</param>
- /// <param name="colorFormat">GraphicsFormat of a color buffer.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="dimension">Texture dimension of the RTHandle.</param>
- /// <param name="enableRandomWrite">Set to true to enable UAV random read writes on the texture.</param>
- /// <param name="useMipMap">Set to true if the texture should have mipmaps.</param>
- /// <param name="autoGenerateMips">Set to true to automatically generate mipmaps.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="msaaSamples">Number of MSAA samples.</param>
- /// <param name="bindTextureMS">Set to true if the texture needs to be bound as a multisampled texture in the shader.</param>
- /// <param name="useDynamicScale">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="useDynamicScaleExplicit">[See Dynamic Resolution documentation](https://docs.unity3d.com/Manual/DynamicResolution.html)</param>
- /// <param name="memoryless">Use this property to set the render texture memoryless modes.</param>
- /// <param name="vrUsage">Special treatment of the VR eye texture used in stereoscopic rendering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- ScaleFunc scaleFunc,
- int slices = 1,
- DepthBits depthBufferBits = DepthBits.None,
- GraphicsFormat colorFormat = GraphicsFormat.R8G8B8A8_SRGB,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- TextureDimension dimension = TextureDimension.Tex2D,
- bool enableRandomWrite = false,
- bool useMipMap = false,
- bool autoGenerateMips = true,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- MSAASamples msaaSamples = MSAASamples.None,
- bool bindTextureMS = false,
- bool useDynamicScale = false,
- bool useDynamicScaleExplicit = false,
- RenderTextureMemoryless memoryless = RenderTextureMemoryless.None,
- VRTextureUsage vrUsage = VRTextureUsage.None,
- string name = ""
- )
- {
- return s_DefaultInstance.Alloc(
- scaleFunc,
- slices,
- depthBufferBits,
- colorFormat,
- filterMode,
- wrapMode,
- dimension,
- enableRandomWrite,
- useMipMap,
- autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- msaaSamples,
- bindTextureMS,
- useDynamicScale,
- useDynamicScaleExplicit,
- memoryless,
- vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFunc">Function used for the RTHandle size computation.</param>
- /// <param name="descriptor">RenderTexture descriptor of the RTHandle.</param>
- /// <param name="filterMode">Filtering mode of the RTHandle.</param>
- /// <param name="wrapMode">Addressing mode of the RTHandle.</param>
- /// <param name="isShadowMap">Set to true if the depth buffer should be used as a shadow map.</param>
- /// <param name="anisoLevel">Anisotropic filtering level.</param>
- /// <param name="mipMapBias">Bias applied to mipmaps during filtering.</param>
- /// <param name="name">Name of the RTHandle.</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(
- ScaleFunc scaleFunc,
- in RenderTextureDescriptor descriptor,
- FilterMode filterMode = FilterMode.Point,
- TextureWrapMode wrapMode = TextureWrapMode.Repeat,
- bool isShadowMap = false,
- int anisoLevel = 1,
- float mipMapBias = 0,
- string name = ""
- )
- {
- Assert.IsFalse(descriptor.graphicsFormat != GraphicsFormat.None && descriptor.depthStencilFormat != GraphicsFormat.None,
- "The RenderTextureDescriptor used to create RTHandle " + name + " contains both graphicsFormat and depthStencilFormat which is not allowed.");
-
- var actualFormat = descriptor.graphicsFormat != GraphicsFormat.None ? descriptor.graphicsFormat : descriptor.depthStencilFormat;
- return s_DefaultInstance.Alloc(
- scaleFunc,
- descriptor.volumeDepth,
- (DepthBits)descriptor.depthBufferBits,
- actualFormat,
- filterMode,
- wrapMode,
- descriptor.dimension,
- descriptor.enableRandomWrite,
- descriptor.useMipMap,
- descriptor.autoGenerateMips,
- isShadowMap,
- anisoLevel,
- mipMapBias,
- (MSAASamples)descriptor.msaaSamples,
- descriptor.bindMS,
- descriptor.useDynamicScale,
- descriptor.useDynamicScaleExplicit,
- descriptor.memoryless,
- descriptor.vrUsage,
- name
- );
- }
-
- /// <summary>
- /// Allocate a new automatically sized RTHandle for the default RTHandle System.
- /// </summary>
- /// <param name="scaleFunc">Function used for the RTHandle size computation.</param>
- /// <param name="info">Struct containing details of allocation</param>
- /// <returns>A new RTHandle.</returns>
- public static RTHandle Alloc(ScaleFunc scaleFunc, RTHandleAllocInfo info)
- {
- return s_DefaultInstance.Alloc(scaleFunc, info);
- }
-
- /// <summary>
- /// Allocate a RTHandle from a regular Texture for the default RTHandle system.
- /// </summary>
- /// <param name="tex">Input texture</param>
- /// <returns>A new RTHandle referencing the input texture.</returns>
- public static RTHandle Alloc(Texture tex)
- {
- return s_DefaultInstance.Alloc(tex);
- }
-
- /// <summary>
- /// Allocate a RTHandle from a regular RenderTexture for the default RTHandle system.
- /// </summary>
- /// <param name="tex">Input texture</param>
- /// <param name="transferOwnership">To transfer ownership of the RenderTexture to the default RTHandles system, false by default</param>
- /// <returns>A new RTHandle referencing the input texture.</returns>
- public static RTHandle Alloc(RenderTexture tex, bool transferOwnership = false)
- {
- return s_DefaultInstance.Alloc(tex, transferOwnership);
- }
-
- /// <summary>
- /// Allocate a RTHandle from a regular render target identifier for the default RTHandle system.
- /// </summary>
- /// <param name="tex">Input render target identifier.</param>
- /// <returns>A new RTHandle referencing the input render target identifier.</returns>
- public static RTHandle Alloc(RenderTargetIdentifier tex)
- {
- return s_DefaultInstance.Alloc(tex);
- }
-
- /// <summary>
- /// Allocate a RTHandle from a regular render target identifier for the default RTHandle system.
- /// </summary>
- /// <param name="tex">Input render target identifier.</param>
- /// <param name="name">Name of the render target.</param>
- /// <returns>A new RTHandle referencing the input render target identifier.</returns>
- public static RTHandle Alloc(RenderTargetIdentifier tex, string name)
- {
- return s_DefaultInstance.Alloc(tex, name);
- }
-
- private static RTHandle Alloc(RTHandle tex)
- {
- Debug.LogError("Allocation a RTHandle from another one is forbidden.");
- return null;
- }
-
- /// <summary>
- /// Initialize the default RTHandle system.
- /// </summary>
- /// <param name="width">Initial reference rendering width.</param>
- /// <param name="height">Initial reference rendering height.</param>
- public static void Initialize(int width, int height)
- {
- s_DefaultInstance.Initialize(width, height);
- }
-
- /// <summary>
- /// Initialize the default RTHandle system.
- /// </summary>
- /// <param name="width">Initial reference rendering width.</param>
- /// <param name="height">Initial reference rendering height.</param>
- /// <param name="useLegacyDynamicResControl">Use legacy hardware DynamicResolution control in the default RTHandle system.</param>
- [Obsolete("useLegacyDynamicResControl is deprecated. Please use SetHardwareDynamicResolutionState() instead.")]
- public static void Initialize(int width, int height, bool useLegacyDynamicResControl = false)
- {
- s_DefaultInstance.Initialize(width, height, useLegacyDynamicResControl);
- }
-
- /// <summary>
- /// Release memory of a RTHandle from the default RTHandle System
- /// </summary>
- /// <param name="rth">RTHandle that should be released.</param>
- public static void Release(RTHandle rth)
- {
- s_DefaultInstance.Release(rth);
- }
-
- /// <summary>
- /// Enable or disable hardware dynamic resolution for the default RTHandle System
- /// </summary>
- /// <param name="hwDynamicResRequested">State of hardware dynamic resolution.</param>
- public static void SetHardwareDynamicResolutionState(bool hwDynamicResRequested)
- {
- s_DefaultInstance.SetHardwareDynamicResolutionState(hwDynamicResRequested);
- }
-
- /// <summary>
- /// Sets the reference rendering size for subsequent rendering for the default RTHandle System
- /// </summary>
- /// <param name="width">Reference rendering width for subsequent rendering.</param>
- /// <param name="height">Reference rendering height for subsequent rendering.</param>
- public static void SetReferenceSize(int width, int height)
- {
- s_DefaultInstance.SetReferenceSize(width, height);
- }
-
- /// <summary>
- /// Reset the reference size of the system and reallocate all textures.
- /// </summary>
- /// <param name="width">New width.</param>
- /// <param name="height">New height.</param>
- public static void ResetReferenceSize(int width, int height)
- {
- s_DefaultInstance.ResetReferenceSize(width, height);
- }
-
- /// <summary>
- /// Returns the ratio against the current target's max resolution
- /// </summary>
- /// <param name="width">width to utilize</param>
- /// <param name="height">height to utilize</param>
- /// <returns> retruns the width,height / maxTargetSize.xy ratio. </returns>
- public static Vector2 CalculateRatioAgainstMaxSize(int width, int height)
- {
- return s_DefaultInstance.CalculateRatioAgainstMaxSize(new Vector2Int(width, height));
- }
- }
- }
|