This commit is contained in:
StarBeats 2024-11-15 17:51:59 +08:00
parent c130954d89
commit f2942dae83
38 changed files with 2740 additions and 1099 deletions

1
.gitignore vendored
View File

@ -53,3 +53,4 @@ sysinfo.txt
crashlytics-build.properties crashlytics-build.properties
TJURP_BurstDebugInformation_DoNotShip/ TJURP_BurstDebugInformation_DoNotShip/
UserSettings/

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom m_Name: Bloom
m_EditorClassIdentifier: m_EditorClassIdentifier:
active: 1 active: 0
skipIterations: skipIterations:
m_OverrideState: 0 m_OverrideState: 0
m_Value: 1 m_Value: 1
@ -80,16 +80,16 @@ MonoBehaviour:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 0.25 m_Value: 0.25
contrast: contrast:
m_OverrideState: 0 m_OverrideState: 1
m_Value: 15 m_Value: 15
colorFilter: colorFilter:
m_OverrideState: 0 m_OverrideState: 1
m_Value: {r: 1, g: 1, b: 1, a: 1} m_Value: {r: 1, g: 1, b: 1, a: 1}
hueShift: hueShift:
m_OverrideState: 0 m_OverrideState: 1
m_Value: 0 m_Value: 0
saturation: saturation:
m_OverrideState: 0 m_OverrideState: 1
m_Value: 0 m_Value: 0
--- !u!114 &9109530758031880643 --- !u!114 &9109530758031880643
MonoBehaviour: MonoBehaviour:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom m_Name: Bloom
m_EditorClassIdentifier: m_EditorClassIdentifier:
active: 1 active: 0
skipIterations: skipIterations:
m_OverrideState: 0 m_OverrideState: 0
m_Value: 1 m_Value: 1

45
Assets/Scenes/Test.cs Normal file
View File

@ -0,0 +1,45 @@
using UnityEditor;
using UnityEngine;
[ExecuteAlways]
public class Test : MonoBehaviour
{
private Material material;
private Texture2D oriTexture;
private Texture2D cvtTexture;
private void Start()
{
material = GetComponent<MeshRenderer>().sharedMaterial;
oriTexture = material.GetTexture("_MainTex") as Texture2D;
ConvertAlpha();
}
void ConvertAlpha()
{
cvtTexture = new Texture2D(oriTexture.width, oriTexture.height, TextureFormat.ARGB32, false);
for (int i = 0; i < cvtTexture.width; i++)
{
for (int j = 0; j < cvtTexture.height; j++)
{
var col = oriTexture.GetPixel(i, j);
//col.r = Mathf.Pow(col.r, 1/2.2f);
//col.g = Mathf.Pow(col.g, 1/2.2f);
//col.b = Mathf.Pow(col.b, 1/2.2f);
cvtTexture.SetPixel(i,j, col);
}
}
cvtTexture.Apply();
}
[ContextMenu("Use Converted")]
private void UseAlpha()
{
}
[ContextMenu("Use Original")]
private void UseOriginal()
{
material.SetTexture("_MainTex", oriTexture);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: Xnwd4ymoVn5T21JNkRdz/wbaTps3w3Z40N+XT4ognLZgPi/O+54tq4M=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -21,19 +21,19 @@ MonoBehaviour:
- {fileID: 11400000, guid: 23cccccf13c3d4170a9b21e52a9bc86b, type: 2} - {fileID: 11400000, guid: 23cccccf13c3d4170a9b21e52a9bc86b, type: 2}
- {fileID: 11400000, guid: a04c28107d77d5e42b7155783b8475b6, type: 2} - {fileID: 11400000, guid: a04c28107d77d5e42b7155783b8475b6, type: 2}
m_DefaultRendererIndex: 0 m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0 m_RequireDepthTexture: 1
m_RequireOpaqueTexture: 1 m_RequireOpaqueTexture: 1
m_OpaqueDownsampling: 0 m_OpaqueDownsampling: 0
m_SupportsTerrainHoles: 1 m_SupportsTerrainHoles: 1
m_SupportsHDR: 1 m_SupportsHDR: 1
m_HDRColorBufferPrecision: 0 m_HDRColorBufferPrecision: 0
m_MSAA: 1 m_MSAA: 1
m_RenderScale: 1 m_RenderScale: 0.75
m_UpscalingFilter: 0 m_UpscalingFilter: 0
m_FsrOverrideSharpness: 1 m_FsrOverrideSharpness: 1
m_FsrSharpness: 1 m_FsrSharpness: 1
m_EnableLODCrossFade: 1 m_EnableLODCrossFade: 1
m_LODCrossFadeDitheringType: 1 m_LODCrossFadeDitheringType: 0
m_ShEvalMode: 0 m_ShEvalMode: 0
m_MainLightRenderingMode: 1 m_MainLightRenderingMode: 1
m_MainLightShadowsSupported: 1 m_MainLightShadowsSupported: 1
@ -74,7 +74,7 @@ MonoBehaviour:
m_ColorGradingMode: 0 m_ColorGradingMode: 0
m_ColorGradingLutSize: 32 m_ColorGradingLutSize: 32
m_UseFastSRGBLinearConversion: 1 m_UseFastSRGBLinearConversion: 1
m_SupportDataDrivenLensFlare: 1 m_SupportDataDrivenLensFlare: 0
m_ShadowType: 1 m_ShadowType: 1
m_LocalShadowsSupported: 0 m_LocalShadowsSupported: 0
m_LocalShadowsAtlasResolution: 256 m_LocalShadowsAtlasResolution: 256
@ -114,3 +114,5 @@ MonoBehaviour:
m_PrefilterNativeRenderPass: 1 m_PrefilterNativeRenderPass: 1
m_ShaderVariantLogLevel: 0 m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0 m_ShadowCascades: 0
superResolution: 5
sSRenderScale: 3

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3}
m_Name: ScreenSpaceAmbientOcclusion m_Name: ScreenSpaceAmbientOcclusion
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Active: 0 m_Active: 1
m_Settings: m_Settings:
AOMethod: 1 AOMethod: 1
Downsample: 1 Downsample: 1
@ -147,8 +147,15 @@ MonoBehaviour:
m_Active: 1 m_Active: 1
v1settings: v1settings:
EnableEdgeDirection: 1 EnableEdgeDirection: 1
Mode: 1
Sharp: 2
GSRV1Material: {fileID: 2100000, guid: d57e64d5723127243b429034bed82c7d, type: 2}
v2settings: v2settings:
EnableEdgeDirection: 1 UseCompute2Pass: 1
GSRV2Material: {fileID: 2100000, guid: faa906817c0647f42a0cec70faeb91c1, type: 2}
GSRV2ComputeShader: {fileID: 7200000, guid: 9a4e6ff1f9a33fa4ea1e9744e313e2fd, type: 3}
FiveSample: 0
Exposure_co_rcp: 1
--- !u!114 &2459758869679212578 --- !u!114 &2459758869679212578
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -203,4 +210,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ee9a04e75c9a5ad478f0d0b896c75181, type: 3} m_Script: {fileID: 11500000, guid: ee9a04e75c9a5ad478f0d0b896c75181, type: 3}
m_Name: FSR m_Name: FSR
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Active: 1 m_Active: 0

View File

@ -1,112 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}
m_Name: PC_Low
m_EditorClassIdentifier:
k_AssetVersion: 11
k_AssetPreviousVersion: 11
m_RendererType: 1
m_RendererData: {fileID: 0}
m_RendererDataList:
- {fileID: 11400000, guid: 13ba41cd2fa191f43890b271bd110ed9, type: 2}
- {fileID: 11400000, guid: a73f6fa069dd14a42b40cbb01bae63b4, type: 2}
- {fileID: 11400000, guid: a04c28107d77d5e42b7155783b8475b6, type: 2}
m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0
m_RequireOpaqueTexture: 1
m_OpaqueDownsampling: 1
m_SupportsTerrainHoles: 0
m_SupportsHDR: 1
m_HDRColorBufferPrecision: 0
m_MSAA: 1
m_RenderScale: 0.8
m_UpscalingFilter: 3
m_FsrOverrideSharpness: 0
m_FsrSharpness: 0.92
m_EnableLODCrossFade: 1
m_LODCrossFadeDitheringType: 0
m_ShEvalMode: 0
m_MainLightRenderingMode: 1
m_MainLightShadowsSupported: 1
m_MainLightShadowmapResolution: 2048
m_AdditionalLightsRenderingMode: 1
m_AdditionalLightsPerObjectLimit: 4
m_AdditionalLightShadowsSupported: 0
m_AdditionalLightsShadowmapResolution: 2048
m_AdditionalLightsShadowResolutionTierLow: 256
m_AdditionalLightsShadowResolutionTierMedium: 512
m_AdditionalLightsShadowResolutionTierHigh: 1024
m_ReflectionProbeBlending: 1
m_ReflectionProbeBoxProjection: 1
m_ShadowDistance: 50
m_ShadowCascadeCount: 1
m_Cascade2Split: 0.25
m_Cascade3Split: {x: 0.1, y: 0.3}
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
m_CascadeBorder: 0.2
m_ShadowDepthBias: 1
m_ShadowNormalBias: 1
m_AnyShadowsSupported: 1
m_SoftShadowsSupported: 0
m_ConservativeEnclosingSphere: 1
m_NumIterationsEnclosingSphere: 64
m_SoftShadowQuality: 2
m_AdditionalLightsCookieResolution: 2048
m_AdditionalLightsCookieFormat: 3
m_UseSRPBatcher: 1
m_SupportsDynamicBatching: 0
m_MixedLightingSupported: 1
m_SupportsLightCookies: 1
m_SupportsLightLayers: 0
m_DebugLevel: 0
m_StoreActionsOptimization: 0
m_EnableRenderGraph: 0
m_UseAdaptivePerformance: 1
m_ColorGradingMode: 0
m_ColorGradingLutSize: 32
m_UseFastSRGBLinearConversion: 0
m_SupportDataDrivenLensFlare: 1
m_ShadowType: 1
m_LocalShadowsSupported: 0
m_LocalShadowsAtlasResolution: 256
m_MaxPixelLights: 0
m_ShadowAtlasResolution: 256
m_VolumeFrameworkUpdateMode: 0
m_Textures:
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
m_PrefilteringModeMainLightShadows: 3
m_PrefilteringModeAdditionalLight: 3
m_PrefilteringModeAdditionalLightShadows: 0
m_PrefilterXRKeywords: 1
m_PrefilteringModeForwardPlus: 0
m_PrefilteringModeDeferredRendering: 1
m_PrefilteringModeScreenSpaceOcclusion: 0
m_PrefilterDebugKeywords: 1
m_PrefilterWriteRenderingLayers: 1
m_PrefilterHDROutput: 1
m_PrefilterSSAODepthNormals: 1
m_PrefilterSSAOSourceDepthLow: 1
m_PrefilterSSAOSourceDepthMedium: 1
m_PrefilterSSAOSourceDepthHigh: 1
m_PrefilterSSAOInterleaved: 1
m_PrefilterSSAOBlueNoise: 1
m_PrefilterSSAOSampleCountLow: 1
m_PrefilterSSAOSampleCountMedium: 1
m_PrefilterSSAOSampleCountHigh: 1
m_PrefilterDBufferMRT1: 1
m_PrefilterDBufferMRT2: 1
m_PrefilterDBufferMRT3: 1
m_PrefilterScreenCoord: 1
m_PrefilterNativeRenderPass: 1
m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0

View File

@ -1,139 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
m_Name: PC_Low_Renderer
m_EditorClassIdentifier:
debugShaders:
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
m_RendererFeatures:
- {fileID: 8597830380581107856}
- {fileID: 375584857543697397}
- {fileID: 6921628297578724829}
m_RendererFeatureMap: 903899892da15177f563e82070583605ddbd78a843900e60
m_UseNativeRenderPass: 0
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
shaders:
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
screenSpaceShadowPS: {fileID: 0}
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3}
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3}
objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3}
dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_TransparentLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_DefaultStencilState:
overrideStencilState: 0
stencilReference: 0
stencilCompareFunction: 8
passOperation: 2
failOperation: 0
zFailOperation: 0
m_ShadowTransparentReceive: 0
m_RenderingMode: 1
m_DepthPrimingMode: 0
m_CopyDepthMode: 1
m_AccurateGbufferNormals: 0
m_IntermediateTextureMode: 0
--- !u!114 &375584857543697397
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a1614fc811f8f184697d9bee70ab9fe5, type: 3}
m_Name: DecalRendererFeature
m_EditorClassIdentifier:
m_Active: 1
m_Settings:
technique: 2
maxDrawDistance: 1000
decalLayers: 0
dBufferSettings:
surfaceData: 2
screenSpaceSettings:
normalBlend: 0
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, type: 3}
--- !u!114 &6921628297578724829
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6b3d386ba5cd94485973aee1479b272e, type: 3}
m_Name: RenderObjects
m_EditorClassIdentifier:
m_Active: 1
settings:
passTag: RenderObjects
Event: 300
filterSettings:
RenderQueueType: 0
LayerMask:
serializedVersion: 2
m_Bits: 1536
PassNames: []
overrideMaterial: {fileID: 2100000, guid: 725a070d0d3a84543b62d9387002f061, type: 2}
overrideMaterialPassIndex: 0
overrideShader: {fileID: 0}
overrideShaderPassIndex: 0
overrideMode: 1
overrideDepthState: 0
depthCompareFunction: 4
enableWrite: 1
stencilSettings:
overrideStencilState: 1
stencilReference: 2
stencilCompareFunction: 8
passOperation: 2
failOperation: 0
zFailOperation: 0
cameraSettings:
overrideCamera: 0
restoreCamera: 1
offset: {x: 0, y: 0, z: 0, w: 0}
cameraFieldOfView: 60
--- !u!114 &8597830380581107856
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a0ec52cecc795714f93f274c2e71e87b, type: 3}
m_Name: GlobalVolumeFeature
m_EditorClassIdentifier:
m_Active: 1
_baseProfile: {fileID: 11400000, guid: f2d4d916a6612574cad220d125febbf2, type: 2}

View File

