Unity SurfaceShader详解
2024-08-28 11:19:18
声明:文章主要是总结手游开发的经验,只涉及到了前向渲染、未涉及延迟渲染。
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 | 颜色处理,如雾的计算 |
最新文章
- Java实现MySQL数据库备份(一)
- Java程序员的日常 —— 响应式导航Demo
- Failed to push selection: Read-only file system的解决方法
- 2016HUAS_ACM暑假集训2D - 敌兵布阵
- CentOS 6.8内核版本升级(升级至3.10)(转)
- 让Linux开机运行命令
- SQL Server服务开闭
- 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
- Android View的事件冲突
- nginx日志切割配置
- vue计算属性详解——小白速会
- 安装CentOs 7.3
- FhqTreap的区间翻转
- UML之顺序图
- 使用JfreeChart生成图表遇到的问题
- 使用Jexus服务器运行Asp.Net Core2.0程序
- Android学习笔记——从源码看Handler的处理机制
- java8中对lamdba表达式方法参数传递时,方法重载之后的类型推断
- MySQL 分库备份
- jquery ui的css设计二
热门文章
- 两种常见的缓存淘汰算法LFU&;LRU
- JSR303 数据检验
- 第四阶段:1.从零打造一款社区web产品
- nginx负载均衡的相关配置
- 【题解】P1712 [NOI2016]区间(贪心+线段树)
- $CF938G\ Shortest\ Path\ Queries$ 线段树分治+线性基
- AutoCad 二次开发 Jig操作之墙块的拖动
- Linux学习之路--shell学习
- 组件的props属性和state状态
- overflow:hidden的使用