Shader入门精要读书笔记12
第13、14章 深度和法线纹理、非真实渲染
实现更加贴近应用的渲染效果(运动模糊、雾、卡通风格、素描风格),往往需要更加巧妙的思路和数学计算。
- 透视投影和正交投影的原理复习。
- 2种获取深度和法线纹理的方法:延迟渲染将纹理存入G-buffer中;正确的设置RenderType,使用单独的Pass渲染得到纹理。
- 脚本中相机的设置和纹理获取的代码实现,使用包装好的函数处理纹理采样后得到的线性的深度值。
- 使用Frame Debugger查看深度纹理的渲染效果(远裁剪平面太远或太近效果变差)
- 使用深度信息实现运动模糊:之前的运动模糊是整个屏幕每一帧渲染结果的叠加。现在的方法改进为,使用顶点的速度信息(6)进行模糊处理(7)。
- 速度:当前帧和前一帧的顶点位置(NDC坐标)相减除2。NDC坐标的xy分量为UV计算得到,z分量由解析深度纹理值后得到。难点在于由当前帧的NDC坐标计算前一帧的NDC坐标(使用了2个脚本中预先计算的变换矩阵)。
- 模糊处理:在每一个for循环中,延速度*模糊Size的方向迭代UV采样的偏移,累加到当前片元的颜色中。此方法不适用于物体移动而固定摄像机的运动模糊,可在Unity自带的ImageEffect包中寻找更多方法。
- 全局雾效:基于深度纹理,在一次屏幕后处理中,实现雾效。
- 雾效:共3种计算方法,线性、指数、指数平方;本节使用一个f和1-f混合原始颜色和雾的颜色,属于基于世界坐标高度信息(10)的线性混合,即雾的浓度随像素高度的增加而减小。
- 世界坐标/距离信息:以近裁剪面为基础获得4个边角的向量,使用近似三角形原理,带入深度信息后计算出像素点到摄像机的向量信息(片元着色器),摄像机坐标+向量信息得到像素点的世界坐标。难点在于从4个边角向量(顶点着色器)得到像素点摄像机向量(片元着色器)的插值过程,存疑。
- 边缘检测:使用Roberts算子,先后计算根据UV值采样得到的深度信息和法线信息,其中法线信息忽略了z分量以简化计算;最终返回0或1表示是否为边缘。
- 卡通风格渲染:其中一种方法,基于色调的着色技术,漫反射控制+描边。
- 渲染过程:背面,渲染轮廓,使用纯色并适当的延法线方向扩展一小段距离;正面,使用渐变纹理处理漫反射,高光部分使用平滑的插值函数,防止锯齿状的边缘出现,混合得到的颜色并输出即可。
- 素描风格渲染:色调艺术映射。若干张素描的纹理(笔画线条的间隔不同)按权重分别采样并混合。
- 渲染过程:在顶点着色器中计算漫反射的强度,使用if else判断划分出6个权重并传送给片元着色器;在片元着色器中按权重混合采样后的纹理,1-权重和,得到预设颜色的权重,混合他们得到素描颜色,与光照衰减相乘得到具有阴影效果的最终颜色。
- 扩展:文中提到了《大神》《军团要塞》《海岛奇兵》《三国志》等游戏均用到了非真实渲染;推荐读物《艺术化绘制的图形学原理与方法》。
Shader入门精要读书笔记12相关推荐
- Unity Shader入门精要读书笔记(14)
尽管渲染大多以照片写实主义为主要目标,但是非真实感渲染(NPR)也经常被使用. 卡通风格的渲染 卡通风格是游戏中常见的一种渲染风格.使用这种风格的游戏画面通常有一些共有的特点,例如物体都被黑色的线条描 ...
- Shader入门精要读书笔记11
第12章 屏幕后处理效果 总的来说把渲染出来的结果(Texture),类似于又用PS处理了一下.方法就是把不同的脚本加在摄像机上,脚本和Shader共同使画面具有不同的效果. OnRenderImag ...
- shader入门精要读书笔记40 素描风格的渲染
总结下头文件: HLSLSupport.cginc - (自动包含) 为跨平台的着色器编译宏和定义提供帮助. UnityShaderVariables.cginc - (自动包含)常用的全局变量. U ...
- 【unity shader 入门精要 读书笔记】折射
当光线从一种介质[例如空气]斜射入另外一种介质[例如玻璃]时,传播方向一般会发生改变. 当给定入射角时,可以使用 斯涅耳定律[Snell's Law]来计算反射角. 当光从介质 1 沿着和表面法线夹角 ...
- shader入门精要读书笔记23 高级纹理-渲染纹理-镜子效果、玻璃效果
一.前言 现代GPU允许我们把整个三维场景目标渲染到一个中间缓冲中,即渲染目标纹理(RTT). 多重渲染目标(MRT),这种技术指的是GPU允许我们把场景同时渲染到多个渲染目标纹理中,而不再需要为每个 ...
- 【unity shader 入门精要 读书笔记】透明
一.透明 1.透明度测试[Alpha Test] 它采用一种"霸道极端"的机制:只要有一个片元的透明度不满足条件[通常是小于某个阈值],那么它对应的片元就会被舍弃.被舍弃的片元将不 ...
- shader入门精要读书笔记20 Unity中的光源类型与衰减计算
一.光源类型 Unity中4中光源:平行光.点光源.聚光灯.面光源(只在烘焙时发生作用). 光源位置.方向.颜色.强度.衰减等等都与他们的属性息息相关,会影响到Shader. 1.平行光 他没有唯一的 ...
- 《Unity Shader入门精要》笔记:初级篇(1)
本篇博客主要为个人学习所编写读书笔记,不用于任何商业用途,以及不允许任何人以任何形式进行转载. 本篇博客会补充一些扩展内容(例如其他博客链接). 本篇博客还会提供一些边读边做的效果截图.文章内所有数学 ...
- 《Unity Shader入门精要》笔记01 前言
<Unity Shader入门精要>笔记01 前言 --本系列是基于人民邮电出版社<Unity Shader入门精要>(冯乐乐著 )的自学Unity Shader笔记,如果您发 ...
最新文章
- 人工智能入门:keras的example文件解析
- 深度学习经典数据集汇总
- 利用yum下载rpm包并批量安装
- TL-ER5120路由器配置文档
- git把本地代码上传(更新)到github上
- python为什么忽然火了_为什么Python突然就火了起来了呢?
- C#| 使用String.Format()方法将小数点前的数字四舍五入
- java mysql结果集_Java JDBC结果集的处理
- 设计模式08_适配器
- 矩池云安装PyQt5,并在VNC中测试使用
- springmvc请求返回一个字符_response 返回 带双引号 的字符串解决办法 springmvc
- 驱动重构SDN/NFV奠定未来网络基石
- 基于DKHadoop的智慧人社服务平台开发案例简述
- 使用idea 把项目上传到 svn
- 物联网技术栈之网关技术
- 英特尔与世界自然基金会携手 用人工智能技术保护东北虎
- DYNAMIC DETECTION
- 蓝牙LMP剖析(二)
- PHP实现 记录网站访问量
- MapReduce之多MapReduce执行
热门文章
- mysql设置备份任务_设置mysql 定时备份任务
- Python编程基础:鸡兔同笼问题。假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只。
- SQL server 2008卸载出错
- 系统思考:情境企划的主要步骤有哪些?
- 热情贡献!!!史上最全openstack资料大全!!!你值得拥有!!!
- 今天给我的Ubuntu服务器挂在了一个4T的硬盘却只能识别到2T,原来是因为这!涨知识了
- java数组查找指定元素_Java在数组中查找指定元素的方法
- python 打包windows服务 开机自启动
- 5个免费、免注册且无时长限制在线语音转换文本网站分享(收藏)
- Matlab之peaks,mesh,meshgrid函数