stencil portals pass 1 and 2

This commit is contained in:
2023-02-14 11:22:01 +01:00
parent b2c509e9cb
commit 8aa329a055
18 changed files with 2868 additions and 6 deletions

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: FullScreenDepth
m_Shader: {fileID: 4800000, guid: c42e5c54ac1b498e8368dcc5fd6775ad, 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:
- _PortalNumber: 1
m_Colors: []
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 782cb59e6f5f438478bdd855cf549ff3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,43 @@
Shader "Escape Room Engine/FullScreenDepth" {
Properties {
_PortalNumber ("Portal Number", Int) = 1
}
SubShader {
Pass
{
ColorMask 0
Cull Off
ZWrite On
ZTest Always
Stencil
{
Ref [_PortalNumber]
Comp Equal // pass if equal
Pass Keep // keep stencil value
Fail Keep // keep stencil if depth fails
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
void vert(appdata_img v, out float4 pos : SV_POSITION)
{
#ifdef UNITY_REVERSED_Z
float far = 0.00001;
#else
float far = 0.99999;
#endif
pos = float4(v.vertex.xy * 2.0, far, 1); // quad xy goes from -0.5 to 0.5, clip space from -1 to 1
}
fixed4 frag() : SV_Target
{
return 0;
}
ENDCG
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c42e5c54ac1b498e8368dcc5fd6775ad
timeCreated: 1682437235

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: PortalStencil
m_Shader: {fileID: 4800000, guid: 5a680fbeb958dad4fa8edf79e5a609b5, 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:
- _PortalNumber: 1
m_Colors: []
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f6db0041cc34fe9439de56d5d92c8b8d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
Shader "Escape Room Engine/PortalStencil"
{
Properties
{
_PortalNumber ("Portal Number", Int) = 1
}
SubShader
{
Tags
{
"RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"
}
Pass
{
ColorMask 0
Stencil
{
Ref [_PortalNumber]
Comp Always // always pass
Pass Replace // set stencil value
Fail Keep // keep stencil if depth fails
}
}
}
}

View File

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

View File

@@ -11,7 +11,7 @@ GameObject:
- component: {fileID: 4697416823958963037}
- component: {fileID: 8547629936759508216}
- component: {fileID: 5871497001431693362}
m_Layer: 0
m_Layer: 7
m_Name: Portal Screen
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -277,6 +277,13 @@ MonoBehaviour:
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
quality: 3
frameInfluence: 0.1
jitterScale: 1
mipBias: 0
varianceClampScale: 0.9
contrastAdaptiveSharpening: 0
--- !u!114 &17691322601746172
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace EscapeRoomEngine.Portal.Runtime
{
public class RenderPortals : ScriptableRendererFeature
{
private class PortalRenderPass : ScriptableRenderPass
{
private RenderStateBlock _renderStateBlock;
private readonly Settings _settings;
public PortalRenderPass(Settings settings)
{
_settings = settings;
renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
_renderStateBlock = new RenderStateBlock(RenderStateMask.Nothing);
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
var sortingCriteria = renderingData.cameraData.defaultOpaqueSortFlags;
var drawingSettings =
CreateDrawingSettings(
new List<ShaderTagId>
{
new("SRPDefaultUnlit"), new("UniversalForward"), new("UniversalForwardOnly")
},
ref renderingData, sortingCriteria);
// set stencil to portal
var filteringSettings = new FilteringSettings(RenderQueueRange.opaque, _settings.layer);
drawingSettings.overrideMaterial = _settings.material;
context.DrawRenderers(renderingData.cullResults, ref drawingSettings, ref filteringSettings, ref _renderStateBlock);
}
}
private PortalRenderPass _portalPass;
[Serializable]
public class Settings
{
public LayerMask layer;
public Material material;
}
public Settings settings = new();
public override void Create()
{
_portalPass = new PortalRenderPass(settings);
}
// Here you can inject one or multiple render passes in the renderer.
// This method is called when setting up the renderer once per-camera.
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(_portalPass);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 19d058f65954fe84dacdf8eae0a2a980
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 56077ec5fbc90b04985e5cfae1891968
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,109 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-7893295128165547882
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: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom
m_EditorClassIdentifier:
active: 1
skipIterations:
m_OverrideState: 0
m_Value: 1
threshold:
m_OverrideState: 1
m_Value: 1
intensity:
m_OverrideState: 1
m_Value: 1
scatter:
m_OverrideState: 0
m_Value: 0.7
clamp:
m_OverrideState: 0
m_Value: 65472
tint:
m_OverrideState: 0
m_Value: {r: 1, g: 1, b: 1, a: 1}
highQualityFiltering:
m_OverrideState: 0
m_Value: 0
downscale:
m_OverrideState: 0
m_Value: 0
maxIterations:
m_OverrideState: 0
m_Value: 6
dirtTexture:
m_OverrideState: 0
m_Value: {fileID: 0}
dimension: 1
dirtIntensity:
m_OverrideState: 0
m_Value: 0
--- !u!114 &-7011558710299706105
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: 899c54efeace73346a0a16faa3afe726, type: 3}
m_Name: Vignette
m_EditorClassIdentifier:
active: 0
color:
m_OverrideState: 0
m_Value: {r: 0, g: 0, b: 0, a: 1}
center:
m_OverrideState: 0
m_Value: {x: 0.5, y: 0.5}
intensity:
m_OverrideState: 1
m_Value: 0.25
smoothness:
m_OverrideState: 1
m_Value: 0.4
rounded:
m_OverrideState: 0
m_Value: 0
--- !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: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: StencilPortalSceneProfile
m_EditorClassIdentifier:
components:
- {fileID: 849379129802519247}
- {fileID: -7893295128165547882}
- {fileID: -7011558710299706105}
--- !u!114 &849379129802519247
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: 97c23e3b12dc18c42a140437e53d3951, type: 3}
m_Name: Tonemapping
m_EditorClassIdentifier:
active: 1
mode:
m_OverrideState: 1
m_Value: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1686cdfabf14e21438f3226ab4435279
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -35,6 +35,24 @@ MonoBehaviour:
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
--- !u!114 &-1381608776974771741
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: 19d058f65954fe84dacdf8eae0a2a980, type: 3}
m_Name: Portal Stencil
m_EditorClassIdentifier:
m_Active: 1
settings:
layer:
serializedVersion: 2
m_Bits: 128
material: {fileID: 2100000, guid: f6db0041cc34fe9439de56d5d92c8b8d, type: 2}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -52,9 +70,11 @@ MonoBehaviour:
type: 3}
m_RendererFeatures:
- {fileID: -1878332245247344467}
m_RendererFeatureMap: adc0de57c6d2eee5
- {fileID: -1381608776974771741}
- {fileID: 7693142412764493824}
m_RendererFeatureMap: adc0de57c6d2eee5e359db2d238ad3ec00b851af4388c36a
m_UseNativeRenderPass: 0
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
postProcessData: {fileID: 0}
xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
shaders:
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
@@ -75,10 +95,10 @@ MonoBehaviour:
m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_Bits: 119
m_TransparentLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_Bits: 2147483647
m_DefaultStencilState:
overrideStencilState: 0
stencilReference: 0
@@ -92,3 +112,21 @@ MonoBehaviour:
m_CopyDepthMode: 0
m_AccurateGbufferNormals: 0
m_IntermediateTextureMode: 1
--- !u!114 &7693142412764493824
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: 19d058f65954fe84dacdf8eae0a2a980, type: 3}
m_Name: Full Screen Depth
m_EditorClassIdentifier:
m_Active: 1
settings:
layer:
serializedVersion: 2
m_Bits: 256
material: {fileID: 2100000, guid: 782cb59e6f5f438478bdd855cf549ff3, type: 2}

View File

@@ -80,6 +80,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_StartingHoverFilters: []
m_StartingSelectFilters: []
--- !u!114 &7423186386015115176
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -425,6 +427,13 @@ MonoBehaviour:
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
quality: 3
frameInfluence: 0.1
jitterScale: 1
mipBias: 0
varianceClampScale: 0.9
contrastAdaptiveSharpening: 0
--- !u!114 &419816428804372192
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -827,6 +836,18 @@ MonoBehaviour:
m_Flags: 0
m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f,
type: 3}
m_DirectionalAnchorRotationAction:
m_UseReference: 0
m_Action:
m_Name:
m_Type: 0
m_ExpectedControlType:
m_Id:
m_Processors:
m_Interactions:
m_SingletonActionBindings: []
m_Flags: 0
m_Reference: {fileID: 0}
m_TranslateAnchorAction:
m_UseReference: 1
m_Action:
@@ -875,6 +896,8 @@ MonoBehaviour:
m_SelectExited:
m_PersistentCalls:
m_Calls: []
m_StartingHoverFilters: []
m_StartingSelectFilters: []
m_OnHoverEntered:
m_PersistentCalls:
m_Calls: []
@@ -890,6 +913,7 @@ MonoBehaviour:
m_SelectActionTrigger: 0
m_HideControllerOnSelect: 1
m_AllowHoveredActivate: 0
m_TargetPriorityMode: 0
m_PlayAudioClipOnSelectEntered: 0
m_AudioClipForOnSelectEntered: {fileID: 0}
m_PlayAudioClipOnSelectExited: 0
@@ -902,6 +926,7 @@ MonoBehaviour:
m_AudioClipForOnHoverExited: {fileID: 0}
m_PlayAudioClipOnHoverCanceled: 0
m_AudioClipForOnHoverCanceled: {fileID: 0}
m_AllowHoverAudioWhileSelecting: 1
m_PlayHapticsOnSelectEntered: 0
m_HapticSelectEnterIntensity: 0
m_HapticSelectEnterDuration: 0
@@ -920,6 +945,7 @@ MonoBehaviour:
m_PlayHapticsOnHoverCanceled: 0
m_HapticHoverCancelIntensity: 0
m_HapticHoverCancelDuration: 0
m_AllowHoverHapticsWhileSelecting: 1
--- !u!135 &419816429261119717
SphereCollider:
m_ObjectHideFlags: 0
@@ -996,6 +1022,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8899029464470268750}
- {fileID: 419816428804372186}
- {fileID: 419816428871882043}
- {fileID: 419816428230682310}
@@ -1204,6 +1231,18 @@ MonoBehaviour:
m_Flags: 0
m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f,
type: 3}
m_DirectionalAnchorRotationAction:
m_UseReference: 0
m_Action:
m_Name:
m_Type: 0
m_ExpectedControlType:
m_Id:
m_Processors:
m_Interactions:
m_SingletonActionBindings: []
m_Flags: 0
m_Reference: {fileID: 0}
m_TranslateAnchorAction:
m_UseReference: 1
m_Action:
@@ -1252,6 +1291,8 @@ MonoBehaviour:
m_SelectExited:
m_PersistentCalls:
m_Calls: []
m_StartingHoverFilters: []
m_StartingSelectFilters: []
m_OnHoverEntered:
m_PersistentCalls:
m_Calls: []
@@ -1267,6 +1308,7 @@ MonoBehaviour:
m_SelectActionTrigger: 0
m_HideControllerOnSelect: 1
m_AllowHoveredActivate: 0
m_TargetPriorityMode: 0
m_PlayAudioClipOnSelectEntered: 0
m_AudioClipForOnSelectEntered: {fileID: 0}
m_PlayAudioClipOnSelectExited: 0
@@ -1279,6 +1321,7 @@ MonoBehaviour:
m_AudioClipForOnHoverExited: {fileID: 0}
m_PlayAudioClipOnHoverCanceled: 0
m_AudioClipForOnHoverCanceled: {fileID: 0}
m_AllowHoverAudioWhileSelecting: 1
m_PlayHapticsOnSelectEntered: 0
m_HapticSelectEnterIntensity: 0
m_HapticSelectEnterDuration: 0
@@ -1297,6 +1340,7 @@ MonoBehaviour:
m_PlayHapticsOnHoverCanceled: 0
m_HapticHoverCancelIntensity: 0
m_HapticHoverCancelDuration: 0
m_AllowHoverHapticsWhileSelecting: 1
--- !u!135 &419816429507230469
SphereCollider:
m_ObjectHideFlags: 0
@@ -1467,6 +1511,13 @@ MonoBehaviour:
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
quality: 3
frameInfluence: 0.1
jitterScale: 1
mipBias: 0
varianceClampScale: 0.9
contrastAdaptiveSharpening: 0
--- !u!45 &5022442269360360064
Skybox:
m_ObjectHideFlags: 0
@@ -1476,6 +1527,89 @@ Skybox:
m_GameObject: {fileID: 2085627837412252196}
m_Enabled: 1
m_CustomSkybox: {fileID: 2100000, guid: b543b13595b5be247a0ef19ffdc5344b, type: 2}
--- !u!1 &2568228429582054369
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8899029464470268750}
- component: {fileID: 1849821769407793398}
- component: {fileID: 3570884732983062426}
m_Layer: 8
m_Name: FullScreenDepth
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8899029464470268750
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2568228429582054369}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0, z: 1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 419816429471595185}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1849821769407793398
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2568228429582054369}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3570884732983062426
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2568228429582054369}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 782cb59e6f5f438478bdd855cf549ff3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7679811165581607628
GameObject:
m_ObjectHideFlags: 0

View File

@@ -13,7 +13,7 @@ TagManager:
- UI
- VR
- Portals
-
- FullScreenDepth
-
-
-