好的,有很多关于此的帖子,但我跟随了大部分帖子,无法找到解决方案。我是着色器的菜鸟,我无法理解这一点。
我有2个移动的球体是透明的 - 当它们的网格重叠时我希望它们看起来像是一个 - 这意味着它们保持透明但彼此不重叠。到目前为止,这就是我所拥有的:
我看了https://docs.unity3d.com/Manual/SL-CullAndDepth.html并从https://forum.unity3d.com/threads/non-overlapping-transparency-for-several-objects.271277/获得了这个着色器,这就是我如何处理重叠的一些重复:
Shader "Custom/Diffuse ZWrite" {
Properties
{
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader
{
Tags
{
// I HAD TO REMOVE THE LINE "Queue"="Transparent"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
}
LOD 200
// extra pass that renders to depth buffer only
Pass
{
ZWrite On
ColorMask 0
Cull Back
}
UsePass "Transparent/Diffuse/FORWARD"
}
FallBack "Transparent"
}
当我将渲染队列切换到Alphatest时,我获得了所需的效果,但是在游戏开始时它没有出现,在场景中在线
我不明白为什么会这样,而且我不知道如何解决我的问题。如何阻止透明材料重叠?