这篇只是一个总结,方便我写shader的时候查找api;
shader "custom/myshader"//命名+右键创建shader路径{ //属性必须在代码里声明才能使用 properties{//属性,会出现在inspector面板 _maintex("main tex",2d) 平安夜送苹果金句= "white"{}//名称("面板显示名称",数据类型) = 初始化 } //针对不同显卡可以有不同subshader,对应不同品质的渲染 subshader{ tags{"lightmode"="forwardba"}//tags,定义渲染的设置 zwrite off//rendertup,渲染设置 pass{//通道pass,一个subshade鲫鱼汤 孕妇r可以有多个pass name = "mypass"//pass可以命名,在其他subshader引用upass大写 cgprogram//开始cg代码-和endcg成对 #pragma vertex vert//定义渲染函数,顶点 #pragma fragment frag//片元 #pragma surface surf lambert //表面 #include "lighting.cginc"//包含方法库 sample2d _maintex;//声明变量 float4 _maintex_st; struct a2v//自定义结构体 { float4 vertex : position;//变量类型 变量名:语义说明(语言规定) float3 normal: normal; } v2f vert (appdata v)//函数体 {v2f o; return o; } endcg板桥体 } } subshader{...} fallback "diffu"//以上subshader显卡都不支持,默认返回漫反射}
uniform修饰词;
name = “mypass”
——upass “unlit/outline/mypass”//必须大写
——grappass//抓取屏幕结果存储在一张纹理中
属性对应的变量类型,声明变量使用;属性中类型和变量中类型不一定一致;
sv_开头表示system-value——系统定义的语义变量;
1)subshader可用
queue——渲染队列
rendertype——渲染类型
(1)”opaque”:绝大部分不透明的物体都使用这个;
(2)”transparent”:绝大部分透明欧洲天气预报查询的物体、包括粒子特效都使用这个;
(3)”background”:天空盒都使用这个;
(4)”overlay”:gui、镜头光晕都使用这个;
(5)还有其他可参考rendering with replaced shaders;用户也可以定义任意自己的rendertype字符串;
(6)”transparentcutout“:透明测试使用;
ignoreprojector = “true”——忽略投影器影响,alphatest和alphablend使用;
forcenoshadowcasting = “true”——表示不接受阴影;
2)pass可用
“lightmode”=”forwardba”
1)cull剔除
cull front/back/off
2)深度测试和写入
zwrite off
ztest off
3)blend——透明混合设置
blendop
blend效果
unitycg.cginc常用结构体
书写建议:
1.移动平台的shader尽可能使用精度低的变量:fixed-half-float
2.错误:片元中大量计算导致寄存器不足——提高shadertarget等级
3.尽量不要使用分支语句
4.不要除以0
life is too short for so much sorrow.
到此这篇关于u三傻nity图形学之shaderlab入门基础的文章就介绍到这了,更多相关unity shaderlab内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 12:48:29,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/5c87a180fcb03e98fed08f55a53af5ba.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Unity图形学之ShaderLab入门基础.doc
本文 PDF 下载地址:Unity图形学之ShaderLab入门基础.pdf
留言与评论(共有 0 条评论) |