使用透明立方体渲染顺序(3D透视摄像头,标准着色器)

时间:2016-12-08 12:00:47

标签: unity3d camera transparency game-engine transparent

我制作了一个半透明立方体的场景。在每个立方体的内部,有另一个(略小)立方体,网格翻转,因此立方体的墙壁从内部和外部都可见。我的问题是立方体的排序是不正确的。如果我在游戏运行时用相机环顾四周,立方体的顺序就会开始跳跃。正如您在图像中看到的那样,左上方的灰色立方体是来回跳跃的。

Correct Incorrect

我使用3rd Person Controller + Fly Mode作为我的播放器控制器。所有立方体都使用标准着色器。另外值得一提的是,立方体和相应的材料是从C#脚本生成的。

为每个多维数据集执行此操作以启用透明度:

material.SetFloat("_Mode", 3f);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 0);
material.DisableKeyword("_ALPHATEST_ON");
material.DisableKeyword("_ALPHABLEND_ON");
material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = 3000;

我已经尝试将相机设置为Camera.transparencySortMode = TransparencySortMode.Orthographic,因为我发现这是论坛中的提示,但这使情况变得更糟。

实际上我希望这只是开箱即用。但似乎我必须做一些特别的事情才能让我的用例工作。但是什么? :)

0 个答案:

没有答案