查看: 138|回复: 1

[特效Shader] 圆润变平的shader smooth to flat unity

[复制链接]

442

主题

75

听众

4093

积分

头头

Rank: 12Rank: 12Rank: 12

发表于 2020-4-10 13:25 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!
资源信息 Asset Information
资源名称: 圆润变平的shader smooth to flat unity (点击进入官方资源商店查询)
适用引擎: (资源适用引擎)
版本: (资源版本)
资源等级: 小白 (等级越高资源越稀有)
资源格式: .unitypackage (因华为网盘倒闭,如链接没更新造成无法下载的,请点击帖子右下方举报通知管理员及时更新)
资源大小: 1kb (默认:MB 注: 请用IE9以上浏览器访问本版块)
点击查看原图
--> 请先回复
哇伊~ (((‵□′))回复太烦了,怒买VIP(充值金额将贡献于更多资源的采购)
--> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 --> 请先登录 -->
美丽分割线
  1. Shader "Custom/Geometry/FlatShading"
  2. {
  3.     Properties
  4.     {
  5.         _Color("Color", Color) = (1,1,1,1)
  6.         _MainTex("Albedo", 2D) = "white" {}
  7.     }
  8.    
  9.     SubShader
  10.     {

  11.         Tags{ "Queue"="Geometry" "RenderType"= "Opaque" "LightMode" = "ForwardBase" }

  12.         Pass
  13.         {
  14.             CGPROGRAM

  15.             #include "UnityCG.cginc"
  16.             #pragma vertex vert
  17.             #pragma geometry geom
  18.             #pragma fragment frag

  19.             float4 _Color;
  20.             sampler2D _MainTex;

  21.             struct v2g
  22.             {
  23.                 float4 pos : SV_POSITION;
  24.                 float2 uv : TEXCOORD0;
  25.                 float3 vertex : TEXCOORD1;
  26.             };

  27.             struct g2f
  28.             {
  29.                 float4 pos : SV_POSITION;
  30.                 float2 uv : TEXCOORD0;
  31.                 float light : TEXCOORD1;
  32.             };

  33.             v2g vert(appdata_full v)
  34.             {
  35.                 v2g o;
  36.                 o.vertex = v.vertex;
  37.                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  38.                 o.uv = v.texcoord;
  39.                 return o;
  40.             }

  41.             [maxvertexcount(3)]
  42.             void geom(triangle v2g IN[3], inout TriangleStream<g2f> triStream)
  43.             {
  44.                 g2f o;

  45.                 // Compute the normal
  46.                 float3 vecA = IN[1].vertex - IN[0].vertex;
  47.                 float3 vecB = IN[2].vertex - IN[0].vertex;
  48.                 float3 normal = cross(vecA, vecB);
  49.                 normal = normalize(mul(normal, (float3x3) unity_WorldToObject));

  50.                 // Compute diffuse light
  51.                 float3 lightDir = normalize(_WorldSpaceLightPos0.xyz);
  52.                 o.light = max(0., dot(normal, lightDir));

  53.                 // Compute barycentric uv
  54.                 o.uv = (IN[0].uv + IN[1].uv + IN[2].uv) / 3;

  55.                 for(int i = 0; i < 3; i++)
  56.                 {
  57.                     o.pos = IN[i].pos;
  58.                     triStream.Append(o);
  59.                 }
  60.             }

  61.             half4 frag(g2f i) : COLOR
  62.             {
  63.                 float4 col = tex2D(_MainTex, i.uv);
  64.                 col.rgb *= i.light * _Color;
  65.                 return col;
  66.             }

  67.             ENDCG
  68.         }
  69.     }
  70.     Fallback "Diffuse"
  71. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

楼主热帖
人人为我 我为人人 互相分享 互相学习 互相进步 一带一路

0

主题

16

听众

13

积分

问题学生

Rank: 1

升级   6.5%

发表于 2020-4-12 23:30 |显示全部楼层

感谢楼主的无私分享!
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 粤ICP备20003399号-2 )

GMT+8, 2020-6-1 17:03 , Processed in 0.062187 second(s), 77 queries .