@ -1,139 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!114 &-2828792358486935836
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6b3d386ba5cd94485973aee1479b272e, type: 3}
m_Name: ScreenStencil
m_EditorClassIdentifier:
m_Active: 1
settings:
passTag: ScreenStencil
Event: 300
filterSettings:
RenderQueueType: 0
LayerMask:
serializedVersion: 2
m_Bits: 1536
PassNames: []
overrideMaterial: {fileID: 2100000, guid: 725a070d0d3a84543b62d9387002f061, type: 2}
overrideMaterialPassIndex: 0
overrideShader: {fileID: 0}
overrideShaderPassIndex: 0
overrideMode: 1
overrideDepthState: 0
depthCompareFunction: 4
enableWrite: 1
stencilSettings:
overrideStencilState: 1
stencilReference: 1
stencilCompareFunction: 8
passOperation: 2
failOperation: 0
zFailOperation: 0
cameraSettings:
overrideCamera: 0
restoreCamera: 1
offset: {x: 0, y: 0, z: 0, w: 0}
cameraFieldOfView: 60
--- !u!114 &-1138028507582284805
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a1614fc811f8f184697d9bee70ab9fe5, type: 3}
m_Name: DecalRendererFeature
m_EditorClassIdentifier:
m_Active: 1
m_Settings:
technique: 2
maxDrawDistance: 1000
decalLayers: 0
dBufferSettings:
surfaceData: 2
screenSpaceSettings:
normalBlend: 0
m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, type: 3}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
m_Name: PC_Low_ScreenRenderer
m_EditorClassIdentifier:
debugShaders:
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
m_RendererFeatures:
- {fileID: 8597830380581107856}
- {fileID: -1138028507582284805}
- {fileID: -2828792358486935836}
m_RendererFeatureMap: 903899892da15177fb3b4a151ae934f0e4f60b69561cbed8
m_UseNativeRenderPass: 0
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
shaders:
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}
screenSpaceShadowPS: {fileID: 0}
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3}
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3}
objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3}
dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_TransparentLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_DefaultStencilState:
overrideStencilState: 1
stencilReference: 1
stencilCompareFunction: 3
passOperation: 2
failOperation: 0
zFailOperation: 0
m_ShadowTransparentReceive: 0
m_RenderingMode: 1
m_DepthPrimingMode: 0
m_CopyDepthMode: 1
m_AccurateGbufferNormals: 0
m_IntermediateTextureMode: 0
--- !u!114 &8597830380581107856
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a0ec52cecc795714f93f274c2e71e87b, type: 3}
m_Name: GlobalVolumeFeature
m_EditorClassIdentifier:
m_Active: 1
_baseProfile: {fileID: 11400000, guid: f2d4d916a6612574cad220d125febbf2, type: 2}

View File

@ -1,5 +1,21 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:yousandi.cn,2023: %TAG !u! tag:yousandi.cn,2023:
--- !u!114 &-8189118008837629952
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3}
m_Name: ChromaticAberration
m_EditorClassIdentifier:
active: 0
intensity:
m_OverrideState: 1
m_Value: 0.459
--- !u!114 &-7893295128165547882 --- !u!114 &-7893295128165547882
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 3 m_ObjectHideFlags: 3
@ -12,7 +28,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom m_Name: Bloom
m_EditorClassIdentifier: m_EditorClassIdentifier:
active: 0 active: 1
skipIterations: skipIterations:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 0 m_Value: 0
@ -61,8 +77,8 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
active: 1 active: 1
postExposure: postExposure:
m_OverrideState: 0 m_OverrideState: 1
m_Value: 0 m_Value: 1
contrast: contrast:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 50 m_Value: 50
@ -70,11 +86,58 @@ MonoBehaviour:
m_OverrideState: 1 m_OverrideState: 1
m_Value: {r: 0.8207547, g: 0.8207547, b: 0.8207547, a: 1} m_Value: {r: 0.8207547, g: 0.8207547, b: 0.8207547, a: 1}
hueShift: hueShift:
m_OverrideState: 0 m_OverrideState: 1
m_Value: 0 m_Value: -33
saturation: saturation:
m_OverrideState: 1 m_OverrideState: 1
m_Value: -10 m_Value: -10
--- !u!114 &-2299945138040312024
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 29fa0085f50d5e54f8144f766051a691, type: 3}
m_Name: FilmGrain
m_EditorClassIdentifier:
active: 0
type:
m_OverrideState: 1
m_Value: 9
intensity:
m_OverrideState: 1
m_Value: 1
response:
m_OverrideState: 1
m_Value: 0.747
texture:
m_OverrideState: 1
m_Value: {fileID: 0}
--- !u!114 &-1918349096863288190
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3}
m_Name: LiftGammaGain
m_EditorClassIdentifier:
active: 0
lift:
m_OverrideState: 0
m_Value: {x: 1, y: 1, z: 1, w: -0.03665241}
gamma:
m_OverrideState: 1
m_Value: {x: 0.9840989, y: 1, z: 0.9917936, w: 1}
gain:
m_OverrideState: 0
m_Value: {x: 1, y: 1, z: 1, w: -0.36652416}
--- !u!114 &11400000 --- !u!114 &11400000
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -91,6 +154,10 @@ MonoBehaviour:
- {fileID: 849379129802519247} - {fileID: 849379129802519247}
- {fileID: -7893295128165547882} - {fileID: -7893295128165547882}
- {fileID: -4709434348940240520} - {fileID: -4709434348940240520}
- {fileID: -1918349096863288190}
- {fileID: 3868631785033536162}
- {fileID: -8189118008837629952}
- {fileID: -2299945138040312024}
--- !u!114 &849379129802519247 --- !u!114 &849379129802519247
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 3 m_ObjectHideFlags: 3
@ -131,3 +198,49 @@ MonoBehaviour:
maxNits: maxNits:
m_OverrideState: 0 m_OverrideState: 0
m_Value: 1000 m_Value: 1000
--- !u!114 &3868631785033536162
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3}
m_Name: DepthOfField
m_EditorClassIdentifier:
active: 0
mode:
m_OverrideState: 1
m_Value: 1
gaussianStart:
m_OverrideState: 0
m_Value: 10
gaussianEnd:
m_OverrideState: 0
m_Value: 30
gaussianMaxRadius:
m_OverrideState: 0
m_Value: 1
highQualitySampling:
m_OverrideState: 0
m_Value: 0
focusDistance:
m_OverrideState: 0
m_Value: 10
aperture:
m_OverrideState: 0
m_Value: 5.6
focalLength:
m_OverrideState: 0
m_Value: 50
bladeCount:
m_OverrideState: 0
m_Value: 5
bladeCurvature:
m_OverrideState: 0
m_Value: 1
bladeRotation:
m_OverrideState: 0
m_Value: 0

View File

@ -72,6 +72,7 @@ namespace UnityEditor.Rendering.Universal
public SerializedProperty useFastSRGBLinearConversion { get; } public SerializedProperty useFastSRGBLinearConversion { get; }
public SerializedProperty supportDataDrivenLensFlare { get; } public SerializedProperty supportDataDrivenLensFlare { get; }
#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER #if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER
public SerializedProperty useAdaptivePerformance { get; } public SerializedProperty useAdaptivePerformance { get; }
#endif #endif

View File

@ -1,6 +1,7 @@
using UnityEditorInternal; using UnityEditorInternal;
using UnityEngine; using UnityEngine;
using UnityEngine.Rendering.Universal; using UnityEngine.Rendering.Universal;
using X.Rendering.Feature;
using Styles = UnityEditor.Rendering.Universal.UniversalRenderPipelineAssetUI.Styles; using Styles = UnityEditor.Rendering.Universal.UniversalRenderPipelineAssetUI.Styles;
namespace UnityEditor.Rendering.Universal namespace UnityEditor.Rendering.Universal
@ -19,17 +20,23 @@ namespace UnityEditor.Rendering.Universal
private SerializedUniversalRenderPipelineAsset m_SerializedURPAsset; private SerializedUniversalRenderPipelineAsset m_SerializedURPAsset;
private SerializedProperty superResolution;
private SerializedProperty ssRenderScale;
/// <inheritdoc/> /// <inheritdoc/>
public override void OnInspectorGUI() public override void OnInspectorGUI()
{ {
m_SerializedURPAsset.Update(); m_SerializedURPAsset.Update();
UniversalRenderPipelineAssetUI.Inspector.Draw(m_SerializedURPAsset, this); UniversalRenderPipelineAssetUI.Inspector.Draw(m_SerializedURPAsset, this);
EditorGUILayout.PropertyField(superResolution, new GUIContent("超分"));
EditorGUILayout.PropertyField(ssRenderScale, new GUIContent("超分比例"));
m_SerializedURPAsset.Apply(); m_SerializedURPAsset.Apply();
} }
void OnEnable() void OnEnable()
{ {
m_SerializedURPAsset = new SerializedUniversalRenderPipelineAsset(serializedObject); m_SerializedURPAsset = new SerializedUniversalRenderPipelineAsset(serializedObject);
superResolution = serializedObject.FindProperty("superResolution");
ssRenderScale = serializedObject.FindProperty("sSRenderScale");
CreateRendererReorderableList(); CreateRendererReorderableList();
} }

View File

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using UnityEngine.Experimental.Rendering; using UnityEngine.Experimental.Rendering;
using X.Rendering.Feature;
namespace UnityEngine.Rendering.Universal namespace UnityEngine.Rendering.Universal
{ {
@ -369,7 +370,7 @@ namespace UnityEngine.Rendering.Universal
void Render(CommandBuffer cmd, ref RenderingData renderingData) void Render(CommandBuffer cmd, ref RenderingData renderingData)
{ {
ref CameraData cameraData = ref renderingData.cameraData; ref CameraData cameraData = ref renderingData.cameraData;
ref ScriptableRenderer renderer = ref cameraData.renderer; UniversalRenderer renderer = cameraData.renderer as UniversalRenderer;
bool isSceneViewCamera = cameraData.isSceneViewCamera; bool isSceneViewCamera = cameraData.isSceneViewCamera;
//Check amount of swaps we have to do //Check amount of swaps we have to do
@ -423,7 +424,7 @@ namespace UnityEngine.Rendering.Universal
return destination; return destination;
} }
void Swap(ref ScriptableRenderer r) void Swap(ScriptableRenderer r)
{ {
--amountOfPassesRemaining; --amountOfPassesRemaining;
if (m_UseSwapBuffer) if (m_UseSwapBuffer)
@ -451,7 +452,7 @@ namespace UnityEngine.Rendering.Universal
using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.StopNaNs))) using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.StopNaNs)))
{ {
Blitter.BlitCameraTexture(cmd, GetSource(), GetDestination(), RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, m_Materials.stopNaN, 0); Blitter.BlitCameraTexture(cmd, GetSource(), GetDestination(), RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, m_Materials.stopNaN, 0);
Swap(ref renderer); Swap(renderer);
} }
} }
@ -461,7 +462,7 @@ namespace UnityEngine.Rendering.Universal
using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.SMAA))) using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.SMAA)))
{ {
DoSubpixelMorphologicalAntialiasing(ref cameraData, cmd, GetSource(), GetDestination()); DoSubpixelMorphologicalAntialiasing(ref cameraData, cmd, GetSource(), GetDestination());
Swap(ref renderer); Swap(renderer);
} }
} }
@ -477,7 +478,7 @@ namespace UnityEngine.Rendering.Universal
using (new ProfilingScope(cmd, ProfilingSampler.Get(markerName))) using (new ProfilingScope(cmd, ProfilingSampler.Get(markerName)))
{ {
DoDepthOfField(cameraData.camera, cmd, GetSource(), GetDestination(), cameraData.pixelRect); DoDepthOfField(cameraData.camera, cmd, GetSource(), GetDestination(), cameraData.pixelRect);
Swap(ref renderer); Swap(renderer);
} }
} }
@ -488,10 +489,41 @@ namespace UnityEngine.Rendering.Universal
{ {
TemporalAA.ExecutePass(cmd, m_Materials.temporalAntialiasing, ref cameraData, source, destination, m_MotionVectors.rt); TemporalAA.ExecutePass(cmd, m_Materials.temporalAntialiasing, ref cameraData, source, destination, m_MotionVectors.rt);
Swap(ref renderer); Swap(renderer);
}
}
var asset = UniversalRenderPipeline.asset;
// SuperResolution
if (asset.SuperResolution == ESuperResolution.GSR1 || asset.SuperResolution == ESuperResolution.GSR2)
{
ref var colorDescriptor = ref cameraData.cameraTargetDescriptor;
colorDescriptor.width = cameraData.camera.pixelWidth;
colorDescriptor.height = cameraData.camera.pixelHeight;
colorDescriptor.enableRandomWrite = true;
renderer.m_ColorBufferSystem.SetCameraSettings(colorDescriptor, FilterMode.Bilinear);
cmd.SetGlobalVector(ShaderPropertyId.scaledScreenParams, new Vector4(colorDescriptor.width, colorDescriptor.height, 1.0f + 1.0f / colorDescriptor.width, 1.0f + 1.0f / colorDescriptor.height));
cmd.SetGlobalVector(ShaderPropertyId.screenSize, new Vector4(colorDescriptor.width, colorDescriptor.height, 1.0f / colorDescriptor.width, 1.0f / colorDescriptor.height));
var dst = renderer.GetCameraColorBackBuffer(cmd);
foreach (var c in renderer.rendererFeatures)
{
if(c.isActive)
{
if (c is ISuperResolutionFeature isr)
{
isr.DoSR(cmd, source, dst, m_MotionVectors, ref renderingData);
}
} }
} }
destination = renderer.GetCameraColorFrontBuffer(cmd);
source = renderer.GetCameraColorBackBuffer(cmd);
}
// Motion blur // Motion blur
if (useMotionBlur) if (useMotionBlur)
@ -499,7 +531,7 @@ namespace UnityEngine.Rendering.Universal
using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.MotionBlur))) using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.MotionBlur)))
{ {
DoMotionBlur(cmd, GetSource(), GetDestination(), ref cameraData); DoMotionBlur(cmd, GetSource(), GetDestination(), ref cameraData);
Swap(ref renderer); Swap(renderer);
} }
} }
@ -510,7 +542,7 @@ namespace UnityEngine.Rendering.Universal
using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.PaniniProjection))) using (new ProfilingScope(cmd, ProfilingSampler.Get(URPProfileId.PaniniProjection)))
{ {
DoPaniniProjection(cameraData.camera, cmd, GetSource(), GetDestination()); DoPaniniProjection(cameraData.camera, cmd, GetSource(), GetDestination());
Swap(ref renderer); Swap(renderer);
} }
} }
@ -615,7 +647,7 @@ namespace UnityEngine.Rendering.Universal
} }
Blitter.BlitCameraTexture(cmd, GetSource(), destination, colorLoadAction, RenderBufferStoreAction.Store, m_Materials.uber, 0); Blitter.BlitCameraTexture(cmd, GetSource(), destination, colorLoadAction, RenderBufferStoreAction.Store, m_Materials.uber, 0);
renderer.ConfigureCameraColorTarget(destination); renderer.ConfigureCameraColorTarget(destination);
Swap(ref renderer); Swap(renderer);
} }
// TODO: Implement swapbuffer in 2DRenderer so we can remove this // TODO: Implement swapbuffer in 2DRenderer so we can remove this
// For now, when render post-processing in the middle of the camera stack (not resolving to screen) // For now, when render post-processing in the middle of the camera stack (not resolving to screen)
@ -647,6 +679,8 @@ namespace UnityEngine.Rendering.Universal
} }
} }
} }
} }
#region Sub-pixel Morphological Anti-aliasing #region Sub-pixel Morphological Anti-aliasing

View File

@ -17,10 +17,7 @@ namespace X.Rendering.Feature
} }
} }
sealed class FSRV1 : ScriptableRenderPass sealed class FSRV1
{
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{ {
} }
} }
}

