12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 3842|回复: 15
打印 上一主题 下一主题

各向异性高光shader

[复制链接]

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

跳转到指定楼层
楼主
发表于 2011-8-26 08:34:08 |只看该作者 |倒序浏览
这个shader可以用来做一做各种餐具的shader,下面是截图:


具体代码如下:

Shader "Bumped Anisotropic Specular" {

     Properties {

         _Color ("Main Color", Color) = (1,1,1,1)

         _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = "white" {}

         _SpecularTex ("Specular (R) Gloss (G) Anisotropic Mask (B)", 2D) = "gray" {}

         _BumpMap ("Normal (Normal)", 2D) = "bump" {}

         _AnisoTex ("Anisotropic Direction (RGB)", 2D) = "bump" {}

         _AnisoOffset ("Anisotropic Highlight Offset", Range(-1,1)) = -0.2

         _Cutoff ("Alpha Cut-Off Threshold", Range(0,1)) = 0.5

     }
     SubShader{

         Tags { "RenderType" = "Opaque" }

     

         CGPROGRAM

         

             struct SurfaceOutputAniso {

                 fixed3 Albedo;

                 fixed3 Normal;

                 fixed4 AnisoDir;

                 fixed3 Emission;

                 half Specular;

                 fixed Gloss;

                 fixed Alpha;

             };
             float _AnisoOffset, _Cutoff;

             inline fixed4 LightingAniso (SurfaceOutputAniso s, fixed3 lightDir, fixed3 viewDir, fixed atten)

             {

                fixed3 h = normalize(normalize(lightDir) + normalize(viewDir));

                float NdotL = saturate(dot(s.Normal, lightDir));
                fixed HdotA = dot(normalize(s.Normal + s.AnisoDir.rgb), h);

                float aniso = max(0, sin(radians((HdotA + _AnisoOffset) * 180)));
                float spec = saturate(dot(s.Normal, h));

                spec = saturate(pow(lerp(spec, aniso, s.AnisoDir.a), s.Gloss * 128) * s.Specular);
                fixed4 c;

                c.rgb = ((s.Albedo * _LightColor0.rgb * NdotL) + (_LightColor0.rgb * spec)) * (atten * 2);

                c.a = 1;

                clip(s.Alpha - _Cutoff);

                return c;

             }
             #pragma surface surf Aniso

             #pragma target 3.0

            

             struct Input

             {

                 float2 uv_MainTex;

                 float2 uv_AnisoTex;

             };

            

             sampler2D _MainTex, _SpecularTex, _BumpMap, _AnisoTex;

                 

             void surf (Input IN, inout SurfaceOutputAniso o)

             {

                fixed4 albedo = tex2D(_MainTex, IN.uv_MainTex);

                 o.Albedo = albedo.rgb;

                 o.Alpha = albedo.a;

                 o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));

                 fixed3 spec = tex2D(_SpecularTex, IN.uv_MainTex).rgb;

                 o.Specular = spec.r;

                 o.Gloss = spec.g;

                 o.AnisoDir = fixed4(tex2D(_AnisoTex, IN.uv_AnisoTex).rgb, spec.b);

             }

         ENDCG

     }

     FallBack "Transparent/Cutout/VertexLit"

}
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

1026

主题

1

听众

6011

积分

高级设计师

Rank: 6Rank: 6

纳金币
5996
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2011-8-27 10:43:12 |只看该作者
2D转3D 哈哈
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

板凳
发表于 2012-2-15 23:23:36 |只看该作者
好可爱的字,学习了
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

地板
发表于 2012-2-19 23:22:38 |只看该作者
顶!学习了!阅!
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

5#
发表于 2012-3-2 23:18:12 |只看该作者
顶!学习了!阅!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-3-25 23:30:29 |只看该作者
好铁多多发,感激分享
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-4-30 23:25:33 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-6-21 23:20:30 |只看该作者
既来之,则看之!
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-7-8 23:20:21 |只看该作者
无聊时可以刷屏幕 灌水 也可以试试 帖子的标题究竟可以写多长
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-7-28 23:20:21 |只看该作者
很经典,很实用,学习了!
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-21 07:50 , Processed in 0.065199 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部