请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
原文地址
以下是基于你提供的内容的总结和解读,保留示例代码和图片链接:
轮廓着色器的工作原理与优化 1. 经典轮廓技术 起源:在 2003 年游戏《XIII》中首次看到 3D 对象的轮廓效果,使用固定功能管线实现。 实现方式:通过网格的外壳(Outer Hull)和反转法线绘制轮廓,覆盖黑色纹理。 现代改进:使用顶点着色器在单独 Pass 中渲染略微膨胀的网格,剔除正面。 2. 经典轮廓技术的局限性 局限性 描述 轮廓宽度不均匀 轮廓宽度随物体形状和视角变化。 透视缩短 轮廓宽度随物体远离相机而变窄(透视投影)。 对象空间单位 轮廓宽度以对象空间单位指定,而非像素。 3. 经典轮廓着色器代码 Shader "Tutorial/Outline" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) _Glossiness ("Smoothness", Range(0, 1)) = 0.5 _Metallic ("Metallic", Range(0, 1)) = 0 _OutlineColor ("Outline Color", Color) = (0, 0, 0, 1) _OutlineWidth ("Outline Width", Range(0, 0.1)) = 0.03 } Subshader { Tags { "RenderType" = "Opaque" } CGPROGRAM #pragma surface surf Standard fullforwardshadows Input { float4 color : COLOR; } half4 _Color; half _Glossiness; half _Metallic; void surf(Input IN, inout SufaceStandardOutput o) { o.