View File

@ -1,5 +1,8 @@
using System; using System;
using System.Data.Common;
using Unity.Mathematics;
using UnityEngine; using UnityEngine;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Rendering; using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal; using UnityEngine.Rendering.Universal;
@ -9,12 +12,12 @@ namespace X.Rendering.Feature
/// 高通 Snapdragon Game Super Resolution. /// 高通 Snapdragon Game Super Resolution.
/// api 无关,可能在 /// api 无关,可能在
/// </summary> /// </summary>
public sealed class GSR : ScriptableRendererFeature, ISuperResolution public sealed class GSR : ScriptableRendererFeature, ISuperResolutionFeature
{ {
[SerializeField] [SerializeField]
private V1Setting v1settings; private V1Setting v1settings;
[SerializeField] [SerializeField]
private V1Setting v2settings; private V2Setting v2settings;
GSRV1 gsr1; GSRV1 gsr1;
@ -23,22 +26,35 @@ namespace X.Rendering.Feature
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{ {
if (useGSR1) //if (useGSR1)
{ //{
renderer.EnqueuePass(gsr1); // renderer.EnqueuePass(gsr1);
} //}
else //else
{ //{
renderer.EnqueuePass(gsr2); // renderer.EnqueuePass(gsr2);
} //}
} }
public override void Create() public override void Create()
{ {
gsr1 = new GSRV1(v1settings); gsr1 = new GSRV1(v1settings);
gsr2 = new GSRV2(v2settings); gsr2 = new GSRV2(v2settings);
} }
public void DoSR(CommandBuffer cmd, RTHandle source, RTHandle destination, RTHandle motionVector, ref RenderingData renderingData)
{
if (useGSR1)
{
gsr1.DoSR(cmd, source, destination, ref renderingData);
}
else
{
gsr2.DoSR(cmd, source, destination, motionVector, ref renderingData);
}
}
public void SetSR(ESuperResolution resolution) public void SetSR(ESuperResolution resolution)
{ {
switch (resolution) switch (resolution)
@ -62,6 +78,13 @@ namespace X.Rendering.Feature
break; break;
} }
} }
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
gsr1?.Dispose();
gsr2?.Dispose();
}
} }
#region GSR1 #region GSR1
@ -70,18 +93,61 @@ namespace X.Rendering.Feature
{ {
[SerializeField] [SerializeField]
public bool EnableEdgeDirection = true; public bool EnableEdgeDirection = true;
[SerializeField, Range(1, 4)]
public int Mode = 1;
[SerializeField, Range(0.5f, 2.5f)]
public float Sharp = 2;
[SerializeField]
public Material GSRV1Material;
} }
sealed class GSRV1 : ScriptableRenderPass sealed class GSRV1 : IDisposable
{ {
private V1Setting v1settings; private V1Setting v1settings;
private ProfilingSampler profiler;
private static readonly int InputTextureId = Shader.PropertyToID("_InputTexture");
private static readonly int ViewportInfoId = Shader.PropertyToID("_ViewportInfo");
private static readonly int GSR1ParamsId = Shader.PropertyToID("_GSR1Params");
public GSRV1(V1Setting v1settings) public GSRV1(V1Setting v1settings)
{ {
this.v1settings = v1settings; this.v1settings = v1settings;
profiler = new ProfilingSampler(nameof(GSRV1));
} }
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) public void DoSR(CommandBuffer cmd, RTHandle source, RTHandle destination, ref RenderingData renderingData)
{
ref CameraData cameraData = ref renderingData.cameraData;
using (new ProfilingScope(cmd, profiler))
{
if (v1settings.EnableEdgeDirection)
{
v1settings.GSRV1Material.EnableKeyword("UseEdgeDirection");
}
else
{
v1settings.GSRV1Material.DisableKeyword("UseEdgeDirection");
}
cmd.SetRenderTarget(destination);
var pixW = source.referenceSize.x;
var pixH = source.referenceSize.y;
cameraData.imageScalingMode = ImageScalingMode.None;
cameraData.upscalingFilter = ImageUpscalingFilter.None;
cmd.SetGlobalVector(ViewportInfoId, new Vector4(1.0f / pixW, 1.0f / pixH, pixW, pixH));
cmd.SetGlobalVector(GSR1ParamsId, new Vector4(v1settings.Mode, v1settings.Sharp, 0, 0));
cmd.SetGlobalTexture(InputTextureId, source);
cmd.DrawProcedural(Matrix4x4.identity, v1settings.GSRV1Material, 0, MeshTopology.Triangles, 3);
}
}
public void Dispose()
{ {
} }
} }
@ -93,19 +159,268 @@ namespace X.Rendering.Feature
{ {
[SerializeField] [SerializeField]
public bool UseCompute2Pass = false; public bool UseCompute2Pass = false;
[SerializeField]
public Material GSRV2Material;
[SerializeField]
public ComputeShader GSRV2ComputeShader;
[SerializeField]
public bool FiveSample = false;
[SerializeField]
public float Exposure_co_rcp = 1;
} }
sealed class GSRV2 : ScriptableRenderPass sealed class GSRV2 : IDisposable
{ {
private V1Setting v2settings; private V2Setting v2settings;
private static Matrix4x4 prevViewProjMatrix;
private static int cameraStillFrameCnt;
private ProfilingSampler profiler;
public GSRV2(V1Setting v2settings) public static readonly Vector2[] JitterPositions = new Vector2[32];
private static int jitterIndex;
private RTHandle motionDepthClipAlphaBuffer;
private RTHandle prevSceneColorTexture1;
private RTHandle prevSceneColorTexture2;
private RTHandle YCoCgColor;
public float4x4 clipToPrevClip;
public float4 renderSizeParam;
public float4 outputSizeParam;
public float2 jitterOffset;
public float2 scaleRatio;
public float cameraFovAngleHor;
public float minLerpContribution;
public int sameCameraFrmNum;
public GSRV2(V2Setting v2settings)
{ {
for (int i = 0; i < 32; ++i)
{
JitterPositions[i] = new Vector2 { x = Halton(i + 1, 2) - 0.5f, y = Halton(i + 1, 3) - 0.5f };
}
this.v2settings = v2settings; this.v2settings = v2settings;
profiler = new ProfilingSampler(nameof(GSRV2));
} }
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) private void ConvertPass(CommandBuffer cmdBuffer, RTHandle motionVector, ref RenderingData renderingData)
{ {
cmdBuffer.SetGlobalTexture("_DepthTexture", renderingData.cameraData.renderer.cameraDepthTargetHandle);
//cmdBuffer.SetGlobalTexture("_MotionTexture", motionVector);
cmdBuffer.SetGlobalMatrix("_clipToPrevClip", clipToPrevClip);
cmdBuffer.SetGlobalVector("_renderSizeParam", renderSizeParam);
cmdBuffer.SetGlobalVector("_outputSizeParam", outputSizeParam);
cmdBuffer.SetGlobalFloat("_cameraFovAngleHor", cameraFovAngleHor);
cmdBuffer.SetRenderTarget(motionDepthClipAlphaBuffer, loadAction: RenderBufferLoadAction.DontCare, storeAction: RenderBufferStoreAction.Store);
cmdBuffer.DrawProcedural(Matrix4x4.identity, v2settings.GSRV2Material, 0, MeshTopology.Triangles, 3);
}
private void UpscalePass(CommandBuffer cmdBuffer, RTHandle source, RTHandle destination)
{
cmdBuffer.SetGlobalTexture("_PrevSceneColorTexture", prevSceneColorTexture1);
cmdBuffer.SetGlobalTexture("_InputTexture", source);
cmdBuffer.SetGlobalTexture("_MotionDepthClipAlphaBuffer", motionDepthClipAlphaBuffer);
cmdBuffer.SetGlobalMatrix("_clipToPrevClip", clipToPrevClip);
cmdBuffer.SetGlobalVector("_renderSizeParam", renderSizeParam);
cmdBuffer.SetGlobalVector("_outputSizeParam", outputSizeParam);
cmdBuffer.SetGlobalVector("_JitterOffset", GetJitter());
cmdBuffer.SetGlobalVector("_ScaleRatio", scaleRatio.xyxx);
cmdBuffer.SetGlobalFloat("_cameraFovAngleHor", cameraFovAngleHor);
cmdBuffer.SetGlobalFloat("minLerpContribution", minLerpContribution);
cmdBuffer.SetGlobalInt("sameCameraFrmNum", sameCameraFrmNum);
cmdBuffer.SetRenderTarget(destination, loadAction: RenderBufferLoadAction.DontCare, storeAction: RenderBufferStoreAction.Store);
cmdBuffer.DrawProcedural(Matrix4x4.identity, v2settings.GSRV2Material, 1, MeshTopology.Triangles, 3);
cmdBuffer.CopyTexture(destination, prevSceneColorTexture1);
}
private void DispatchConvert(CommandBuffer cmdBuffer, RTHandle source, RTHandle motionVector, ref RenderingData renderingData)
{
var gsrv2 =v2settings.GSRV2ComputeShader;
cmdBuffer.SetComputeTextureParam(gsrv2, 0, "InputDepth", renderingData.cameraData.renderer.cameraDepthTargetHandle);
cmdBuffer.SetComputeTextureParam(gsrv2, 0, "InputVelocity", motionVector);
cmdBuffer.SetComputeTextureParam(gsrv2, 0, "InputColor", source);
cmdBuffer.SetComputeMatrixParam(gsrv2, "_clipToPrevClip", clipToPrevClip);
cmdBuffer.SetComputeVectorParam(gsrv2, "_renderSizeParam", renderSizeParam);
cmdBuffer.SetComputeVectorParam(gsrv2, "_outputSizeParam", outputSizeParam);
cmdBuffer.SetComputeFloatParams(gsrv2, "_cameraFovAngleHor", cameraFovAngleHor);
cmdBuffer.SetComputeFloatParams(gsrv2, "Exposure_co_rcp", v2settings.Exposure_co_rcp);
cmdBuffer.SetComputeTextureParam(gsrv2, 0, "MotionDepthClipAlphaBuffer", motionDepthClipAlphaBuffer);
cmdBuffer.SetComputeTextureParam(gsrv2, 0, "YCoCgColor", YCoCgColor);
cmdBuffer.DispatchCompute(gsrv2, 0, Mathf.CeilToInt(renderSizeParam.x / 8), Mathf.CeilToInt(renderSizeParam.y / 8), 1);
}
private void DispatchUpscale(CommandBuffer cmdBuffer, RTHandle historyIn, RTHandle historyOut, RTHandle destination)
{
var gsrv2 =v2settings.GSRV2ComputeShader;
cmdBuffer.SetComputeTextureParam(gsrv2, 1, "_inputPrevHistoryOutput", historyIn);
cmdBuffer.SetComputeTextureParam(gsrv2, 1, "_inputYCoCgColor", YCoCgColor);
cmdBuffer.SetComputeTextureParam(gsrv2, 1, "_inputMotionDepthClipAlphaBuffer", motionDepthClipAlphaBuffer);
cmdBuffer.SetComputeMatrixParam(gsrv2, "_clipToPrevClip", clipToPrevClip);
cmdBuffer.SetComputeVectorParam(gsrv2, "_renderSizeParam", renderSizeParam);
cmdBuffer.SetComputeVectorParam(gsrv2, "_outputSizeParam", outputSizeParam);
cmdBuffer.SetComputeFloatParams(gsrv2, "_cameraFovAngleHor", cameraFovAngleHor);
cmdBuffer.SetComputeFloatParams(gsrv2, "minLerpContribution", minLerpContribution);
cmdBuffer.SetComputeFloatParams(gsrv2, "Exposure_co_rcp", v2settings.Exposure_co_rcp);
cmdBuffer.SetGlobalVector("_JitterOffset", GetJitter());
if (v2settings.FiveSample)
{
gsrv2.EnableKeyword("SAMPLE_NUMBER");
}
else
{
gsrv2.DisableKeyword("SAMPLE_NUMBER");
}
cmdBuffer.SetComputeTextureParam(gsrv2, 1, "HistoryOutput", historyOut);
cmdBuffer.SetComputeTextureParam(gsrv2, 1, "SceneColorOutput", destination);
cmdBuffer.DispatchCompute(gsrv2, 1, Mathf.CeilToInt(outputSizeParam.x / 8), Mathf.CeilToInt(outputSizeParam.y / 8), 1);
}
public void DoSR(CommandBuffer cmd, RTHandle source, RTHandle destination, RTHandle motionVector, ref RenderingData renderingData)
{
using (new ProfilingScope(cmd, profiler))
{
bool useCompute = v2settings.UseCompute2Pass;
var camera = renderingData.cameraData.camera;
var clip2View = camera.projectionMatrix.inverse;
var vcenter = clip2View.MultiplyPoint(Vector3.zero).normalized;
var vright = clip2View.MultiplyPoint(new Vector3(0, 1, 0)).normalized;
var fv = math.acos(vcenter.x * vright.x + vcenter.y * vright.y + vcenter.z * vright.z);
cameraFovAngleHor = math.tan(fv) * (float)(source.referenceSize.x) / (float)(source.referenceSize.y);
var viewMatrix = camera.worldToCameraMatrix;
var projMatrix = camera.projectionMatrix;
var curViewProjMatrix = projMatrix * viewMatrix;
var invCurViewProjMatrix = viewMatrix.inverse * projMatrix.inverse;
clipToPrevClip = prevViewProjMatrix * invCurViewProjMatrix;
var isCameraStill = IsCameraStill(curViewProjMatrix, prevViewProjMatrix, 1e-5f);
cameraStillFrameCnt = isCameraStill ? cameraStillFrameCnt + 1 : 0;
prevViewProjMatrix = curViewProjMatrix;
minLerpContribution = cameraStillFrameCnt > 5 ? 0.3f : 0;
sameCameraFrmNum = isCameraStill ? 1 : 0;
renderSizeParam = new(source.referenceSize.x, source.referenceSize.y, 1.0f / source.referenceSize.x, 1.0f / source.referenceSize.y);
outputSizeParam = new(camera.pixelWidth, camera.pixelHeight, 1.0f / camera.pixelWidth, 1.0f / camera.pixelHeight);
scaleRatio = new float2((float)(camera.pixelWidth) / (float)(source.referenceSize.x),
math.min(20.0f, math.pow(((float)camera.pixelWidth * camera.pixelHeight) / ((float)source.referenceSize.x * source.referenceSize.y), 3.0f)));
RenderingUtils.ReAllocateIfNeeded(ref motionDepthClipAlphaBuffer, name: "motionDepthClipAlphaBuffer", descriptor: new RenderTextureDescriptor()
{
width = source.referenceSize.x,
height = source.referenceSize.y,
colorFormat = RenderTextureFormat.ARGBHalf,
depthBufferBits = 0,
enableRandomWrite = useCompute ? true : false,
dimension = TextureDimension.Tex2D,
msaaSamples = 1
});
RenderingUtils.ReAllocateIfNeeded(ref prevSceneColorTexture1, name: "prevSceneColorTexture1", descriptor: new RenderTextureDescriptor()
{
width = camera.pixelWidth,
height = camera.pixelHeight,
graphicsFormat = useCompute ? GraphicsFormat.R16G16B16A16_SFloat : GraphicsFormat.B10G11R11_UFloatPack32,
depthBufferBits = 0,
enableRandomWrite = useCompute ? true : false,
dimension = TextureDimension.Tex2D,
msaaSamples = 1,
});
RenderingUtils.ReAllocateIfNeeded(ref prevSceneColorTexture2, name: "prevSceneColorTexture2", descriptor: new RenderTextureDescriptor()
{
width = camera.pixelWidth,
height = camera.pixelHeight,
graphicsFormat = GraphicsFormat.R16G16B16A16_SFloat,
depthBufferBits = 0,
enableRandomWrite = useCompute ? true : false,
dimension = TextureDimension.Tex2D,
msaaSamples = 1,
});
if (v2settings.UseCompute2Pass)
{
RenderingUtils.ReAllocateIfNeeded(ref YCoCgColor, name: "YCoCgColor", descriptor: new RenderTextureDescriptor()
{
width = source.referenceSize.x,
height = source.referenceSize.y,
graphicsFormat = GraphicsFormat.R32_UInt,
depthBufferBits = 0,
enableRandomWrite = true,
dimension = TextureDimension.Tex2D,
msaaSamples = 1
});
DispatchConvert(cmd, source, motionVector, ref renderingData);
if (jitterIndex % 2 == 0)
{
DispatchUpscale(cmd, prevSceneColorTexture1, prevSceneColorTexture2, destination);
}
else
{
DispatchUpscale(cmd, prevSceneColorTexture2, prevSceneColorTexture1, destination);
}
}
else
{
ConvertPass(cmd, motionVector, ref renderingData);
UpscalePass(cmd, source, destination);
}
++jitterIndex;
}
}
public static Vector2 GetJitter()
{
//float jitterX = HaltonSequence.Get((jitterIndex & 1023) + 1, 2) - 0.5f;
//float jitterY = HaltonSequence.Get((jitterIndex & 1023) + 1, 3) - 0.5f;
//return new float2(jitterX, jitterY);
return JitterPositions[jitterIndex % JitterPositions.Length];
}
static float Halton(Int32 Index, Int32 Base)
{
float Result = 0.0f;
float InvBase = 1.0f / Base;
float Fraction = InvBase;
while (Index > 0)
{
Result += (Index % Base) * Fraction;
Index /= Base;
Fraction *= InvBase;
}
return Result;
}
private static bool IsCameraStill(float4x4 curVP, float4x4 prevVP, float threshold = 1e-5f)
{
float vpDiff = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
vpDiff += math.abs(curVP[i][j] - prevVP[i][j]);
}
}
if (vpDiff < threshold)
{
return true;
}
return false;
}
public void Dispose()
{
motionDepthClipAlphaBuffer?.Release();
prevSceneColorTexture1?.Release();
prevSceneColorTexture2?.Release();
YCoCgColor?.Release();
} }
} }
#endregion #endregion

