Unity双面渲染shader(2)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




