Outline shader unity类似于gizmo Editor

Outline shader unity similar to the gizmo Editor

不知道能不能得到和编辑器一样的大纲。 Like this

我试过使用这个脚本https://github.com/michaelcurtiss/UnityOutlineFX

并得到this as a result

我不确定您是如何应用您链接到的 Github 存储库中的脚本的。看起来轮廓着色器仅应用于您 post 编辑的 3D 模型上的叶子 material,但是我相信此轮廓效果是 运行 作为 post 处理或更换着色器。我认为当你应该将它附加到相机时,你正在附加一个脚本或对树叶的引用。


更新:我下载了 repo 并更改了 "UnityOutlineFX.cs" 脚本以使用多个 materials(问题是脚本最初只是概述索引 0 中的 material)。修复在 RecreateCommandBuffer() 函数中,我添加了以下代码(注意 for-loop 通过不同的 materials):

// 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);
        }
    }
}

原来的问题(只有一个 material 被勾勒出来,这张图片中的蓝色和橙色物体是一个网格的一部分)

在具有三个子网格和两个不同 materials.

的网格(橙色和蓝色网格)上工作的轮廓