1.帧缓冲区和颜色缓冲区区别
用于存储每帧每个像素颜色信息的缓冲区
帧缓冲区包括:颜色缓冲区 深度缓冲区 模板缓冲区 自定义缓冲区
2.ImageEffectShader是什么
后处理用的shader模版
3.computerShader
独立于渲染管线之外,在显卡上运行,大量并行计算
4.
属性卸载properties{}里面,但是如果有点谁不显示谁的功能就用custom editor给一个脚本,通过脚本控制,对材质面板的属性进行定制化。
shader常用api:
length(向量)
5.shader函数里面使用的结构体要初始化
5.观察空间
右手坐标系
unity的勾边选择
6.常用的shader库
7.shader参考大全工具
8.一个正方体为什么是24个顶点?
传统是8个顶点,这里一个代表三个,是因为不同的连接面上需要有不同的uv,不同的法线,以及颜色相关信息
法线增加凹凸细节
9.常用特征
color的[HDR],纹理的[NoScaleOffset],range的[IntRange],[HideInspector],[Space(20)],[Header(Title)],[toggle]
10.片段和像素的关系
一个像素可能由多个片段多重采样混合颜色输出
11.顶点着色器和片段着色器区别?
顶点更少比如3个顶点,三角面,像素有很多会执行多次
12.贴图的作用?
1.提供表面颜色
2.提供凹凸细节
3.中转功能,只使用纹理上的数值
13.贴图的默认值
材质的debug属性可以看到这个shader里面使用到的变量的名称
分量的运用优化, 只运用2个参数,定义一个vector,传递2个分量
14.图形计算器:geogebra,把算法可视化
15.几种常见的贴图:分几个阶段的不同段颜色的贴图:rampTex
采样可以使用samper和tex1D来进行采样
16.变体通过keyword来区分
17.帧缓冲区:
18.
暴露颜色混合参数选择,还有CullMode
19.shader_feature 和multr-compile
shader_feature主要用于特效,游戏里面不进行动态切换,非运行时候就确定要怎么渲染的时候使用
multi-compile用于比如说闪白,游戏里面会动态切换,两个变体都会使用,所以都要打进包。
优化:
1.尽量放顶点着色器写
案例分析:
溶解
UV扭曲
屏幕扭曲:
有后处理扭曲(整个屏幕扭曲)和屏幕某一块扭曲两种
grabpass输出一张RT,然后利用在这个RT下的屏幕uv扭曲
UIshader功能:
1.队列:半透明队列,混合
[PerRendererData]特性的意思,搭配SetPropertyBlock使用有性能优化的作用。
工具:
renderdoc
深度偏移
https://imgtec.eetrend.com/blog/2020/100059033.html
https://imgtec.eetrend.com/blog/2020/100059173.html
广告牌效果实现:
1.关闭深度写入
2.Subshader标签,DisableBatching设为true如果有在模型顶点空间下做顶点动画
3.“IgnoreProjector”=“True”告诉Unity3D,我们不希望任何投影类型材质或者贴图
4.面向摄像机的效果,除了cpu控制旋转
法线方向是固定的,让法线方向指向视角方向,在shader里面算出旋转矩阵给顶点计算
5.transpose(float3x3(rightDir, upDir, normalDir)
6.shadergraph 里面变化矩阵使用Transformation Matrix