unity shader:初探语义
来源:互联网 发布:linux 断电 丢失 文件 编辑:程序博客网 时间:2024/05/29 04:55
语义简介:实际上就是一个表达参数含义的字符串。
应用阶段到顶点着色器时用常用的语义如下:
POSITION:模型空间中的顶点坐标
NORMAL:模型空间中的法线方向
TANGENT:模型空间中的切线方向
TEXCOORDn:模型空间中第n组纹理坐标
COLOR:模型空间中顶点的颜色
顶点着色器传递数据给片元着色器时常用的语义如下:
SV_POSITION:裁剪空间中的顶点坐标
COLOR0:输出第一组顶点颜色,不是必须
COLOR1:输出第二组顶点颜色,不是必须
TEXCOORDn:输出第n组纹理坐标,不是必须
片元着色器输出数据到unity阶段常用的语义如下:
SV_Target:输出值存储到渲染目标中。
语义使用时注意点:
1.unity中有些语义是必须的,有些不是必须的,而且在不同的阶段,语义的必须性不一样,对于不必须的语义,我们可以自定义使用。
2.SV代表的含义是系统数值,在高版本的渲染引擎中会使用到,虽然低版本的渲染引擎也会有类似语义的字符串,但是最好用高版本的,这样可以向下兼容。
3.不同的shader model支持的语义类型各不相同,默认支持的是2.0版本,如果需要自己指定版本,可以使用”#pragmatarget 版本号”来指定。
shader应该注意的差异性:
1.平台差异:不同的平台,坐标系的轴心是不同的,但是unity内部又帮我们处理了这种差异,除非我们开启了抗锯齿功能,并且同时处理多张纹理时,就会出现主纹理和其他纹理的轴心不一致的问题,此时我们需要对其他纹理进行y轴转换,否则采样变换时,结果会是错的。
2.语法差异:由于DirectX中语法检测比较严格,一些OpenGL中通过的语法在DirectX中可能就不能通过,此时就必须要按照DirectX语法来操作shader。比如:float4类型赋值在OpenGL中可以只赋值一个参数,但是在DirectX中必须每个参数都赋值。
3.语义差异:不同的语义之间可能有相同的含义,但是在别的平台可能就不能表达相同的含义了,比如SV_POSITION和POSITION在DirectX和OpenGL平台上都表示齐次裁剪空间输出坐标,但是在PS4上就不是。
shader编写应该遵循的原则:
1.数据类型应该按照从小到大的使用原则,保证数据大小的最优化。
2.规范的语法,因为DirectX,OpenGL中存在不同的语法,所以应该使用两边都支持的语法。
3.规范的语义,因为DirectX,OpenGL中存在不同的语义,所以应该使用两边都支持的语义。
4.避免不必要的计算,因为着色器中寄存器和指令数是有限的,所以不宜计算过于复杂,可以通过制定shader target model大小来支持不同的指令和寄存器数。
5.慎用分支和循环语句,应该GPU中执行分支和循环语句性能会低。
6.不要除以0,因为这会造成一些未知的结果,有些平台会报错,有些平台不报错,但是取值具有随机性,得到结果不正确。
- unity shader:初探语义
- Unity shader 初探
- unity shader:初探shaderlab
- unity shader:初探光照
- unity shader:初探纹理
- unity shader:初探透明度
- unity shader:初探动画
- Unity Shader基础(3)--unity shader 常用语义
- Unity Shader 学习笔记 (八) 语义词与语义绑定
- 【Unity Shader】Unity提供的CG/HLSL语义
- unity shader 常用内置函数变量和语义
- Unity Shader入门精要笔记(七):Unity Shader内置文件、变量和语义
- Shader semantics //Shader语义
- 【Unity Shaders】初探Surface Shader背后的机制
- 【Unity Shaders】初探Surface Shader背后的机制
- 【Unity Shaders】初探Surface Shader背后的机制
- 【Unity Shaders】初探Surface Shader背后的机制
- 【Unity Shaders】初探Surface Shader背后的机制
- JavaScipt学习——套公式学习作用域
- hdfs的一些操作
- 使用Vue-cli创建项目
- 关于两个用户用同一浏览器不能同时登录同一网站的问题(session覆盖问题)
- 百万级访问量网站的技术准备工作
- unity shader:初探语义
- MainActivity中Xlistview实现下拉刷新和上拉加载
- 无线网络覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学。 现在学校给了他一个机
- 已连接网络,出现浏览器无法连接到代理服务器
- P3761送外卖(最短路+状压dp)
- Maven提交项目时忽略target目录
- js有哪些内置对象
- 猴子补丁
- [2017百度之星程序设计大赛