View File

@ -1,4 +1,6 @@
using UnityEngine; using UnityEngine;
using UnityEngine.Rendering.Universal;
using UnityEngine.Rendering;
namespace X.Rendering.Feature namespace X.Rendering.Feature
{ {
public enum ESuperResolution public enum ESuperResolution
@ -34,8 +36,10 @@ namespace X.Rendering.Feature
Factor05, Factor05,
} }
public interface ISuperResolution public interface ISuperResolutionFeature
{ {
public void SetSR(ESuperResolution resolution); public void SetSR(ESuperResolution resolution);
public void DoSR(CommandBuffer cmd, RTHandle source, RTHandle destination, RTHandle motionVector, ref RenderingData renderingData);
} }
} }

View File

@ -0,0 +1,242 @@
Shader "MRP/SR/GSR1"
{
SubShader
{
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 5.0
#pragma multi_compile_fragment _ UseEdgeDirection
#include "UnityCG.cginc"
struct Varyings
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float2 GetFullScreenTriangleTexCoord(uint vertexID)
{
#if UNITY_UV_STARTS_AT_TOP
return float2((vertexID << 1) & 2, 1.0 - (vertexID & 2));
#else
return float2((vertexID << 1) & 2, vertexID & 2);
#endif
}
float4 GetFullScreenTriangleVertexPosition(uint vertexID, float z = UNITY_NEAR_CLIP_VALUE)
{
// note: the triangle vertex position coordinates are x2 so the returned UV coordinates are in range -1, 1 on the screen.
float2 uv = float2((vertexID << 1) & 2, vertexID & 2);
float4 pos = float4(uv * 2.0 - 1.0, z, 1.0);
return pos;
}
Varyings vert(uint vertexID: SV_VertexID)
{
Varyings o;
o.vertex = GetFullScreenTriangleVertexPosition(vertexID);
o.uv = GetFullScreenTriangleTexCoord(vertexID);
return o;
}
/*
* Operation modes:
* RGBA -> 1
* RGBY -> 3
* LERP -> 4
*/
#define EdgeThreshold 8.0/255.0
#define SGSR_H 1
float4 _ViewportInfo;
float4 _GSR1Params;
#define OperationMode _GSR1Params.x
#define EdgeSharpness _GSR1Params.y
SamplerState samLinearClamp;
Texture2D<float4> _InputTexture;
half4 SGSRRH(float2 p)
{
half4 res = _InputTexture.GatherRed(samLinearClamp, p);
return res;
}
half4 SGSRGH(float2 p)
{
half4 res = _InputTexture.GatherGreen(samLinearClamp, p);
return res;
}
half4 SGSRBH(float2 p)
{
half4 res = _InputTexture.GatherBlue(samLinearClamp, p);
return res;
}
half4 SGSRAH(float2 p)
{
half4 res = _InputTexture.GatherAlpha(samLinearClamp, p);
return res;
}
half4 SGSRRGBH(float2 p)
{
half4 res = _InputTexture.SampleLevel(samLinearClamp, p, 0);
return res;
}
half4 SGSRH(float2 p, uint channel)
{
if (channel == 0)
return SGSRRH(p);
if (channel == 1)
return SGSRGH(p);
if (channel == 2)
return SGSRBH(p);
return SGSRAH(p);
}
half fastLanczos2(half x)
{
half wA = x- half(4.0);
half wB = x*wA-wA;
wA *= wA;
return wB*wA;
}
#if defined(UseEdgeDirection)
half2 weightY(half dx, half dy, half c, half3 data)
#else
half2 weightY(half dx, half dy, half c, half data)
#endif
{
#if defined(UseEdgeDirection)
half std = data.x;
half2 dir = data.yz;
half edgeDis = ((dx*dir.y)+(dy*dir.x));
half x = (((dx*dx)+(dy*dy))+((edgeDis*edgeDis)*((clamp(((c*c)*std),0.0,1.0)*0.7)+-1.0)));
#else
half std = data;
half x = ((dx*dx)+(dy* dy))* half(0.5) + clamp(abs(c)*std, 0.0, 1.0);
#endif
half w = fastLanczos2(x);
return half2(w, w * c);
}
half2 edgeDirection(half4 left, half4 right)
{
half2 dir;
half RxLz = (right.x + (-left.z));
half RwLy = (right.w + (-left.y));
half2 delta;
delta.x = (RxLz + RwLy);
delta.y = (RxLz + (-RwLy));
half lengthInv = rsqrt((delta.x * delta.x+ 3.075740e-05) + (delta.y * delta.y));
dir.x = (delta.x * lengthInv);
dir.y = (delta.y * lengthInv);
return dir;
}
void SgsrYuvH(
out half4 pix,
float2 uv,
float4 con1)
{
int mode = OperationMode;
half edgeThreshold = EdgeThreshold;
half edgeSharpness = EdgeSharpness;
if(mode == 1)
pix.xyz = SGSRRGBH(uv).xyz;
else
pix.xyzw = SGSRRGBH(uv).xyzw;
float xCenter;
xCenter = abs(uv.x+-0.5);
float yCenter;
yCenter = abs(uv.y+-0.5);
//todo: config the SR region based on needs
//if ( mode!=4 && xCenter*xCenter+yCenter*yCenter<=0.4 * 0.4)
if ( mode!=4)
{
float2 imgCoord = ((uv.xy*con1.zw)+ float2(-0.5,0.5));
float2 imgCoordPixel = floor(imgCoord);
float2 coord = (imgCoordPixel*con1.xy);
half2 pl = (imgCoord+(-imgCoordPixel));
half4 left = SGSRH(coord, mode);
half edgeVote = abs(left.z - left.y) + abs(pix[mode] - left.y) + abs(pix[mode] - left.z) ;
if(edgeVote > edgeThreshold)
{
coord.x += con1.x;
half4 right = SGSRH(coord + float2(con1.x, 0.0), mode);
half4 upDown;
upDown.xy = SGSRH(coord + float2(0.0, -con1.y), mode).wz;
upDown.zw = SGSRH(coord + float2(0.0, con1.y), mode).yx;
half mean = (left.y+left.z+right.x+right.w)* half(0.25);
left = left - half4(mean,mean,mean,mean);
right = right - half4(mean, mean, mean, mean);
upDown = upDown - half4(mean, mean, mean, mean);
pix.w =pix[mode] - mean;
half sum = (((((abs(left.x)+abs(left.y))+abs(left.z))+abs(left.w))+(((abs(right.x)+abs(right.y))+abs(right.z))+abs(right.w)))+(((abs(upDown.x)+abs(upDown.y))+abs(upDown.z))+abs(upDown.w)));
half sumMean = 1.014185e+01/sum;
half std = (sumMean*sumMean);
#if defined(UseEdgeDirection)
half3 data = half3(std, edgeDirection(left, right));
#else
half data = std;
#endif
half2 aWY = weightY(pl.x, pl.y+1.0, upDown.x,data);
aWY += weightY(pl.x-1.0, pl.y+1.0, upDown.y,data);
aWY += weightY(pl.x-1.0, pl.y-2.0, upDown.z,data);
aWY += weightY(pl.x, pl.y-2.0, upDown.w,data);
aWY += weightY(pl.x+1.0, pl.y-1.0, left.x,data);
aWY += weightY(pl.x, pl.y-1.0, left.y,data);
aWY += weightY(pl.x, pl.y, left.z,data);
aWY += weightY(pl.x+1.0, pl.y, left.w,data);
aWY += weightY(pl.x-1.0, pl.y-1.0, right.x,data);
aWY += weightY(pl.x-2.0, pl.y-1.0, right.y,data);
aWY += weightY(pl.x-2.0, pl.y, right.z,data);
aWY += weightY(pl.x-1.0, pl.y, right.w,data);
half finalY = aWY.y/aWY.x;
half max4 = max(max(left.y,left.z),max(right.x,right.w));
half min4 = min(min(left.y,left.z),min(right.x,right.w));
finalY = clamp(edgeSharpness*finalY, min4, max4);
half deltaY = finalY -pix.w;
pix.x = saturate((pix.x+deltaY));
pix.y = saturate((pix.y+deltaY));
pix.z = saturate((pix.z+deltaY));
}
}
pix.w = 1.0; //assume alpha channel is not used
}
fixed4 frag (Varyings i) : SV_Target
{
half4 OutColor = half4(0, 0, 0, 1);
SgsrYuvH(OutColor, i.uv, _ViewportInfo);
return OutColor;
}
ENDHLSL
}
}
}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: bfe84e33ceb6d1147a989c43cec74049
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,418 @@
#pragma enable_d3d11_debug_symbols
#pragma kernel ConvertKernel
#pragma kernel UpscaleKernel
Texture2D InputVelocity;
#pragma multi_compile_local __ SAMPLE_NUMBER
Texture2D InputDepth;
Texture2D InputColor;
float Exposure_co_rcp;
float _cameraFovAngleHor;
float4x4 _clipToPrevClip;
SamplerState PointClamp;
SamplerState PointClamp_Velocity;
float4 _renderSizeParam;
float4 _outputSizeParam;
float2 _JitterOffset;
RWTexture2D<uint> YCoCgColor;
RWTexture2D<half4> MotionDepthClipAlphaBuffer;
void Convert(uint2 DisThreadID)
{
int2 PixelOffset;
PixelOffset.x = 0; //store int2(1, 1) - int2(1, 1)
float2 gatherCoord = float2(DisThreadID) * _renderSizeParam.zw;
float2 ViewportUV = gatherCoord + float2(0.5f, 0.5f) * _renderSizeParam.zw;
gatherCoord = float2(DisThreadID) * _renderSizeParam.zw;
float4 topleft = InputDepth.GatherRed(PointClamp, gatherCoord);
float4 topRight = InputDepth.GatherRed(PointClamp, gatherCoord + float2(_renderSizeParam.zw.x * 2.0, 0.0)).xyzw;
float4 bottomLeft = InputDepth.GatherRed(PointClamp, gatherCoord + float2(0.0, _renderSizeParam.zw.y * 2.0)).xyzw;
float4 bottomRight = InputDepth.GatherRed(PointClamp, gatherCoord + float2(_renderSizeParam.zw.x * 2.0, _renderSizeParam.zw.y * 2.0)).xyzw;
float maxC = max(max(max(topleft.y, topRight.x), bottomLeft.z), bottomRight.w);
float topleft4 = max(max(max(topleft.y, topleft.x), topleft.z), topleft.w);
float topLeftMax9 = max(bottomLeft.w, max(max(maxC, topleft4), topRight.w));
float depthclip = 0.0;
if (maxC > 1.0e-05f)
{
float topRight4 = max(max(max(topRight.y, topRight.x), topRight.z), topRight.w);
float bottomLeft4 = max(max(max(bottomLeft.y, bottomLeft.x), bottomLeft.z), bottomLeft.w);
float bottomRight4 = max(max(max(bottomRight.y, bottomRight.x), bottomRight.z), bottomRight.w);
float Wdepth = 0.f;
float Ksep = 1.37e-05f;
float Kfov = _cameraFovAngleHor; /** (_renderSizeParam.xy.x / _renderSizeParam.xy.y)*/
float diagonal_length = length(float2(_renderSizeParam.xy));
float Ksep_Kfov_diagonal = Ksep * Kfov * diagonal_length;
float Depthsep = Ksep_Kfov_diagonal * maxC;
#define EPSILON 1.19e-07f /*1.192092896e-07f*/
Wdepth += saturate(Depthsep / (abs(maxC - topleft4) + EPSILON));
Wdepth += saturate(Depthsep / (abs(maxC - topRight4) + EPSILON));
Wdepth += saturate(Depthsep / (abs(maxC - bottomLeft4) + EPSILON));
Wdepth += saturate(Depthsep / (abs(maxC - bottomRight4) + EPSILON));
depthclip = saturate(1.0f - Wdepth * 0.25);
}
float4 EncodedVelocity = InputVelocity[DisThreadID];
float2 motion;
if (float(EncodedVelocity.x) > 0.0f)
{
motion = EncodedVelocity.xy;// DecodeVelocityFromTexture(EncodedVelocity).xy;
}
else
{
float2 ScreenPos = float2(2.0f * ViewportUV.x - 1.0f, 1.0f - 2.0f * ViewportUV.y);
float3 Position = float3(ScreenPos, topLeftMax9);
float4 CurClip = float4(Position, 1.0f);
float4 PreClip = mul(CurClip, _clipToPrevClip);
float2 PreScreen = PreClip.xy / PreClip.w;
motion = Position.xy - PreScreen;
}
float3 Colorrgb = InputColor[DisThreadID].xyz;
///simple tonemap
float ColorMax = (max(max(Colorrgb.x, Colorrgb.y), Colorrgb.z) + Exposure_co_rcp).x;
Colorrgb /= ColorMax.xxx;
float3 Colorycocg;
Colorycocg.x = 0.25f * (Colorrgb.x + 2.0f * Colorrgb.y + Colorrgb.z),
Colorycocg.y = saturate(0.5f * Colorrgb.x + 0.5 - 0.5f * Colorrgb.z),
Colorycocg.z = saturate(Colorycocg.x + Colorycocg.y - Colorrgb.x);
//now color YCoCG all in the range of [0,1]
uint x11 = Colorycocg.x * 2047.5f;
uint y11 = Colorycocg.y * 2047.5f;
uint z10 = Colorycocg.z * 1023.5f;
YCoCgColor[DisThreadID] = (x11 << 21) | (y11 << 10) | z10;
MotionDepthClipAlphaBuffer[DisThreadID] = half4(motion, depthclip, ColorMax);
}
#define TILE_SIZE_X 8
#define TILE_SIZE_Y 8
[numthreads(TILE_SIZE_X, TILE_SIZE_Y, 1)]
void ConvertKernel(uint2 uGroupId : SV_GroupID,
uint2 uGroupThreadId : SV_GroupThreadID,
uint2 uDispatchThreadId : SV_DispatchThreadID)
{
Convert(uDispatchThreadId);
}
#define five_sample_use SAMPLE_NUMBER
Texture2D<uint> _inputYCoCgColor;
Texture2D<half4> _inputMotionDepthClipAlphaBuffer;
Texture2D<float4> _inputPrevHistoryOutput;
SamplerState LinearClamp1;
SamplerState LinearClamp2;
float ValidReset;
float minLerpContribution;// 0.0 or 0.3, when camera move 0.0, camera freeze 0.3
RWTexture2D<float4> HistoryOutput;
RWTexture2D<float4> SceneColorOutput;
float FastLanczos(float base)
{
float y = base - 1.0f;
float y2 = y * y;
float y_temp = 0.75f * y + y2;
return y_temp * y2;
}
float3 DecodeColor(uint sample32)
{
uint x11 = sample32 >> 21;
uint y11 = sample32 & (2047 << 10);
uint z10 = sample32 & 1023;
float3 samplecolor;
samplecolor.x = ((float)x11 * (1.0f / 2047.5f));
samplecolor.y = ((float)y11 * (4.76953602e-7f)) - 0.5f;
samplecolor.z = ((float)z10 * (1.0f / 1023.5f)) - 0.5f;
return samplecolor;
}
void Update(uint2 DisThreadID)
{
float2 HistoryInfo_ViewportSizeInverse = _outputSizeParam.zw;
float2 Hruv = (DisThreadID + 0.5f) * HistoryInfo_ViewportSizeInverse;
float2 srcOutputPos = Hruv * _renderSizeParam.xy;
int2 InputPos = srcOutputPos;
float2 Jitteruv;
Jitteruv.x = saturate(Hruv.x + _JitterOffset.x * HistoryInfo_ViewportSizeInverse.x);
Jitteruv.y = saturate(Hruv.y + _JitterOffset.y * HistoryInfo_ViewportSizeInverse.y);
float4 mda = _inputMotionDepthClipAlphaBuffer.SampleLevel(LinearClamp1, Jitteruv, 0).xyzw;
float2 PrevUV;
PrevUV.x = -0.5f * mda.x + Hruv.x;
PrevUV.y = 0.5f * mda.y + Hruv.y;
PrevUV.x = clamp(PrevUV.x, 0.0f, 1.0f);
PrevUV.y = clamp(PrevUV.y, 0.0f, 1.0f);
float depthclip = mda.z;
float ColorMax = mda.w;
float3 HistoryColor = _inputPrevHistoryOutput.SampleLevel(LinearClamp2, PrevUV, 0).xyz;
float Biasmax_viewportXScale = min(float(_outputSizeParam.x) / float(_renderSizeParam.x), 1.99);
float2 _ScaleRatio = min(20.0, pow((float(_outputSizeParam.x) / float(_renderSizeParam.x)) * (float(_outputSizeParam.y) / float(_renderSizeParam.y)), 3.0));
/////upsample and compute box
float4 Upsampledcw = float4(0.0f, 0.0f, 0.0f, 0.0f);
float kernelfactor = ValidReset;
float biasmax = Biasmax_viewportXScale - Biasmax_viewportXScale * kernelfactor;
float biasmin = max(1.0f, 0.3f + 0.3f * biasmax);
float biasfactor = max(0.25f * depthclip, kernelfactor);
float kernelbias = lerp(biasmax, biasmin, biasfactor);
float motion_viewport_len = length(mda.xy * _outputSizeParam.xy);
float curvebias = lerp(-2.0f, -3.0f, saturate(motion_viewport_len * 0.02f));
float3 rectboxcenter = float3(0.0f, 0.0f, 0.0f);
float3 rectboxvar = float3(0.0f, 0.0f, 0.0f);
float rectboxweight = 0.0f;
float2 InputPosf = float2(InputPos);
float2 srcpos = InputPosf + float2(0.5f, 0.5f) - _JitterOffset; //fSrcUnjitteredPos
float kernelbias2 = kernelbias * kernelbias * 0.25f;
float2 srcpos_srcOutputPos = srcpos - srcOutputPos;
int2 InputPosBtmRight = int2(1, 1) + InputPos;
float2 gatherCoord = InputPosf * _renderSizeParam.zw;
uint4 topleft = _inputYCoCgColor.GatherRed(PointClamp, gatherCoord);
uint2 topRight;
uint2 bottomLeft;
#if five_sample_use
uint2 btmRight = _inputYCoCgColor.GatherRed(PointClamp, gatherCoord + float2(_renderSizeParam.zw.x, _renderSizeParam.zw.y)).xz;
bottomLeft.y = btmRight.x;
topRight.x = btmRight.y;
#else
topRight = _inputYCoCgColor.GatherRed(PointClamp, gatherCoord + float2(_renderSizeParam.zw.x, 0.0f)).yz;
bottomLeft = _inputYCoCgColor.GatherRed(PointClamp, gatherCoord + float2(0.0f, _renderSizeParam.zw.y)).xy;
#endif
float3 rectboxmin;
float3 rectboxmax;
{
float3 samplecolor = DecodeColor(bottomLeft.y);
float2 baseoffset = srcpos_srcOutputPos + float2(0.0f, 1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw = float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = samplecolor;
rectboxmax = samplecolor;
float3 wsample = samplecolor * boxweight;
rectboxcenter = wsample;
rectboxvar = (samplecolor * wsample);
rectboxweight = boxweight;
}
{
float3 samplecolor = DecodeColor(topRight.x);
float2 baseoffset = srcpos_srcOutputPos + float2(1.0f, 0.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(topleft.x);
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0f, 0.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(topleft.y);
float2 baseoffset = srcpos_srcOutputPos;
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(topleft.z);
float2 baseoffset = srcpos_srcOutputPos + float2(0.0f, -1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
#if !five_sample_use
{
uint btmRight = _inputYCoCgColor[InputPosBtmRight].x;
float3 samplecolor = DecodeColor(btmRight);
float2 baseoffset = srcpos_srcOutputPos + float2(1.0f, 1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(bottomLeft.x);
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0f, 1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(topRight.y);
float2 baseoffset = srcpos_srcOutputPos + float2(1.0f, -1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 samplecolor = DecodeColor(topleft.w);
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0f, -1.0f);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
#endif
rectboxweight = 1.0f / rectboxweight;
rectboxcenter *= rectboxweight;
rectboxvar *= rectboxweight;
rectboxvar = sqrt(abs(rectboxvar - rectboxcenter * rectboxcenter));
////Upsampledcw.xyz = (Upsampledcw.w > 0.00025f) ? clamp(Upsampledcw.xyz / Upsampledcw.w, rectboxmin, rectboxmax) : Upsampledcw.xyz;
////Upsampledcw.w = (Upsampledcw.w > 0.00025f) ? Upsampledcw.w * (1.0f / 3.0f) : 0.0f;
float3 bias = float3(0.05f, 0.05f, 0.05f);
Upsampledcw.xyz = clamp(Upsampledcw.xyz / Upsampledcw.w, rectboxmin - bias, rectboxmax + bias);
Upsampledcw.w = Upsampledcw.w * (1.0f / 3.0f);
float baseupdate = 1.0f - depthclip;
baseupdate = min(baseupdate, lerp(baseupdate, Upsampledcw.w * 10.0f, saturate(10.0f * motion_viewport_len)));
baseupdate = min(baseupdate, lerp(baseupdate, Upsampledcw.w, saturate(motion_viewport_len * 0.05f)));
float basealpha = baseupdate;
float boxscale = max(depthclip, saturate(motion_viewport_len * 0.05f));
float boxsize = lerp(_ScaleRatio.y, 1.0f, boxscale);
float3 sboxvar = rectboxvar * boxsize;
float3 boxmin = rectboxcenter - sboxvar;
float3 boxmax = rectboxcenter + sboxvar;
rectboxmax = min(rectboxmax, boxmax);
rectboxmin = max(rectboxmin, boxmin);
float3 clampedcolor = clamp(HistoryColor, rectboxmin, rectboxmax);
float startLerpValue = minLerpContribution;
if ((abs(mda.x) + abs(mda.y)) > 0.000001f)
startLerpValue = 0.0f;
float lerpcontribution = (any(rectboxmin > HistoryColor) || any(HistoryColor > rectboxmax)) ? startLerpValue : 1.0f;
HistoryColor = lerp(clampedcolor, HistoryColor, saturate(lerpcontribution));
float basemin = min(basealpha, 0.1f);
basealpha = lerp(basemin, basealpha, saturate(lerpcontribution));
// const float EPSILON = 1.192e-07f /*1.192092896e-07f*/;
////blend color
float alphasum = max( 1.192e-07f, basealpha + Upsampledcw.w);
float alpha = saturate(Upsampledcw.w / alphasum + ValidReset);
Upsampledcw.xyz = lerp(HistoryColor, Upsampledcw.xyz, alpha.xxx);
Upsampledcw.x = clamp(Upsampledcw.x, rectboxmin.x, rectboxmax.x);
HistoryOutput[DisThreadID] = float4(Upsampledcw.xyz, 0.0f);
////ycocg to grb
float x_z = Upsampledcw.x - Upsampledcw.z;
Upsampledcw.rgb = float3(
saturate(x_z + Upsampledcw.y),
saturate(Upsampledcw.x + Upsampledcw.z),
saturate(x_z - Upsampledcw.y));
float compMax = max(Upsampledcw.x, Upsampledcw.y);
compMax = clamp(max(compMax, Upsampledcw.z), 0.0f, 1.0f);
float scale = min(Exposure_co_rcp / ((1.0f + 1.0f / 65504.0f) - compMax), ColorMax);
if (ColorMax > 4000.0f) scale = ColorMax;
Upsampledcw.xyz = Upsampledcw.xyz * scale.xxx;
SceneColorOutput[DisThreadID] = float4( Upsampledcw.xyz,0);
}
[numthreads(TILE_SIZE_X, TILE_SIZE_Y, 1)]
void UpscaleKernel(uint2 uGroupId : SV_GroupID,
uint2 uGroupThreadId : SV_GroupThreadID,
uint2 uDispatchThreadId : SV_DispatchThreadID)
{
Update(uDispatchThreadId);
}

View File

@ -1,8 +1,7 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 13ba41cd2fa191f43890b271bd110ed9 guid: 9a4e6ff1f9a33fa4ea1e9744e313e2fd
NativeFormatImporter: ComputeShaderImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

View File

@ -0,0 +1,437 @@
Shader "MRP/SR/GSR2"
{
SubShader
{
HLSLINCLUDE
#include "UnityCG.cginc"
struct Varyings
{
precise float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
float2 GetFullScreenTriangleTexCoord(uint vertexID)
{
#if UNITY_UV_STARTS_AT_TOP
return float2((vertexID << 1) & 2, 1.0 - (vertexID & 2));
#else
return float2((vertexID << 1) & 2, vertexID & 2);
#endif
}
float4 GetFullScreenTriangleVertexPosition(uint vertexID, float z = UNITY_NEAR_CLIP_VALUE)
{
// note: the triangle vertex position coordinates are x2 so the returned UV coordinates are in range -1, 1 on the screen.
float2 uv = float2((vertexID << 1) & 2, vertexID & 2);
float4 pos = float4(uv * 2.0 - 1.0, z, 1.0);
return pos;
}
Varyings vert(uint vertexID: SV_VertexID)
{
Varyings o;
o.vertex = GetFullScreenTriangleVertexPosition(vertexID);
o.uv = GetFullScreenTriangleTexCoord(vertexID);
return o;
}
ENDHLSL
Pass
{
Name "Convert"
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma enable_d3d11_debug_symbols
#pragma target 5.0
float4x4 _clipToPrevClip;
float4 _renderSizeParam;
float _cameraFovAngleHor;
SamplerState samLinearClamp;
Texture2D _DepthTexture;
Texture2D _MotionVectorTexture;
float2 decodeVelocityFromTexture(float2 ev)
{
const float inv_div = 1.0f / (0.499f * 0.5f);
float2 dv;
dv.xy = ev.xy * inv_div - 32767.0f / 65535.0f * inv_div;
//dv.z = uintBitsToFloat((uint(round(ev.z * 65535.0f)) << 16) | uint(round(ev.w * 65535.0f)));
return dv;
}
float4 frag(Varyings i) : SV_Target
{
uint2 inputPos = uint2(i.uv * _renderSizeParam.xy);
float2 gatherCoord = i.uv - 0.5 * _renderSizeParam.zw;
// texture gather to find nearest depth
// a b c d
// e f g h
// i j k l
// m n o p
//btmLeft mnji
//btmRight oplk
//topLeft efba
//topRight ghdc
float4 btmLeft = _DepthTexture.GatherRed(samLinearClamp, gatherCoord, 0);
float2 v10 = float2(_renderSizeParam.z * 2.0f, 0.0);
float4 btmRight = _DepthTexture.GatherRed(samLinearClamp, (gatherCoord + v10), 0);
float2 v12 = float2(0.0, _renderSizeParam.w * 2.0f);
float4 topLeft = _DepthTexture.GatherRed(samLinearClamp, (gatherCoord + v12), 0);
float2 v14 = float2(_renderSizeParam.z * 2.0f, _renderSizeParam.w * 2.0f);
float4 topRight = _DepthTexture.GatherRed(samLinearClamp, (gatherCoord + v14), 0);
float maxC = max(max(max(btmLeft.z, btmRight.w), topLeft.y), topRight.x);
float btmLeft4 = max(max(max(btmLeft.y, btmLeft.x), btmLeft.z), btmLeft.w);
float btmLeftMax9 = max(topLeft.x, max(max(maxC, btmLeft4), btmRight.x));
float depthclip = 0.0;
if (maxC > 1.0e-05f)
{
float btmRight4 = max(max(max(btmRight.y, btmRight.x), btmRight.z), btmRight.w);
float topLeft4 = max(max(max(topLeft.y, topLeft.x), topLeft.z), topLeft.w);
float topRight4 = max(max(max(topRight.y, topRight.x), topRight.z), topRight.w);
float Wdepth = 0.0;
float Ksep = 1.37e-05f;
float Kfov = _cameraFovAngleHor;
float diagonal_length = length(_renderSizeParam.xy);
float Ksep_Kfov_diagonal = Ksep * Kfov * diagonal_length;
float Depthsep = Ksep_Kfov_diagonal * (1.0 - maxC);
float EPSILON = 1.19e-07f;
Wdepth += clamp((Depthsep / (abs(maxC - btmLeft4) + EPSILON)), 0.0, 1.0);
Wdepth += clamp((Depthsep / (abs(maxC - btmRight4) + EPSILON)), 0.0, 1.0);
Wdepth += clamp((Depthsep / (abs(maxC - topLeft4) + EPSILON)), 0.0, 1.0);
Wdepth += clamp((Depthsep / (abs(maxC - topRight4) + EPSILON)), 0.0, 1.0);
depthclip = clamp(1.0f - Wdepth * 0.25, 0.0, 1.0);
}
//refer to ue/fsr2 PostProcessFFX_FSR2ConvertVelocity.usf, and using nearest depth for dilated motion
float4 EncodedVelocity = _MotionVectorTexture.Load(int3(inputPos, 0));
float2 motion;
if (EncodedVelocity.x > 0.0)
{
motion = EncodedVelocity.xy;//decodeVelocityFromTexture(EncodedVelocity.xy);
}
else
{
#ifdef UNITY_UV_STARTS_AT_TOP
float2 ScreenPos = float2(2.0f * i.uv.x - 1.0f, 1.0f - 2.0f * i.uv.y);
// NDC Y+ down from viewport Y+ up
#else
float2 ScreenPos = float2(2.0f * i.uv - 1.0f); // NDC Y+ down from viewport Y+ down
#endif
float3 Position = float3(ScreenPos, btmLeftMax9); //this_clip
float4 CurClip = float4(Position, 1.0f);
float4 PreClip = _clipToPrevClip[3] + ((_clipToPrevClip[2] * Position.z)
+
((_clipToPrevClip[1] * ScreenPos.y) + (_clipToPrevClip[0] *
ScreenPos.x)));
// float4 PreClip = mul(CurClip, _clipToPrevClip);
float2 PreScreen = PreClip.xy / PreClip.w;
motion = Position.xy - PreScreen;
}
return float4(motion, depthclip, 0.0);
}
ENDHLSL
}
Pass
{
Name "Upscale"
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma enable_d3d11_debug_symbols
#pragma target 5.0
float FastLanczos(float base)
{
float y = base - 1.0f;
float y2 = y * y;
float y_temp = 0.75f * y + y2;
return y_temp * y2;
}
/*
UBO description
renderSize = {InputResolution.x, InputResolution.y}
outputSize = {OutputResolution.x, OutputResolution.y}
renderSizeRcp = {1.0 / InputResolution.x, 1.0 / InputResolution.y}
outputSizeRcp = {1.0 / OutputResolution.x, 1.0 / OutputResolution.y}
_JitterOffset = {jitter.x, jitter.y},
_ScaleRatio = {OutputResolution.x / InputResolution.x, min(20.0, pow((OutputResolution.x*OutputResolution.y) / (InputResolution.x*InputResolution.y), 3.0)},
angleHor = tan(radians(m_Camera.verticalFOV / 2)) * InputResolution.x / InputResolution.y
MinLerpContribution = sameCameraFrmNum? 0.3: 0.0;
sameCameraFrmNum //the frame number where camera pose is exactly same with previous frame
*/
float4x4 _clipToPrevClip;
float4 _renderSizeParam;
float4 _outputSizeParam;
float2 _JitterOffset;
float2 _ScaleRatio;
float minLerpContribution;
uint sameCameraFrmNum;
Texture2D _PrevSceneColorTexture;
Texture2D _MotionDepthClipAlphaBuffer;
Texture2D _InputTexture;
SamplerState samLinearClamp;
fixed4 frag(Varyings i) : SV_Target
{
float Biasmax_viewportXScale = _ScaleRatio.x;
float scalefactor = _ScaleRatio.y;
float2 Hruv = i.uv;
precise float2 Jitteruv;
Jitteruv.x = clamp(Hruv.x + (_JitterOffset.x * _outputSizeParam.z), 0.0, 1.0);
Jitteruv.y = clamp(Hruv.y + (_JitterOffset.y * _outputSizeParam.w), 0.0, 1.0);
int2 InputPos = int2(Jitteruv * _renderSizeParam.xy);
float3 mda = _MotionDepthClipAlphaBuffer.SampleLevel(samLinearClamp, Jitteruv, 0.0).xyz;
float2 Motion = mda.xy;
float2 PrevUV;
PrevUV.x = clamp(-0.5 * Motion.x + Hruv.x, 0.0, 1.0);
#ifdef UNITY_UV_STARTS_AT_TOP
PrevUV.y = clamp(0.5 * Motion.y + Hruv.y, 0.0, 1.0); // NDC Y+ down from viewport Y+ up
#else
PrevUV.y = clamp(-0.5 * Motion.y + Hruv.y, 0.0, 1.0); // NDC Y+ down from viewport Y+ down
#endif
float depthfactor = mda.z;
float3 HistoryColor = _PrevSceneColorTexture.SampleLevel(samLinearClamp, PrevUV, 0.0).xyz;
/////upsample and compute box
float4 Upsampledcw = 0.0;
float biasmax = Biasmax_viewportXScale;
float biasmin = max(1.0f, 0.3 + 0.3 * biasmax);
float biasfactor = 0.25f * depthfactor;
float kernelbias = lerp(biasmax, biasmin, biasfactor);
float motion_viewport_len = length(Motion * _outputSizeParam.xy);
float curvebias = lerp(-2.0, -3.0, clamp(motion_viewport_len * 0.02, 0.0, 1.0));
float3 rectboxcenter = 0.0;
float3 rectboxvar = 0.0;
float rectboxweight = 0.0;
float2 srcpos = float2(InputPos) + 0.5 - _JitterOffset;
kernelbias *= 0.5f;
float kernelbias2 = kernelbias * kernelbias;
float2 srcpos_srcOutputPos = srcpos - Hruv * _renderSizeParam.xy;
//srcOutputPos = Hruv * renderSize;
float3 rectboxmin;
float3 rectboxmax;
float3 topMid = _InputTexture.Load(int3(InputPos + int2(0, 1), 0)).xyz;
{
float3 samplecolor = topMid;
float2 baseoffset = srcpos_srcOutputPos + float2(0.0, 1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = samplecolor;
rectboxmax = samplecolor;
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
float3 rightMid = _InputTexture.Load(int3(InputPos + int2(1, 0), 0)).xyz;
{
float3 samplecolor = rightMid;
float2 baseoffset = srcpos_srcOutputPos + float2(1.0, 0.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
float3 leftMid = _InputTexture.Load(int3(InputPos + int2(-1, 0), 0)).xyz;
{
float3 samplecolor = leftMid;
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0, 0.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
float3 centerMid = _InputTexture.Load(int3(InputPos + int2(0, 0), 0)).xyz;
{
float3 samplecolor = centerMid;
float2 baseoffset = srcpos_srcOutputPos;
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
float3 btmMid = _InputTexture.Load(int3(InputPos + int2(0, -1), 0)).xyz;
{
float3 samplecolor = btmMid;
float2 baseoffset = srcpos_srcOutputPos + float2(0.0, -1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
if (sameCameraFrmNum != 0u) //maybe disable this for ultra performance
if (false) //maybe disable this for ultra performance, true could generate more realistic output
{
{
float3 topRight = _InputTexture.Load(int3(InputPos + int2(1, 1), 0)).xyz;
float3 samplecolor = topRight;
float2 baseoffset = srcpos_srcOutputPos + float2(1.0, 1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0, 1.0);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 topLeft = _InputTexture.Load(int3(InputPos + int2(-1, 1), 0)).xyz;
float3 samplecolor = topLeft;
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0, 1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 btmRight = _InputTexture.Load(int3(InputPos + int2(1, -1), 0)).xyz;
float3 samplecolor = btmRight;
float2 baseoffset = srcpos_srcOutputPos + float2(1.0, -1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
{
float3 btmLeft = _InputTexture.Load(int3(InputPos + int2(-1, -1), 0)).xyz;
float3 samplecolor = btmLeft;
float2 baseoffset = srcpos_srcOutputPos + float2(-1.0, -1.0);
float baseoffset_dot = dot(baseoffset, baseoffset);
float base = clamp(baseoffset_dot * kernelbias2, 0.0f, 1.0f);
float weight = FastLanczos(base);
Upsampledcw += float4(samplecolor * weight, weight);
float boxweight = exp(baseoffset_dot * curvebias);
rectboxmin = min(rectboxmin, samplecolor);
rectboxmax = max(rectboxmax, samplecolor);
float3 wsample = samplecolor * boxweight;
rectboxcenter += wsample;
rectboxvar += (samplecolor * wsample);
rectboxweight += boxweight;
}
}
rectboxweight = 1.0 / rectboxweight;
rectboxcenter *= rectboxweight;
rectboxvar *= rectboxweight;
rectboxvar = sqrt(abs(rectboxvar - rectboxcenter * rectboxcenter));
Upsampledcw.xyz = clamp(Upsampledcw.xyz / Upsampledcw.w, rectboxmin - 0.075,
rectboxmax + 0.075);
Upsampledcw.w = Upsampledcw.w * (1.0f / 3.0f);
float baseupdate = 1.0f - depthfactor;
baseupdate = min(baseupdate, lerp(baseupdate, Upsampledcw.w * 10.0f, clamp(10.0f * motion_viewport_len, 0.0, 1.0)));
baseupdate = min(baseupdate, lerp(baseupdate, Upsampledcw.w, clamp(motion_viewport_len * 0.05f, 0.0, 1.0)));
float basealpha = baseupdate;
const float EPSILON = 1.192e-07f;
float boxscale = max(depthfactor, clamp(motion_viewport_len * 0.05f, 0.0, 1.0));
float boxsize = lerp(scalefactor, 1.0f, boxscale);
float3 sboxvar = rectboxvar * boxsize;
float3 boxmin = rectboxcenter - sboxvar;
float3 boxmax = rectboxcenter + sboxvar;
rectboxmax = min(rectboxmax, boxmax);
rectboxmin = max(rectboxmin, boxmin);
float3 clampedcolor = clamp(HistoryColor, rectboxmin, rectboxmax);
float startLerpValue = minLerpContribution;
if ((abs(mda.x) + abs(mda.y)) > 0.000001) startLerpValue = 0.0;
float lerpcontribution = (any((rectboxmin > HistoryColor)) || any((HistoryColor > rectboxmax)))
? startLerpValue
: 1.0f;
HistoryColor = lerp(clampedcolor, HistoryColor, clamp(lerpcontribution, 0.0, 1.0));
float basemin = min(basealpha, 0.1f);
basealpha = lerp(basemin, basealpha, clamp(lerpcontribution, 0.0, 1.0));
////blend color
float alphasum = max(EPSILON, basealpha + Upsampledcw.w);
float alpha = clamp(Upsampledcw.w / alphasum, 0.0, 1.0);
Upsampledcw.xyz = lerp(HistoryColor, Upsampledcw.xyz, alpha);
return float4(Upsampledcw.xyz, 0.0);
}
ENDHLSL
}
}
}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: c4a59e967fe65fd48bb28b2a4b05eb3e
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,30 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MRP_SR_GSR1
m_Shader: {fileID: 4800000, guid: bfe84e33ceb6d1147a989c43cec74049, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- UseEdgeDirection
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors: []
m_BuildTextureStacks: []

View File

@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: a73f6fa069dd14a42b40cbb01bae63b4 guid: d57e64d5723127243b429034bed82c7d
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

View File

@ -0,0 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MRP_SR_GSR2
m_Shader: {fileID: 4800000, guid: c4a59e967fe65fd48bb28b2a4b05eb3e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors: []
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 4eb9ff6b5314098428cfa0be7e36ccda guid: faa906817c0647f42a0cec70faeb91c1
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

View File

@ -1,6 +1,3 @@
using System.Reflection;
using UnityEngine.Rendering.Universal;
using X.Rendering.Feature; using X.Rendering.Feature;
namespace UnityEngine.Rendering.Universal namespace UnityEngine.Rendering.Universal
@ -12,12 +9,22 @@ namespace UnityEngine.Rendering.Universal
[SerializeField] [SerializeField]
private ERenderScale sSRenderScale; private ERenderScale sSRenderScale;
public ERenderScale SSRenderScale public ERenderScale SSRenderScale => sSRenderScale;
public ESuperResolution SuperResolution => superResolution;
private void UpdateSSSettings()
{ {
get => sSRenderScale; set var renderer = GetRenderer(this.m_DefaultRendererIndex);
foreach (var item in renderer.rendererFeatures)
{ {
sSRenderScale = value; if (item is ISuperResolutionFeature isr)
switch (value) {
isr.SetSR(superResolution);
}
}
switch (sSRenderScale)
{ {
case ERenderScale.Factor1: case ERenderScale.Factor1:
this.renderScale = 1.0f; this.renderScale = 1.0f;
@ -40,69 +47,13 @@ namespace UnityEngine.Rendering.Universal
default: default:
break; break;
} }
}
}
public ESuperResolution SuperResolution
{
get => superResolution; set
{
superResolution = value;
var renderer = GetRenderer(this.m_DefaultRendererIndex);
foreach (var item in renderer.rendererFeatures)
{
if (item is ISuperResolution isr)
{
isr.SetSR(value);
}
}
}
}
}
}
#if UNITY_EDITOR
namespace UnityEditor.Rendering.Universal
{
internal class SerializedUniversalRenderPipelineAsset
{
public UniversalRenderPipelineAsset asset { get; }
public SerializedObject serializedObject { get; }
public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject)
{
asset = serializedObject.targetObject as UniversalRenderPipelineAsset;
this.serializedObject = serializedObject;
} }
public void Update()
{
serializedObject.Update();
}
protected override void OnValidate()
public void Apply()
{ {
serializedObject.ApplyModifiedProperties(); base.OnValidate();
} UpdateSSSettings();
}
[CustomEditor(typeof(UniversalRenderPipelineAsset)), CanEditMultipleObjects]
public class SuperRenderingAssetEditor : Editor
{
private SerializedUniversalRenderPipelineAsset m_SerializedURPAsset;
public override void OnInspectorGUI()
{
m_SerializedURPAsset.Update();
//UniversalRenderPipelineAssetUI.Inspector.Draw(m_SerializedURPAsset, this);
m_SerializedURPAsset.Apply();
}
void OnEnable()
{
var t = Assembly.GetAssembly(typeof(UnityEditor.Rendering.Universal.SceneViewDrawMode)).GetType("UniversalRenderPipelineAssetUI");
m_SerializedURPAsset = new SerializedUniversalRenderPipelineAsset(serializedObject);
} }
} }
} }
#endif

View File

@ -66,6 +66,7 @@ namespace UnityEngine.Rendering.Universal
/// </summary> /// </summary>
internal enum ImageUpscalingFilter internal enum ImageUpscalingFilter
{ {
None,
/// Bilinear filtering /// Bilinear filtering
Linear, Linear,

View File

@ -1453,7 +1453,7 @@ namespace UnityEngine.Rendering.Universal
// NOTE: TAA and motion vector dependencies added here to share between Execute and Render (Graph) paths. // NOTE: TAA and motion vector dependencies added here to share between Execute and Render (Graph) paths.
// TAA in postprocess requires motion to function. // TAA in postprocess requires motion to function.
if (renderingData.cameraData.IsTemporalAAEnabled()) //if (renderingData.cameraData.IsTemporalAAEnabled())
inputSummary.requiresMotionVectors = true; inputSummary.requiresMotionVectors = true;
// Motion vectors imply depth // Motion vectors imply depth

View File

@ -26,6 +26,7 @@ GraphicsSettings:
m_Mode: 1 m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_VideoShadersIncludeMode: 2 m_VideoShadersIncludeMode: 2
m_LengthOfAlwaysIncludedShadersInInspector: 1
m_AlwaysIncludedShaders: m_AlwaysIncludedShaders:
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: [] m_PreloadedShaders: []
@ -51,12 +52,16 @@ GraphicsSettings:
m_FogKeepExp: 0 m_FogKeepExp: 0
m_FogKeepExp2: 0 m_FogKeepExp2: 0
m_AlbedoSwatchInfos: [] m_AlbedoSwatchInfos: []
m_ModelImportDefaultMaterial: {fileID: 0}
m_LightsUseLinearIntensity: 1 m_LightsUseLinearIntensity: 1
m_LightsUseColorTemperature: 1 m_LightsUseColorTemperature: 1
m_DefaultRenderingLayerMask: 1 m_DefaultRenderingLayerMask: 1
m_LogWhenShaderIsCompiled: 0 m_LogWhenShaderIsCompiled: 0
m_NoExactGfxBuffer: 0
m_SRPDefaultSettings: m_SRPDefaultSettings:
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: bdede76083021864d8ff8bf23b2f37f1, type: 2} UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: bdede76083021864d8ff8bf23b2f37f1, type: 2}
m_LightProbeOutsideHullStrategy: 0 m_LightProbeOutsideHullStrategy: 0
m_CameraRelativeLightCulling: 0 m_CameraRelativeLightCulling: 0
m_CameraRelativeShadowCulling: 0 m_CameraRelativeShadowCulling: 0
m_GenerateGeometryBuffer: 0
m_EnableGDRP: 0

View File

@ -286,7 +286,8 @@ PlayerSettings:
androidSupportedAspectRatio: 1 androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1 androidMaxAspectRatio: 2.1
applicationIdentifier: applicationIdentifier:
Android: com.unity.template.urpsample Android: com.DefaultCompany.TJURP
OpenHarmony: com.DefaultCompany.TJURP
Standalone: com.unity.template.urp-sample Standalone: com.unity.template.urp-sample
iPhone: com.unity.template.urp-sample iPhone: com.unity.template.urp-sample
buildNumber: buildNumber:
@ -294,7 +295,7 @@ PlayerSettings:
VisionOS: 0 VisionOS: 0
iPhone: 0 iPhone: 0
tvOS: 0 tvOS: 0
overrideDefaultApplicationIdentifier: 1 overrideDefaultApplicationIdentifier: 0
AndroidBundleVersionCode: 1 AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 23 AndroidMinSdkVersion: 23
AndroidTargetSdkVersion: 0 AndroidTargetSdkVersion: 0
@ -1064,9 +1065,10 @@ PlayerSettings:
webGLMemoryGeometricGrowthCap: 96 webGLMemoryGeometricGrowthCap: 96
webGLPowerPreference: 2 webGLPowerPreference: 2
scriptingDefineSymbols: scriptingDefineSymbols:
Android: STARTER_ASSETS_PACKAGES_CHECKED Android: STARTER_ASSETS_PACKAGES_CHECKED;RENDER_GRAPH_ENABLED
Nintendo Switch: STARTER_ASSETS_PACKAGES_CHECKED Nintendo Switch: STARTER_ASSETS_PACKAGES_CHECKED
Standalone: STARTER_ASSETS_PACKAGES_CHECKED;URP_EXPERIMENTAL_TAA_ENABLE OpenHarmony: RENDER_GRAPH_ENABLED
Standalone: STARTER_ASSETS_PACKAGES_CHECKED;URP_EXPERIMENTAL_TAA_ENABLE;RENDER_GRAPH_ENABLED
iPhone: STARTER_ASSETS_PACKAGES_CHECKED iPhone: STARTER_ASSETS_PACKAGES_CHECKED
additionalCompilerArguments: {} additionalCompilerArguments: {}
platformArchitecture: {} platformArchitecture: {}

View File

@ -59,116 +59,6 @@ QualitySettings:
excludedTargetPlatforms: excludedTargetPlatforms:
- Nintendo Switch - Nintendo Switch
- Standalone - Standalone
- serializedVersion: 3
name: PC Low
pixelLightCount: 2
shadows: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 40
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 2
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
useLegacyDetailDistribution: 1
vSyncCount: 0
realtimeGICPUUsage: 25
lodBias: 0.25
maximumLODLevel: 1
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 11400000, guid: 4eb9ff6b5314098428cfa0be7e36ccda, type: 2}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
vgPersistentBufferSize: 256
vgStreamingBufferSize: 512
excludedTargetPlatforms:
- Android
- iPhone
- Standalone
- GameCoreXboxOne
- Nintendo Switch
- serializedVersion: 3
name: PC High
pixelLightCount: 2
shadows: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 40
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
skinWeights: 4
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 2
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 1
useLegacyDetailDistribution: 1
vSyncCount: 0
realtimeGICPUUsage: 100
lodBias: 2
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
vgPersistentBufferSize: 256
vgStreamingBufferSize: 512
excludedTargetPlatforms:
- Android
- Nintendo Switch
- iPhone
m_TextureMipmapLimitGroupNames: [] m_TextureMipmapLimitGroupNames: []
m_PerPlatformDefaultQuality: m_PerPlatformDefaultQuality:
Android: 0 Android: 0
@ -179,10 +69,10 @@ QualitySettings:
PS4: 0 PS4: 0
Server: 0 Server: 0
Stadia: 0 Stadia: 0
Standalone: 2 Standalone: 0
WebGL: 0 WebGL: 0
WeixinMiniGame: 1 WeixinMiniGame: 0
Windows Store Apps: 0 Windows Store Apps: 0
XboxOne: 0 XboxOne: 0
iPhone: 1 iPhone: 0
tvOS: 0 tvOS: 0

View File

@ -6,8 +6,20 @@ EditorUserSettings:
serializedVersion: 4 serializedVersion: 4
m_ConfigSettings: m_ConfigSettings:
RecentlyUsedSceneGuid-0: RecentlyUsedSceneGuid-0:
value: 0257020252075b0b5a0b5b2345715a444f4e402b7a2d22667f7c4b35e7b16769
flags: 0
RecentlyUsedSceneGuid-1:
value: 5a57555407545f0b5e0f5f764277594914161e2b787977692b714e64e4b2363b
flags: 0
RecentlyUsedSceneGuid-2:
value: 57050d5004060d590f56087046700f4445164c7e7a7824312e7c4e6bb0e1376d value: 57050d5004060d590f56087046700f4445164c7e7a7824312e7c4e6bb0e1376d
flags: 0 flags: 0
RecentlyUsedSceneGuid-3:
value: 01060c075556080e0956597315775b14104e4179282b25662b2c1c31b7b63068
flags: 0
RecentlyUsedSceneGuid-4:
value: 5b00515154055e035459547042705a44154f1e2c2e2e7f677e7d4567e1b9376d
flags: 0
vcSharedLogLevel: vcSharedLogLevel:
value: 0d5e400f0650 value: 0d5e400f0650
flags: 0 flags: 0

View File

@ -14,14 +14,14 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_PixelRect: m_PixelRect:
serializedVersion: 2 serializedVersion: 2
x: 122 x: 2815
y: 279 y: 219
width: 891 width: 1934
height: 603 height: 971
m_ShowMode: 0 m_ShowMode: 0
m_Title: Build Settings m_Title: Frame Debugger
m_RootView: {fileID: 4} m_RootView: {fileID: 4}
m_MinSize: {x: 640, y: 601} m_MinSize: {x: 1000, y: 521}
m_MaxSize: {x: 4000, y: 4021} m_MaxSize: {x: 4000, y: 4021}
m_Maximized: 0 m_Maximized: 0
--- !u!114 &2 --- !u!114 &2
@ -43,8 +43,8 @@ MonoBehaviour:
width: 2560 width: 2560
height: 1349 height: 1349
m_ShowMode: 4 m_ShowMode: 4
m_Title: Console m_Title: Game
m_RootView: {fileID: 9} m_RootView: {fileID: 11}
m_MinSize: {x: 875, y: 300} m_MinSize: {x: 875, y: 300}
m_MaxSize: {x: 10000, y: 10000} m_MaxSize: {x: 10000, y: 10000}
m_Maximized: 1 m_Maximized: 1
@ -58,20 +58,20 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: BuildPlayerWindow m_Name: FrameDebuggerWindow
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 891 width: 1934
height: 603 height: 971
m_MinSize: {x: 640, y: 601} m_MinSize: {x: 1000, y: 521}
m_MaxSize: {x: 4000, y: 4021} m_MaxSize: {x: 4000, y: 4021}
m_ActualView: {fileID: 15} m_ActualView: {fileID: 17}
m_Panes: m_Panes:
- {fileID: 15} - {fileID: 17}
m_Selected: 0 m_Selected: 0
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &4 --- !u!114 &4
@ -92,14 +92,66 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 891 width: 1934
height: 603 height: 971
m_MinSize: {x: 640, y: 601} m_MinSize: {x: 1000, y: 521}
m_MaxSize: {x: 4000, y: 4021} m_MaxSize: {x: 4000, y: 4021}
vertical: 0 vertical: 0
controlID: 2540 controlID: 14
draggingID: 0 draggingID: 0
--- !u!114 &5 --- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 1300
y: 0
width: 650
height: 529
m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 23}
m_Panes:
- {fileID: 23}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 10}
- {fileID: 5}
m_Position:
serializedVersion: 2
x: 0
y: 770
width: 1950
height: 529
m_MinSize: {x: 200, y: 50}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 126
draggingID: 0
--- !u!114 &7
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -112,8 +164,8 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 12} - {fileID: 14}
- {fileID: 6} - {fileID: 8}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
@ -123,9 +175,9 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 100} m_MinSize: {x: 300, y: 100}
m_MaxSize: {x: 24288, y: 16192} m_MaxSize: {x: 24288, y: 16192}
vertical: 0 vertical: 0
controlID: 261 controlID: 162
draggingID: 0 draggingID: 0
--- !u!114 &6 --- !u!114 &8
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -140,18 +192,18 @@ MonoBehaviour:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 1863 x: 1950
y: 0 y: 0
width: 697 width: 610
height: 1299 height: 1299
m_MinSize: {x: 277, y: 71} m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 17} m_ActualView: {fileID: 19}
m_Panes: m_Panes:
- {fileID: 17} - {fileID: 19}
m_Selected: 0 m_Selected: 0
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &7 --- !u!114 &9
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -168,16 +220,16 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 462 width: 483
height: 770 height: 770
m_MinSize: {x: 201, y: 221} m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 18} m_ActualView: {fileID: 20}
m_Panes: m_Panes:
- {fileID: 18} - {fileID: 20}
m_Selected: 0 m_Selected: 0
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &8 --- !u!114 &10
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -187,24 +239,23 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 1 m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow m_Name: ProjectBrowser
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 770 y: 0
width: 1863 width: 1300
height: 529 height: 529
m_MinSize: {x: 101, y: 121} m_MinSize: {x: 231, y: 271}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 10001, y: 10021}
m_ActualView: {fileID: 21} m_ActualView: {fileID: 18}
m_Panes: m_Panes:
- {fileID: 16} - {fileID: 18}
- {fileID: 21} m_Selected: 0
m_Selected: 1
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &9 --- !u!114 &11
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -217,9 +268,9 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 10} - {fileID: 12}
- {fileID: 5} - {fileID: 7}
- {fileID: 11} - {fileID: 13}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
@ -232,7 +283,7 @@ MonoBehaviour:
m_TopViewHeight: 30 m_TopViewHeight: 30
m_UseBottomView: 1 m_UseBottomView: 1
m_BottomViewHeight: 20 m_BottomViewHeight: 20
--- !u!114 &10 --- !u!114 &12
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -253,8 +304,8 @@ MonoBehaviour:
height: 30 height: 30
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName: TutorialLayout m_LastLoadedLayoutName:
--- !u!114 &11 --- !u!114 &13
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -275,7 +326,7 @@ MonoBehaviour:
height: 20 height: 20
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
--- !u!114 &12 --- !u!114 &14
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -288,20 +339,20 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 13} - {fileID: 15}
- {fileID: 8} - {fileID: 6}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1863 width: 1950
height: 1299 height: 1299
m_MinSize: {x: 200, y: 100} m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 16192} m_MaxSize: {x: 16192, y: 16192}
vertical: 1 vertical: 1
controlID: 236 controlID: 39
draggingID: 0 draggingID: 0
--- !u!114 &13 --- !u!114 &15
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -314,20 +365,20 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 7} - {fileID: 9}
- {fileID: 14} - {fileID: 16}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1863 width: 1950
height: 770 height: 770
m_MinSize: {x: 200, y: 50} m_MinSize: {x: 200, y: 50}
m_MaxSize: {x: 16192, y: 8096} m_MaxSize: {x: 16192, y: 8096}
vertical: 0 vertical: 0
controlID: 237 controlID: 40
draggingID: 0 draggingID: 0
--- !u!114 &14 --- !u!114 &16
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -342,19 +393,19 @@ MonoBehaviour:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 462 x: 483
y: 0 y: 0
width: 1401 width: 1467
height: 770 height: 770
m_MinSize: {x: 202, y: 221} m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 20} m_ActualView: {fileID: 22}
m_Panes: m_Panes:
- {fileID: 19} - {fileID: 21}
- {fileID: 20} - {fileID: 22}
m_Selected: 1 m_Selected: 1
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &15 --- !u!114 &17
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -363,21 +414,21 @@ MonoBehaviour:
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 12043, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 13202, guid: 0000000000000000e000000000000000, type: 0}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_MinSize: {x: 640, y: 580} m_MinSize: {x: 1000, y: 500}
m_MaxSize: {x: 4000, y: 4000} m_MaxSize: {x: 4000, y: 4000}
m_TitleContent: m_TitleContent:
m_Text: Build Settings m_Text: Frame Debugger
m_Image: {fileID: 0} m_Image: {fileID: 0}
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 122 x: 2815
y: 279 y: 219
width: 891 width: 1934
height: 582 height: 950
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -388,11 +439,12 @@ MonoBehaviour:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
m_SaveData: [] m_SaveData: []
m_OverlaysVisible: 1 m_OverlaysVisible: 1
m_TreeWidth: 337.92
m_TreeViewState: m_TreeViewState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs: 1f000000
m_LastClickedID: 0 m_LastClickedID: 31
m_ExpandedIDs: m_ExpandedIDs: e4ffffffe5ffffffe9ffffffebffffffecfffffff5fffffff8fffffffdfffffffeffffff00000000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -410,7 +462,7 @@ MonoBehaviour:
m_IsRenamingFilename: 0 m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0} m_ClientGUIView: {fileID: 0}
m_SearchString: m_SearchString:
--- !u!114 &16 --- !u!114 &18
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -432,7 +484,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 843 y: 843
width: 1862 width: 1299
height: 508 height: 508
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -455,24 +507,24 @@ MonoBehaviour:
m_SkipHidden: 0 m_SkipHidden: 0
m_SearchArea: 1 m_SearchArea: 1
m_Folders: m_Folders:
- Assets/Settings - Packages/com.unity.render-pipelines.universal/Runtime/SuperRendering/SR/Shader
m_Globs: [] m_Globs: []
m_OriginalText: m_OriginalText:
m_ImportLogFlags: 0 m_ImportLogFlags: 0
m_FilterByTypeIntersection: 0 m_FilterByTypeIntersection: 0
m_ViewMode: 1 m_ViewMode: 1
m_StartGridSize: 64 m_StartGridSize: 16
m_LastFolders: m_LastFolders:
- Assets/Settings - Packages/com.unity.render-pipelines.universal/Runtime/SuperRendering/SR/Shader
m_LastFoldersGridSize: -1 m_LastFoldersGridSize: 16
m_LastProjectPath: G:\TJURP m_LastProjectPath: G:\TJURP
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_FolderTreeState: m_FolderTreeState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 456}
m_SelectedIDs: 00270100 m_SelectedIDs: 30530000
m_LastClickedID: 75520 m_LastClickedID: 21296
m_ExpandedIDs: 00000000fc26010000ca9a3b m_ExpandedIDs: 00000000284500005c45000068450000344600008c4600004447000060480000e84a0000104c0000144e0000e84f0000649a010000ca9a3bffffff7f
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -488,7 +540,7 @@ MonoBehaviour:
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 11
m_IsRenamingFilename: 1 m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0} m_ClientGUIView: {fileID: 10}
m_SearchString: m_SearchString:
m_CreateAssetUtility: m_CreateAssetUtility:
m_EndAction: {fileID: 0} m_EndAction: {fileID: 0}
@ -500,7 +552,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: 00000000fc26010000ca9a3bffffff7f m_ExpandedIDs: 00000000cc4400002845000068450000344600008c4600004447000060480000e84a0000104c0000144e0000e84f0000649a0100
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -525,10 +577,10 @@ MonoBehaviour:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_ResourceFile: m_ResourceFile:
m_ListAreaState: m_ListAreaState:
m_SelectedInstanceIDs: 00270100 m_SelectedInstanceIDs:
m_LastClickedInstanceID: 75520 m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 1 m_HadKeyboardFocusLastEvent: 1
m_ExpandedInstanceIDs: c6230000 m_ExpandedInstanceIDs: c623000000000000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -544,7 +596,7 @@ MonoBehaviour:
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 11
m_IsRenamingFilename: 1 m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0} m_ClientGUIView: {fileID: 10}
m_CreateAssetUtility: m_CreateAssetUtility:
m_EndAction: {fileID: 0} m_EndAction: {fileID: 0}
m_InstanceID: 0 m_InstanceID: 0
@ -553,10 +605,10 @@ MonoBehaviour:
m_ResourceFile: m_ResourceFile:
m_NewAssetIndexInList: -1 m_NewAssetIndexInList: -1
m_ScrollPosition: {x: 0, y: 0} m_ScrollPosition: {x: 0, y: 0}
m_GridSize: 64 m_GridSize: 16
m_SkipHiddenPackages: 0 m_SkipHiddenPackages: 0
m_DirectoriesAreaWidth: 207 m_DirectoriesAreaWidth: 207
--- !u!114 &17 --- !u!114 &19
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -576,9 +628,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 1863 x: 1950
y: 73 y: 73
width: 696 width: 609
height: 1278 height: 1278
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -593,7 +645,7 @@ MonoBehaviour:
m_ObjectsLockedBeforeSerialization: [] m_ObjectsLockedBeforeSerialization: []
m_InstanceIDsLockedBeforeSerialization: m_InstanceIDsLockedBeforeSerialization:
m_PreviewResizer: m_PreviewResizer:
m_CachedPref: 160 m_CachedPref: 482
m_ControlHash: -371814159 m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1 m_LastInspectedObjectInstanceID: -1
@ -603,7 +655,7 @@ MonoBehaviour:
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_PreviewWindow: {fileID: 0} m_PreviewWindow: {fileID: 0}
--- !u!114 &18 --- !u!114 &20
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -625,7 +677,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73 y: 73
width: 461 width: 482
height: 749 height: 749
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -640,9 +692,9 @@ MonoBehaviour:
m_SceneHierarchy: m_SceneHierarchy:
m_TreeViewState: m_TreeViewState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: 00270100 m_SelectedIDs: 48030000
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: 9640feff42fbffff m_ExpandedIDs: 8e95fdff
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -658,7 +710,7 @@ MonoBehaviour:
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 11
m_IsRenamingFilename: 0 m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0} m_ClientGUIView: {fileID: 9}
m_SearchString: m_SearchString:
m_ExpandedScenes: [] m_ExpandedScenes: []
m_CurrenRootInstanceID: 0 m_CurrenRootInstanceID: 0
@ -666,7 +718,7 @@ MonoBehaviour:
m_IsLocked: 0 m_IsLocked: 0
m_CurrentSortingName: TransformSorting m_CurrentSortingName: TransformSorting
m_WindowGUID: 4c969a2b90040154d917609493e03593 m_WindowGUID: 4c969a2b90040154d917609493e03593
--- !u!114 &19 --- !u!114 &21
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -686,10 +738,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 365.33334 x: 483
y: 72.66667 y: 73
width: 1102 width: 1465
height: 777 height: 749
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -704,8 +756,8 @@ MonoBehaviour:
floating: 0 floating: 0
collapsed: 0 collapsed: 0
displayed: 1 displayed: 1
snapOffset: {x: 0, y: 0} snapOffset: {x: -166, y: -26}
snapOffsetDelta: {x: -160, y: -26.666687} snapOffsetDelta: {x: -5, y: 0}
snapCorner: 3 snapCorner: 3
id: Tool Settings id: Tool Settings
index: 0 index: 0
@ -1063,6 +1115,19 @@ MonoBehaviour:
layout: 4 layout: 4
size: {x: 0, y: 0} size: {x: 0, y: 0}
sizeOverriden: 0 sizeOverriden: 0
- dockPosition: 1
containerId: overlay-container--right
floating: 0
collapsed: 0
displayed: 1
snapOffset: {x: 48, y: 48}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: UnityEditor.SceneViewCameraOverlay
index: 10
layout: 4
size: {x: 0, y: 0}
sizeOverriden: 0
m_OverlaysVisible: 1 m_OverlaysVisible: 1
m_WindowGUID: cc27987af1a868c49b0894db9c0f5429 m_WindowGUID: cc27987af1a868c49b0894db9c0f5429
m_Gizmos: 1 m_Gizmos: 1
@ -1074,9 +1139,9 @@ MonoBehaviour:
m_PlayAudio: 0 m_PlayAudio: 0
m_AudioPlay: 0 m_AudioPlay: 0
m_Position: m_Position:
m_Target: {x: -2.6114657, y: 2.6320024, z: -14.458087} m_Target: {x: 0.3252655, y: 6.390328, z: -98.436806}
speed: 2 speed: 2
m_Value: {x: -2.6114657, y: 2.6320024, z: -14.458087} m_Value: {x: 0.3252655, y: 6.390328, z: -98.436806}
m_RenderMode: 0 m_RenderMode: 0
m_CameraMode: m_CameraMode:
drawMode: 0 drawMode: 0
@ -1085,7 +1150,7 @@ MonoBehaviour:
m_ValidateTrueMetals: 0 m_ValidateTrueMetals: 0
m_DoValidateTrueMetals: 0 m_DoValidateTrueMetals: 0
m_SceneViewState: m_SceneViewState:
m_AlwaysRefresh: 0 m_AlwaysRefresh: 1
showFog: 1 showFog: 1
showSkybox: 1 showSkybox: 1
showFlares: 1 showFlares: 1
@ -1117,18 +1182,18 @@ MonoBehaviour:
m_Value: 0 m_Value: 0
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0} m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 0, y: 0} m_Size: {x: 1, y: 1}
m_ShowGrid: 1 m_ShowGrid: 1
m_GridAxis: 1 m_GridAxis: 1
m_gridOpacity: 0.5 m_gridOpacity: 0.5
m_Rotation: m_Rotation:
m_Target: {x: -0.00039701394, y: -0.99538195, z: -0.004038258, w: 0.096016675} m_Target: {x: 0.10873414, y: -0.42024752, z: 0.050804242, w: 0.89943933}
speed: 2 speed: 2
m_Value: {x: -0.00039700978, y: -0.9953715, z: -0.0040382156, w: 0.09601567} m_Value: {x: 0.10873396, y: -0.4202468, z: 0.050804157, w: 0.89943784}
m_Size: m_Size:
m_Target: 10 m_Target: 1.4466168
speed: 2 speed: 2
m_Value: 10 m_Value: 1.4466168
m_Ortho: m_Ortho:
m_Target: 0 m_Target: 0
speed: 2 speed: 2
@ -1148,14 +1213,14 @@ MonoBehaviour:
m_OcclusionCulling: 0 m_OcclusionCulling: 0
m_EnableGDRP: 1 m_EnableGDRP: 1
m_BackfaceCulling: 0 m_BackfaceCulling: 0
m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} m_LastSceneViewRotation: {x: -0.015300392, y: 0.033586923, z: -0.0005142884, w: -0.9993189}
m_LastSceneViewOrtho: 0 m_LastSceneViewOrtho: 0
m_ReplacementShader: {fileID: 0} m_ReplacementShader: {fileID: 0}
m_ReplacementString: m_ReplacementString:
m_SceneVisActive: 1 m_SceneVisActive: 1
m_LastLockedObject: {fileID: 0} m_LastLockedObject: {fileID: 0}
m_ViewIsLockedToObject: 0 m_ViewIsLockedToObject: 0
--- !u!114 &20 --- !u!114 &22
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -1175,9 +1240,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 462 x: 483
y: 73 y: 73
width: 1399 width: 1465
height: 749 height: 749
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -1195,7 +1260,7 @@ MonoBehaviour:
m_ShowGizmos: 0 m_ShowGizmos: 0
m_TargetDisplay: 0 m_TargetDisplay: 0
m_ClearColor: {r: 0, g: 0, b: 0, a: 0} m_ClearColor: {r: 0, g: 0, b: 0, a: 0}
m_TargetSize: {x: 1399, y: 728} m_TargetSize: {x: 2560, y: 1440}
m_TextureFilterMode: 0 m_TextureFilterMode: 0
m_TextureHideFlags: 61 m_TextureHideFlags: 61
m_RenderIMGUI: 1 m_RenderIMGUI: 1
@ -1204,16 +1269,16 @@ MonoBehaviour:
m_VSyncEnabled: 0 m_VSyncEnabled: 0
m_Gizmos: 0 m_Gizmos: 0
m_Stats: 0 m_Stats: 0
m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000 m_SelectedSizes: 0000000000000000000000000a000000000000000000000000000000000000000000000000000000
m_ZoomArea: m_ZoomArea:
m_HRangeLocked: 0 m_HRangeLocked: 0
m_VRangeLocked: 0 m_VRangeLocked: 0
hZoomLockedByDefault: 0 hZoomLockedByDefault: 0
vZoomLockedByDefault: 0 vZoomLockedByDefault: 0
m_HBaseRangeMin: -699.5 m_HBaseRangeMin: -1280
m_HBaseRangeMax: 699.5 m_HBaseRangeMax: 1280
m_VBaseRangeMin: -364 m_VBaseRangeMin: -720
m_VBaseRangeMax: 364 m_VBaseRangeMax: 720
m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMin: 1
m_HAllowExceedBaseRangeMax: 1 m_HAllowExceedBaseRangeMax: 1
m_VAllowExceedBaseRangeMin: 1 m_VAllowExceedBaseRangeMin: 1
@ -1231,29 +1296,29 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 21 y: 21
width: 1399 width: 1465
height: 728 height: 728
m_Scale: {x: 1, y: 1} m_Scale: {x: 0.50555557, y: 0.50555557}
m_Translation: {x: 699.5, y: 364} m_Translation: {x: 732.5, y: 364}
m_MarginLeft: 0 m_MarginLeft: 0
m_MarginRight: 0 m_MarginRight: 0
m_MarginTop: 0 m_MarginTop: 0
m_MarginBottom: 0 m_MarginBottom: 0
m_LastShownAreaInsideMargins: m_LastShownAreaInsideMargins:
serializedVersion: 2 serializedVersion: 2
x: -699.5 x: -1448.901
y: -364 y: -720
width: 1399 width: 2897.802
height: 728 height: 1440
m_MinimalGUI: 1 m_MinimalGUI: 1
m_defaultScale: 1 m_defaultScale: 0.50555557
m_LastWindowPixelSize: {x: 1399, y: 749} m_LastWindowPixelSize: {x: 1465, y: 749}
m_ClearInEditMode: 1 m_ClearInEditMode: 1
m_NoCameraWarning: 1 m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 00000000000000000000 m_LowResolutionForAspectRatios: 00000001000000000000
m_XRRenderMode: 0 m_XRRenderMode: 0
m_RenderTexture: {fileID: 0} m_RenderTexture: {fileID: 0}
--- !u!114 &21 --- !u!114 &23
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -1273,9 +1338,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 1300
y: 843 y: 843
width: 1862 width: 648
height: 508 height: 508
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0