Shader "Custom/OutLine" {Properties {
_Color ("Main Color", Color) = (.5,.5,.5,1)
_OutlineColor ("Outline Color", Color) = (0,0,0,1)
//_Outline ("Outline width", Range (0.0, 0.03)) = .005
_Outline ("Outline width", Range (0.0, 0.5)) = .005
_MainTex ("Base (RGB)", 2D) = "white" { }
}
CGINCLUDE
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f {
float4 pos : POSITION;
float4 color : COLOR;
};
uniform float _Outline;
uniform float4 _OutlineColor;
v2f vert(appdata v) {
v2f o;
// 方法1
//o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
//float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);
// 应该是要用UNITY_MATRIX_P的逆转置矩阵去变换,这样为什么不用呢?
// 如果一个矩阵是正交矩阵,那么转置与逆相等,所以逆转置就等于原来的矩阵,UNITY_MATRIX_P == 正交矩阵?
// 在C#上打印了,Camera.main.projectionMatrix.inverse, Camera.main.projectionMatrix.transpose,不是相同的
// 目前理解:
// 不利用UNITY_MATRIX_P的逆转置变换法线,得到的法线可能会偏了,但是,现
Unity Shader Example 23 (透明物体描边)
最新推荐文章于 2025-08-29 15:22:58 发布
这篇博客介绍了如何在Unity3D中创建一个自定义Shader,用于给透明物体添加描边效果。Shader代码包含两个Pass,分别处理透明度和描边效果,通过调整Outline宽度和颜色,可以实现物体边缘的视觉突出。

最低0.47元/天 解锁文章
2612

被折叠的 条评论
为什么被折叠?



