fix stencil pass
This commit is contained in:
@@ -1,21 +1,16 @@
|
||||
Shader "Escape Room Engine/FullScreenDepth" {
|
||||
Properties {
|
||||
_PortalNumber ("Portal Number", Int) = 1
|
||||
}
|
||||
Properties {}
|
||||
|
||||
SubShader {
|
||||
Pass
|
||||
{
|
||||
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
|
||||
Stencil {
|
||||
Ref 1
|
||||
Comp LEqual
|
||||
}
|
||||
|
||||
CGPROGRAM
|
||||
@@ -23,18 +18,16 @@
|
||||
#pragma fragment frag
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
void vert(appdata_img v, out float4 pos : SV_POSITION)
|
||||
{
|
||||
#ifdef UNITY_REVERSED_Z
|
||||
void vert(appdata_img v, out float4 pos : SV_POSITION) {
|
||||
#ifdef UNITY_REVERSED_Z // clip space [near 1, 0 far]
|
||||
float far = 0.00001;
|
||||
#else
|
||||
#else // clip space [near -1, 1 far]
|
||||
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
|
||||
{
|
||||
fixed4 frag() : SV_Target {
|
||||
return 0;
|
||||
}
|
||||
ENDCG
|
||||
|
||||
@@ -25,6 +25,6 @@ Material:
|
||||
m_TexEnvs: []
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _PortalNumber: 1
|
||||
- _PortalNumber: 0
|
||||
m_Colors: []
|
||||
m_BuildTextureStacks: []
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
Shader "Escape Room Engine/PortalStencil"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_PortalNumber ("Portal Number", Int) = 1
|
||||
Shader "Escape Room Engine/PortalStencil" {
|
||||
Properties {
|
||||
_PortalNumber ("Portal Number", Int) = 0
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags
|
||||
{
|
||||
"RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
SubShader {
|
||||
Pass {
|
||||
ColorMask 0 // don't draw this to the main framebuffer
|
||||
|
||||
Pass
|
||||
{
|
||||
ColorMask 0
|
||||
|
||||
Stencil
|
||||
{
|
||||
Stencil {
|
||||
Ref [_PortalNumber]
|
||||
Comp Always // always pass
|
||||
Pass Replace // set stencil value
|
||||
|
||||
@@ -1,5 +1,51 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2713893991261817724
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2582669991302867501}
|
||||
- component: {fileID: 7726674486241786965}
|
||||
m_Layer: 0
|
||||
m_Name: Camera Transform
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2582669991302867501
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2713893991261817724}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2246995198243242195}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7726674486241786965
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2713893991261817724}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ad60e3973ab83f3468637a06970d7f1f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
minNearClipPlane: 0.0001
|
||||
portal: {fileID: 1249363658}
|
||||
--- !u!1 &5366957160841664999
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -61,7 +107,7 @@ MeshRenderer:
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 603cda73335499d4980d9b171eaffe0d, type: 2}
|
||||
- {fileID: 2100000, guid: f6db0041cc34fe9439de56d5d92c8b8d, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
@@ -116,6 +162,7 @@ Transform:
|
||||
- {fileID: 4697416823958963037}
|
||||
- {fileID: 9135323956734471646}
|
||||
- {fileID: 2398425302420252226}
|
||||
- {fileID: 2582669991302867501}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@@ -133,7 +180,8 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
size: {x: 1, y: 1}
|
||||
linkedPortal: {fileID: 0}
|
||||
portalCamera: {fileID: 17691322601746172}
|
||||
screen: {fileID: 5871497001431693362}
|
||||
cameraTransform: {fileID: 7726674486241786965}
|
||||
portalTransform: {fileID: 2246995198243242195}
|
||||
--- !u!65 &7604291350124895408
|
||||
BoxCollider:
|
||||
@@ -174,7 +222,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &2398425302420252226
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -298,7 +346,6 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
minNearClipPlane: 0.0001
|
||||
portal: {fileID: 1249363658}
|
||||
screen: {fileID: 5871497001431693362}
|
||||
--- !u!1 &8470391359842711396
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -4,6 +4,7 @@ using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace EscapeRoomEngine.Portal.Runtime
|
||||
{
|
||||
@@ -12,9 +13,10 @@ namespace EscapeRoomEngine.Portal.Runtime
|
||||
/// </summary>
|
||||
public class Portal : DoorState
|
||||
{
|
||||
private static readonly int PortalNumberProperty = Shader.PropertyToID("_PortalNumber");
|
||||
public static readonly Matrix4x4 HalfRotation = Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0));
|
||||
|
||||
private static int _portalCounter;
|
||||
private static int _portalCounter = 1;
|
||||
|
||||
/// <summary>
|
||||
/// The portal that is connected with this one.
|
||||
@@ -40,6 +42,7 @@ namespace EscapeRoomEngine.Portal.Runtime
|
||||
protected virtual void Awake()
|
||||
{
|
||||
PortalNumber = _portalCounter++;
|
||||
screen.material.SetInt(PortalNumberProperty, PortalNumber);
|
||||
|
||||
DoorEvent += (_, type) =>
|
||||
{
|
||||
|
||||
@@ -33,9 +33,7 @@ namespace EscapeRoomEngine.Portal.Runtime
|
||||
},
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -46,7 +44,6 @@ namespace EscapeRoomEngine.Portal.Runtime
|
||||
public class Settings
|
||||
{
|
||||
public LayerMask layer;
|
||||
public Material material;
|
||||
}
|
||||
|
||||
public Settings settings = new();
|
||||
@@ -56,8 +53,6 @@ namespace EscapeRoomEngine.Portal.Runtime
|
||||
_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);
|
||||
|
||||
@@ -518,14 +518,14 @@ Transform:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 259858787}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalRotation: {x: 0.1297753, y: -0, z: -0, w: 0.9915434}
|
||||
m_LocalPosition: {x: 0.118, y: 0.559, z: -0.185}
|
||||
m_LocalScale: {x: 0.13379, y: 0.13379, z: 0.13379}
|
||||
m_LocalScale: {x: 0.13379, y: 0.28, z: 0.13379}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1453220877}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_LocalEulerAnglesHint: {x: 14.913, y: 0, z: 0}
|
||||
--- !u!23 &259858790
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -662,12 +662,12 @@ PrefabInstance:
|
||||
- target: {fileID: 6854256365667908692, guid: ecbf9ce952d5f38458b8237a4483c562,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 1
|
||||
value: 1.0000001
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6854256365667908692, guid: ecbf9ce952d5f38458b8237a4483c562,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -1
|
||||
value: -1.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6854256365667908692, guid: ecbf9ce952d5f38458b8237a4483c562,
|
||||
type: 3}
|
||||
@@ -1893,17 +1893,17 @@ PrefabInstance:
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
value: 0.4
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
value: -1.778
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
value: -0.2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
@@ -1945,16 +1945,6 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: Portal In
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5635962022185625128, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7398326895463990628, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
@@ -2158,7 +2148,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
value: -0.3999997
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
@@ -2168,12 +2158,12 @@ PrefabInstance:
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0.14
|
||||
value: 1.1400003
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 0.00000058114523
|
||||
value: -1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
@@ -2183,7 +2173,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -1
|
||||
value: -0.0000001490116
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
@@ -2198,7 +2188,7 @@ PrefabInstance:
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: -180
|
||||
value: -360
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2246995198243242195, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
@@ -2210,11 +2200,6 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: Portal Out
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5635962022185625128, guid: c50e7df1078c96f46bc6825f7e422fb7,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
|
||||
@@ -52,7 +52,6 @@ MonoBehaviour:
|
||||
layer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 128
|
||||
material: {fileID: 2100000, guid: f6db0041cc34fe9439de56d5d92c8b8d, type: 2}
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -129,4 +128,3 @@ MonoBehaviour:
|
||||
layer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 256
|
||||
material: {fileID: 2100000, guid: 782cb59e6f5f438478bdd855cf549ff3, type: 2}
|
||||
|
||||
Reference in New Issue
Block a user