




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果。 更多精彩请关注【狗刨学习网】 下面是在unity中关闭灯光和打开灯光的对比效果。所以这类着色器的缺点就是不会随着光源变化效果。 接下来,我们开始创建,首先通过软件MaCrea来制作我们的2D光照贴图,MaCrea软件 通过该软件可以快速制作一个完整的发光球体平面图。 完成静态光照贴图的制作后。在unity中创建Shader,Material。直接打开Shader脚本编辑:1roperties:1. 1 Properties 2. 23. 3 _MainTint(Diffuse Color,Color) = (1,1,1,1)4. 45. 5 _MainTex (Base (RGB), 2D) = white 6. 67. 7 _NormalMap(Normal Map,2D) = 8. 89. 9 复制代码2SubShader:1. 1 CGPROGRAM2. 23. 3 #pragma surface surf Unlit vertex:vert4. 45. 56. 67. 7 float4 _MainTint;8. 89. 9 sampler2D _MainTex;10. 1011. 11 sampler2D _NormalMap;12. 1213. 13 struct Input 14. 1415. 15 float2 uv_MainTex;16. 1617. 17 float2 uv_NormalMap;18. 1819. 19 float3 tan1;20. 2021. 21 float3 tan2;22. 2223. 23 ;复制代码/因为我们要使用单独的球体贴图来实现光照,所以我们无需使用Lambert光照函数,只需要申明自定义无光亮的光照函数;3光照函数1. 1 inline fixed4 LightingUnlit(SurfaceOutput s, fixed3 lightDir, fixed3 atten)2. 23. 3 fixed4 c= fixed4(1,1,1,1);4. 45. 5 c.rgb = c*s.Albedo;6. 67. 7 c.a = s.Alpha;8. 89. 9 return c;10. 1011. 11 复制代码/我们只希望通过外部物体来产生阴影,因为该着色器不受光源的;4计算球面贴图1. 1 void vert(inout appdata_full v, out Input o)2. 23. 3 UNITY_INITIALIZE_OUTPUT(Input, o);4. 45. 56. 67. 7 TANGENT_SPACE_ROTATION ;8. 89. 9 o.tan1 = mul(rotation,UNITY_MATRIX_IT_MV0.xyz);10. 1011. 11 o.tan2 = mul(rotation,UNITY_MATRIX_IT_MV1.xyz);12. 1213. 13 复制代码/为了正确的检索到球面贴图,我们需要把正切旋转矩阵乘以当前模型的逆转模型视图;5完善surf1. 1 void surf (Input IN, inout SurfaceOutput o) 2. 23. 3 float3 normals = UnpackNormal(tex2D(_NormalMap,IN.uv_NormalMap);4. 45. 5 o.Normal = normals;6. 67. 78. 89. 9 float2 litSphereUV;10. 1011. 11 litSphereUV.x = dot(IN.tan1,o.Normal);12. 1213. 13 litSphereUV.y = dot(IN.tan2,o.Normal);14. 1415. 1516. 1617. 17 half4 c = tex2D (_MainTex, litSphereUV*0.5+0.5);18. 1819. 19 o.Albedo = c.rgb*_MainTint;20. 2021. 21 o.Alpha = c.a;22. 2223. 23 复制代码 通过以上的步骤,我们完成这个静态的光照模型。返回unity中简单设置后,就可以看出效果了。 在上面的过程中,最主要的是vert函数,因为在这个函数里,我们把旋转切向量和逆转模型视图矩阵相乘,在赋值给o.tan1和o.tan2。 这个计算就是把向量弯曲到何时的位置来检索球面的贴图。而逆转模型视图则是我们利用unity内置的值。 通过上面的检索传递后,我们简单的将IN.tan1和IN.tan2的值作为球面贴图纹理检索的uv值, 我们可以直接使用input结构体中的值,因为我们也在vert函数中将这些值传递进去了。1. 1 Shader 91YGame/LightStatic 2. 2 Properties 3. 3 _MainTint(Diffuse Color,Color) = (1,1,1,1)4. 4 _MainTex (Base (RGB), 2D) = white 5. 5 _NormalMap(Normal Map,2D) = 6. 6 7. 7 SubShader 8. 8 Tags RenderType=Opaque 9. 9 LOD 20010. 10 11. 11 CGPROGRAM12. 12 #pragma surface surf Unlit vertex:vert13. 1314. 14 float4 _MainTint;15. 15 sampler2D _MainTex;16. 16 sampler2D _NormalMap;17. 1718. 18 struct Input 19. 19 float2 uv_MainTex;20. 20 float2 uv_NormalMap;21. 21 float3 tan1;22. 22 float3 tan2;23. 23 ;24. 2425. 2526. 2627. 27 inline fixed4 LightingUnlit(SurfaceOutput s, fixed3 lightDir, fixed3 atten)28. 28 fixed4 c= fixed4(1,1,1,1);29. 29 c.rgb = c*s.Albedo;30. 30 c.a = s.Alpha;31. 31 return c;32. 32 33. 3334. 34 void vert(inout appdata_full v, out Input o)35. 35 UNITY_INITIALIZE_OUTPUT(Input, o);36. 3637. 37 TANGENT_SPACE_ROTATION;38. 38 o.tan1 = mul(rotation,UNITY_MATRIX_IT_MV0.xyz);39. 39 o.tan2 = mul(rotation,UNITY_MATRIX_IT_MV1.xyz);40. 40 41. 4142. 42 void surf (Input IN, inout SurfaceOutput o) 43. 43 float3 normals = UnpackNormal(tex2D(_NormalMap,IN.uv_NormalMap);44. 44 o.Normal = normals;45. 4546. 46 float2 litSphereUV;47. 47 litSphereUV.x = dot(IN.tan1,o.Normal);48. 48 litSphereUV.y = dot(IN.tan2,o.Normal);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西田东县总工会招聘社会化工会工作者1人考前自测高频考点模拟试题及参考答案详解
- Brand KPIs for clean beauty Disguise Cosmetics in India-外文版培训课件(2025.9)
- 2025安徽国控资本有限公司所属子企业财务部负责人猎聘1人考前自测高频考点模拟试题完整答案详解
- 涂装工艺基础知识培训课件
- 2025安徽安庆职业技术学院高层次人才引进7人考前自测高频考点模拟试题有完整答案详解
- 2025年吉林省农业科学院公开招聘博士高层次人才(1人)考前自测高频考点模拟试题完整参考答案详解
- 2025河北邢台市宁晋县农业农村局拟聘用农作物病虫害监测员模拟试卷及完整答案详解1套
- 2025江苏苏州高新区镇湖街道招聘村(社区)工作人员笔试模拟试卷附答案详解(典型题)
- 2025贵州黄平县中医医院医共体单位纸房乡卫生院招聘2名护理人员考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025年度吉林大学公开招聘教师(1号)(105人)模拟试卷及完整答案详解1套
- 2025呼和浩特市总工会社会工作者、专职集体协商指导员招聘29人考试参考题库及答案解析
- 2025年矿业权评估师考试(矿业权评估地质与矿业工程专业能力)全真冲刺试题及答案
- 2024年山西晋城市市政公用集团有限责任公司招聘考试真题
- 途虎养车加盟协议合同
- 【公开课】两种电荷-2025-2026学年物理人教版(2024)九年级全一册
- 2024年中国农业银行山西省分行招聘真题
- 《人工智能通识课》全套教学课件
- 2025年秋招:人力资源专员笔试题库及答案
- 汽车发动机课件
- q版人物教学课件
- 一节好课的标准简短课件
评论
0/150
提交评论