轮廓着色器统一,类似于Gizmo编辑器

时间:2019-05-07 13:12:44

标签: unity3d shader outline

我想知道我能否获得与编辑器中相同的轮廓。 Like this

我尝试使用此脚本https://github.com/michaelcurtiss/UnityOutlineFX

并获得this as a result

1 个答案:

答案 0 :(得分:0)

我不确定您如何在链接到的Github存储库中应用脚本。看起来轮廓着色器仅应用于您发布的3D模型上的叶子材质,但是我认为此轮廓效果旨在作为后期处理或替换着色器运行。我认为您应该将脚本或参考书附加到树上的叶子上时,才应将其附加到摄像机上。


更新:我下载了该存储库,并更改了“ UnityOutlineFX.cs”脚本以使用多种材料(问题是该脚本最初仅概述了索引0中的材料)。该修复程序位于RecreateCommandBuffer()函数中,我添加了以下代码(请注意不同材料的for循环):

// render selected objects into a mask buffer, with different colors for visible vs occluded ones 
float id = 0f;
foreach (var collection in _objectRenderers)
{
    id += 0.25f;
    _commandBuffer.SetGlobalFloat("_ObjectId", id);

    foreach (var render in collection)
    {
        for(var i=0; i<render.sharedMaterials.Length; i++) {
            _commandBuffer.DrawRenderer(render, _outlineMaterial, i, 1);
            _commandBuffer.DrawRenderer(render, _outlineMaterial, i, 0);
        }
    }
}

The original problem (only one material was being outlined, with the blue and orange objects in this picture being part of one mesh)

最初的问题(仅勾勒出一种材料,该图片中的蓝色和橙色对象是一个网格的一部分)

enter image description here 在具有三个子网格和两种不同材质的网格(橙色和蓝色网格)上工作的轮廓。