教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

Unity双面渲染shader(2)

来源:网络收集 时间:2026-09-21
导读: 4. _SpecColor (Specular Color, Color) = (0.5, 0.5, 0.5, 1) 5. _Shininess (Shininess, Range (0.03, 1)) = 0.078125 6. _MainTex (Base (RGB) Gloss (A), 2D) = white {} 7. _BumpMap (Normalmap, 2D) = bump {

4. _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)

5. _Shininess ("Shininess", Range (0.03, 1)) = 0.078125

6. _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}

7. _BumpMap ("Normalmap", 2D) = "bump" {}

8. _BackColor ("Back Main Color", Color) = (1,1,1,1)

9.}

10.SubShader {

Unity双面渲染shader

11. Tags { "RenderType"="Opaque" }

12. LOD 400

13. Cull back

14.

15.CGPROGRAM

16.#pragma surface surf BlinnPhong

17.

18.

19.sampler2D _MainTex;

20.sampler2D _BumpMap;

21.fixed4 _Color;

22.half _Shininess;

23.

24.struct Input {

25. float2uv_MainTex;

26. float2uv_BumpMap;

27.};

28.

29.void surf (Input IN, inoutSurfaceOutput o) {

30. fixed4tex = tex2D(_MainTex, IN.uv_MainTex);

31. o.Albedo = tex.rgb * _Color.rgb;

32. o.Gloss = tex.a;

33. o.Alpha = tex.a * _Color.a;

34. o.Specular = _Shininess;

Unity双面渲染shader

35. o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));}

36.ENDCG

37.

38. Cull front

39.

40.CGPROGRAM

41.#pragma surface surf Lambert

42.

43.sampler2D _MainTex;

44.fixed4 _BackColor;

45.

46.struct Input {

47. float2uv_MainTex;

48.};

49.

50.void surf (Input IN, inoutSurfaceOutput o) {

51. fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _BackColor;

52. o.Albedo = c.rgb;

53. o.Alpha = c.a;

54.}

55.ENDCG

56.}

57.FallBack "Specular"

58.}

Unity双面渲染shader

反面渲染的运算就直接借用了系统的Diffuse Shader,只不过纹理是沿用正面的纹理,只增加了一个反面的颜色变量用来模拟环境光亮度,与纹理混合实现反面效果。渲染效果如下:

方式二代码:

复制代码

1.Shader "Hog's shaders/BumpSpec_Twoside2" {

2.Properties {

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

4. _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)

5. _Shininess ("Shininess", Range (0.03, 1)) = 0.078125

6. _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}

7. _BumpMap ("Normalmap", 2D) = "bump" {}

8. _BackColor ("Back Main Color", Color) = (1,1,1,1)

9. _BackMainTex ("Back Base (RGB) Gloss (A)", 2D) = "white" {}

10.}

11.SubShader {

12. Tags { "RenderType"="Opaque" }

13. LOD 400

14. Cull back

15.

16.CGPROGRAM

17.#pragma surface surf BlinnPhong

Unity双面渲染shader

18.

19.

20.sampler2D _MainTex;

21.sampler2D _BumpMap;

22.fixed4 _Color;

23.half _Shininess;

24.

25.struct Input {

26. float2uv_MainTex;

27. float2uv_BumpMap;

28.};

29.

30.void surf (Input IN, inoutSurfaceOutput o) {

31. fixed4tex = tex2D(_MainTex, IN.uv_MainTex);

32. o.Albedo = tex.rgb * _Color.rgb;

33. o.Gloss = tex.a;

34. o.Alpha = tex.a * _Color.a;

35. o.Specular = _Shininess;

36. o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));}

37.ENDCG

38.

39. Cull front

40.

41.CGPROGRAM

Unity双面渲染shader

42.#pragma surface surf Lambert

43.

44.sampler2D _BackMainTex;

45.fixed4 _BackColor;

46.

47.struct Input {

48. float2uv_BackMainTex;

49.};

50.

51.void surf (Input IN, inoutSurfaceOutput o) {

52. fixed4 c = tex2D(_BackMainTex, IN.uv_BackMainTex) * _BackColor;

53. o.Albedo = c.rgb;

54. o.Alpha = c.a;

55.}

56.ENDCG

57.}

58.FallBack "Specular"

59.}

此方式下反面可以单独指定纹理,不指定就直接显示指定的反面颜色,渲染效果如下

以上只是介绍一个基本思想,在这个基础上能应该能衍生出无穷的变化。对自定义shader有兴趣的可以参考系统手册和Nvidia的CG教学手册。

不过千万不要动不动就使用双面材质,因为会增加系统负荷,应该只用在需要的地方。 把以上代码起个名字另存为.shader文件,导入工程assets,就能直接使用。

…… 此处隐藏:1001字,全部文档内容请下载后查看。喜欢就下载吧 ……
Unity双面渲染shader(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/265021.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)