kMirrors icon indicating copy to clipboard operation
kMirrors copied to clipboard

Mirror does not work when using an overlay camera

Open akauper opened this issue 5 years ago • 4 comments

If a base and overlay camera are being used in the scene the mirror will not work as expected.

akauper avatar Aug 12 '20 02:08 akauper

A quick fix: In Mirror.cs after line 207 add:

var camData = camera.GetUniversalAdditionalCameraData();
if (camData.renderType == CameraRenderType.Overlay)
         return;

akauper avatar Aug 12 '20 02:08 akauper

A multisampled texture being bound to a non-multisampled sampler. Disabling in order to avoid undefined behavior. Please use Texture2DMS in the shader. UnityEngine.Rendering.Universal.UniversalRenderPipeline:RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera) kTools.Mirrors.Mirror:RenderMirror (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera) (at Library/PackageCache/com.kink3d.mirrors@79b0526e5d/Runtime/Mirror.cs:261) kTools.Mirrors.Mirror:BeginCameraRendering (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera) (at Library/PackageCache/com.kink3d.mirrors@79b0526e5d/Runtime/Mirror.cs:236) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

a base and overlay camera are being used in the scene the mirror will not work as expected.

qiushuisuoyue avatar Apr 02 '22 09:04 qiushuisuoyue

sampler2D _ReflectionMap; float4 _ReflectionMap_ST;

        v2f vert (appdata v)
        {
            v2f o;
            o.vertex = TransformObjectToHClip(v.vertex.xyz);
            o.uv = TRANSFORM_TEX(v.uv, _ReflectionMap);
            o.screenPos = ComputeScreenPos(o.vertex);
            return o;
        }

        half4 frag(v2f i) : SV_Target
        {
            float2 uv = i.screenPos.xy / i.screenPos.w;
            half4 col = tex2D(_ReflectionMap, uv);
            return col;
        }

unity 2021.2.3

qiushuisuoyue avatar Apr 02 '22 09:04 qiushuisuoyue

A quick fix: In Mirror.cs after line 207 add:

var camData = camera.GetUniversalAdditionalCameraData();
if (camData.renderType == CameraRenderType.Overlay)
         return;

Damm, THANK YOU!

Nightfury420 avatar Mar 21 '23 10:03 Nightfury420