[Shader/渲染] 描边 Outline

查看:753 |回复:8 | 2024-8-12 18:29:35
99元素币

  1. Properties
  2.     {
  3.         _MainTex("MainTex", 2D) = "white"{}
  4.         _Diffuse("Color", Color) = (1,1,1,1)
  5.         _Outline("Outline", Range(-2, 2)) = 0.1
  6.         _OutlineColor("OutlineColor", Color) = (0,0,0,0)
  7. }
  8.     SubShader
  9.     {
  10.         Tags {
  11.             "RenderType" = "Opaque"
  12.         }
  13.         LOD 100

  14.        Pass
  15.         {
  16.             Name "OutLine"
  17.             Cull Front
  18.             
  19.             CGPROGRAM
  20.             #pragma vertex vert
  21.             #pragma fragment frag
  22.             #include "UnityCG.cginc"
  23.             
  24.             float _Outline;
  25.             fixed4 _OutlineColor;

  26.             struct v2f
  27.             {
  28.                 float4 vertex : SV_POSITION;
  29.             };
  30.             
  31.             v2f vert (appdata_base v)
  32.             {
  33.                 v2f o;
  34.                 v.vertex.xyz += v.normal * _Outline;
  35.                 o.vertex = UnityObjectToClipPos(v.vertex);

  36.                 return o;
  37.             }
  38.             
  39.             float4 frag (v2f i) : SV_Target
  40.             {
  41.                 return float4(_OutlineColor.xyz, 1);
  42.             }
  43.             ENDCG
  44.         }

  45.         Pass
  46.         {
  47.             Cull Back
  48.             //Blend Zero One

  49.             CGPROGRAM
  50.             #pragma vertex vert
  51.             #pragma fragment frag
  52.             #include "UnityCG.cginc"
  53.             #include "Lighting.cginc"
  54.             
  55.             sampler2D _MainTex;
  56.             float4 _MainTex_ST;
  57.             fixed4 _Diffuse;

  58.             struct v2f
  59.             {
  60.                 float4 vertex : SV_POSITION;
  61.                 float2 uv: TEXCOORD0;
  62.                 fixed3 worldNormal : TEXCOORD1;
  63.                 float3 worldPos : TEXCOORD2;

  64.             };


  65.             v2f vert (appdata_base v)
  66.             {
  67.                 v2f o;
  68.                 o.vertex = UnityObjectToClipPos(v.vertex);                         //转换坐标到裁剪空间
  69.                 o.worldNormal = UnityObjectToWorldNormal(v.normal);                //物体法线转世界法线
  70.                 o.worldPos = mul(unity_ObjectToWorld,v.vertex);                    //顶点位置信息转世界位置信息
  71.                 o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);

  72.                 return o;
  73.             }

  74.             fixed4 frag (v2f i) : SV_Target
  75.             {
  76.                 fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;                     //环境光

  77.                 fixed4 albedo = tex2D(_MainTex,i.uv);

  78.                 //漫反射
  79.                 fixed3 worldLightDir = UnityWorldSpaceLightDir(i.worldPos);        //求光源方向

  80.                 float difLight = dot(worldLightDir,i.worldNormal) * 0.5 + 0.5;
  81.                 fixed3 diffuse = _LightColor0.rgb * albedo.rgb * _Diffuse.rgb * difLight;

  82.                 //fixed3 viewDir = normalize(UnityWorldSpaceViewDir(i.worldPos));

  83.                 //fixed3 halfDir = normalize(worldLightDir + viewDir);

  84.                 fixed3 color = diffuse + ambient ;
  85.                 return fixed4(color,1);
  86.             }
  87.             ENDCG
  88.         }

  89.     }
点击此处复制文本

image.png
描边效果 用了两段Pass 这是正常效果 但我的场景中却是红色这个效果 image.png
Outline值改为负的也不能出现带有贴图的渲染 我想知道问题出在哪


【全场最佳】会公开答案中的下载地址,如果您希望答案是收费内容,请在正确区【发帖】,并回复帖子地址。

2024-8-12 18:29:35  
 赞 赞 1

使用道具 登录

8个回答,把该问题分享到群,邀请大神一起回答。
2#
问题解决了 urp下得加tag image.png

虽然不知道这行什么意思
回复 收起回复
2024-8-13 17:19:40   回复
 赞 赞 2

使用道具 登录

3#
回复 收起回复
2024-8-14 15:04:20   回复
 赞 赞 1

使用道具 登录

4#
从业不识微元素,做遍项目也枉然
回复 收起回复
2024-8-15 00:55:19   回复
 赞 赞 0

使用道具 登录

5#
回复 收起回复
2024-8-21 10:05:29   回复
 赞 赞 0

使用道具 登录

6#
(⊙o⊙)…
回复 收起回复
2024-8-27 10:12:04   回复
 赞 赞 1

使用道具 登录

7#

(⊙o⊙)…
回复 收起回复
2024-9-3 11:56:57   回复
 赞 赞 0

使用道具 登录

8#
顶个贴 学习一波 感谢大佬分享
回复 收起回复
2024-10-24 00:25:59   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

ShaderOutlinePass
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表