声明:文章主要是总结手游开发的经验,只涉及到了前向渲染、未涉及延迟渲染。

Unity的Surface Shader本质上就是VS/PS。只不过Unity经过精心设计,将shader划分为了几个关键部分,然后再通过若干个可选参数来进行配置。

Surface Shader中(前向渲染)需要我们写的函数有VertexFunction、SurfaceFunction、GIFunction、LightningFunction和ColorFunction。其中使用最多的SurfaceFunction。其他函数根据需要来使用。除了这些函数,各种可选参数也相当重要。

与自定义函数搭配使用的还有两个自定义数据结构:Input和Output。Input需要自己写,最主要功能是传递UV。Output可以使用Unity预定义的数据类型(SurfaceOutput、SurfaceOutputStandard和SurfaceOutputStandardSpecular),也可以自定义,自定义最少需要有4个成员变量:Albedo、Normal、Emission和Alpha,缺少一个都会报错。

各函数的作用如下表:

函数名 作用
VertexFunction 填充Input和顶点变形
SurfaceFunction 填充Output
GIFunction 填充UnityGI,即计算光照信息(主要是间接光照)
LightningFunction 根据Output和光照信息进行光照计算
ColorFunction 颜色处理,如雾的计算

最新文章

  1. Java实现MySQL数据库备份(一)
  2. Java程序员的日常 —— 响应式导航Demo
  3. Failed to push selection: Read-only file system的解决方法
  4. 2016HUAS_ACM暑假集训2D - 敌兵布阵
  5. CentOS 6.8内核版本升级(升级至3.10)(转)
  6. 让Linux开机运行命令
  7. SQL Server服务开闭
  8. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
  9. Android View的事件冲突
  10. nginx日志切割配置
  11. vue计算属性详解——小白速会
  12. 安装CentOs 7.3
  13. FhqTreap的区间翻转
  14. UML之顺序图
  15. 使用JfreeChart生成图表遇到的问题
  16. 使用Jexus服务器运行Asp.Net Core2.0程序
  17. Android学习笔记——从源码看Handler的处理机制
  18. java8中对lamdba表达式方法参数传递时,方法重载之后的类型推断
  19. MySQL 分库备份
  20. jquery ui的css设计二

热门文章

  1. 两种常见的缓存淘汰算法LFU&LRU
  2. JSR303 数据检验
  3. 第四阶段:1.从零打造一款社区web产品
  4. nginx负载均衡的相关配置
  5. 【题解】P1712 [NOI2016]区间(贪心+线段树)
  6. $CF938G\ Shortest\ Path\ Queries$ 线段树分治+线性基
  7. AutoCad 二次开发 Jig操作之墙块的拖动
  8. Linux学习之路--shell学习
  9. 组件的props属性和state状态
  10. overflow:hidden的使用