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

use*_*786 1 shader outline unity-game-engine

我想知道我是否能得到与编辑器中相同的大纲。 像这样

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

得到这个结果

Nic*_*her 5

我不确定您如何应用链接到的 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最初的问题(仅概述了一种材质,图中的蓝色和橙色物体是一个网格的一部分)

最初的问题(仅概述了一种材质,图中的蓝色和橙色物体是一个网格的一部分)

在此输入图像描述 具有三个子网格和两种不同材质的网格(橙色和蓝色网格)上的轮廓。