iOS15暗黑模式切换时Unity透明灰度Shader显示异常问题
iOS 15 下自定义灰度 Unlit Shader 随暗黑模式显示异常问题
我使用了如下自定义Unlit Shader实现图片转灰度效果,同时支持透明通道处理,该Shader在iOS 15以下系统中运行完全正常。设备升级至iOS 15后,场景渲染时该Shader出现显示异常,经过多轮排查发现异常与iPhone暗黑模式开关相关:
异常效果对比:
该灰度Shader被应用在红色立方体上:
- 立方体A为开启暗黑模式的iPhone上的渲染结果,与Unity编辑器内的预期效果一致
- 立方体B为关闭暗黑模式时同一对象的渲染结果
由于我在应用内大量使用该Shader,该问题会导致应用UI表现随用户暗黑模式偏好出现不一致,影响使用体验。我个人判断问题并非出在Shader本身,推测可能是iOS 15对带透明效果的Shader处理逻辑有变动,请问该问题是Unity与iOS 15适配的已知Bug,还是我的Shader存在遗漏配置项?
附使用的Shader代码
Shader "Unlit/NewUnlitShader" { Properties { _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} _EffectAmount ("Effect Amount", Range (0, 1)) = 1.0 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } LOD 200 Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; half2 texcoord : TEXCOORD0; }; sampler2D _MainTex; float4 _MainTex_ST; uniform float _EffectAmount; v2f vert (appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag (v2f i) : SV_Target { fixed4 c = tex2D(_MainTex, i.texcoord); c.rgb = lerp(c.rgb, dot(c.rgb, float3(0.3, 0.59, 0.11)), _EffectAmount); return c; } ENDCG } } Fallback "Standard" }
【更新-已确认】该问题属于已知Bug,Unity开发团队已收到相关反馈。
内容的提问来源于stack exchange,提问作者user15199268
相关产品推荐
相关产品推荐

