第13、14章 深度和法线纹理、非真实渲染

实现更加贴近应用的渲染效果(运动模糊、雾、卡通风格、素描风格),往往需要更加巧妙的思路和数学计算。

  1. 透视投影和正交投影的原理复习。
  2. 2种获取深度和法线纹理的方法:延迟渲染将纹理存入G-buffer中;正确的设置RenderType,使用单独的Pass渲染得到纹理。
  3. 脚本中相机的设置和纹理获取的代码实现,使用包装好的函数处理纹理采样后得到的线性的深度值。
  4. 使用Frame Debugger查看深度纹理的渲染效果(远裁剪平面太远或太近效果变差)
  5. 使用深度信息实现运动模糊:之前的运动模糊是整个屏幕每一帧渲染结果的叠加。现在的方法改进为,使用顶点的速度信息(6)进行模糊处理(7)。
  6. 速度:当前帧和前一帧的顶点位置(NDC坐标)相减除2。NDC坐标的xy分量为UV计算得到,z分量由解析深度纹理值后得到。难点在于由当前帧的NDC坐标计算前一帧的NDC坐标(使用了2个脚本中预先计算的变换矩阵)。
  7. 模糊处理:在每一个for循环中,延速度*模糊Size的方向迭代UV采样的偏移,累加到当前片元的颜色中。此方法不适用于物体移动而固定摄像机的运动模糊,可在Unity自带的ImageEffect包中寻找更多方法。
  8. 全局雾效:基于深度纹理,在一次屏幕后处理中,实现雾效。
  9. 雾效:共3种计算方法,线性、指数、指数平方;本节使用一个f和1-f混合原始颜色和雾的颜色,属于基于世界坐标高度信息(10)的线性混合,即雾的浓度随像素高度的增加而减小。
  10. 世界坐标/距离信息:以近裁剪面为基础获得4个边角的向量,使用近似三角形原理,带入深度信息后计算出像素点到摄像机的向量信息(片元着色器),摄像机坐标+向量信息得到像素点的世界坐标。难点在于从4个边角向量(顶点着色器)得到像素点摄像机向量(片元着色器)的插值过程,存疑。
  11. 边缘检测:使用Roberts算子,先后计算根据UV值采样得到的深度信息和法线信息,其中法线信息忽略了z分量以简化计算;最终返回0或1表示是否为边缘。
  12. 卡通风格渲染:其中一种方法,基于色调的着色技术,漫反射控制+描边。
  13. 渲染过程:背面,渲染轮廓,使用纯色并适当的延法线方向扩展一小段距离;正面,使用渐变纹理处理漫反射,高光部分使用平滑的插值函数,防止锯齿状的边缘出现,混合得到的颜色并输出即可。
  14. 素描风格渲染:色调艺术映射。若干张素描的纹理(笔画线条的间隔不同)按权重分别采样并混合。
  15. 渲染过程:在顶点着色器中计算漫反射的强度,使用if else判断划分出6个权重并传送给片元着色器;在片元着色器中按权重混合采样后的纹理,1-权重和,得到预设颜色的权重,混合他们得到素描颜色,与光照衰减相乘得到具有阴影效果的最终颜色。
  16. 扩展:文中提到了《大神》《军团要塞》《海岛奇兵》《三国志》等游戏均用到了非真实渲染;推荐读物《艺术化绘制的图形学原理与方法》。

Shader入门精要读书笔记12相关推荐

  1. Unity Shader入门精要读书笔记(14)

    尽管渲染大多以照片写实主义为主要目标,但是非真实感渲染(NPR)也经常被使用. 卡通风格的渲染 卡通风格是游戏中常见的一种渲染风格.使用这种风格的游戏画面通常有一些共有的特点,例如物体都被黑色的线条描 ...

  2. Shader入门精要读书笔记11

    第12章 屏幕后处理效果 总的来说把渲染出来的结果(Texture),类似于又用PS处理了一下.方法就是把不同的脚本加在摄像机上,脚本和Shader共同使画面具有不同的效果. OnRenderImag ...

  3. shader入门精要读书笔记40 素描风格的渲染

    总结下头文件: HLSLSupport.cginc - (自动包含) 为跨平台的着色器编译宏和定义提供帮助. UnityShaderVariables.cginc - (自动包含)常用的全局变量. U ...

  4. 【unity shader 入门精要 读书笔记】折射

    当光线从一种介质[例如空气]斜射入另外一种介质[例如玻璃]时,传播方向一般会发生改变. 当给定入射角时,可以使用 斯涅耳定律[Snell's Law]来计算反射角. 当光从介质 1 沿着和表面法线夹角 ...

  5. shader入门精要读书笔记23 高级纹理-渲染纹理-镜子效果、玻璃效果

    一.前言 现代GPU允许我们把整个三维场景目标渲染到一个中间缓冲中,即渲染目标纹理(RTT). 多重渲染目标(MRT),这种技术指的是GPU允许我们把场景同时渲染到多个渲染目标纹理中,而不再需要为每个 ...

  6. 【unity shader 入门精要 读书笔记】透明

    一.透明 1.透明度测试[Alpha Test] 它采用一种"霸道极端"的机制:只要有一个片元的透明度不满足条件[通常是小于某个阈值],那么它对应的片元就会被舍弃.被舍弃的片元将不 ...

  7. shader入门精要读书笔记20 Unity中的光源类型与衰减计算

    一.光源类型 Unity中4中光源:平行光.点光源.聚光灯.面光源(只在烘焙时发生作用). 光源位置.方向.颜色.强度.衰减等等都与他们的属性息息相关,会影响到Shader. 1.平行光 他没有唯一的 ...

  8. 《Unity Shader入门精要》笔记:初级篇(1)

    本篇博客主要为个人学习所编写读书笔记,不用于任何商业用途,以及不允许任何人以任何形式进行转载. 本篇博客会补充一些扩展内容(例如其他博客链接). 本篇博客还会提供一些边读边做的效果截图.文章内所有数学 ...

  9. 《Unity Shader入门精要》笔记01 前言

    <Unity Shader入门精要>笔记01 前言 --本系列是基于人民邮电出版社<Unity Shader入门精要>(冯乐乐著 )的自学Unity Shader笔记,如果您发 ...

最新文章

  1. 人工智能入门:keras的example文件解析
  2. 深度学习经典数据集汇总
  3. 利用yum下载rpm包并批量安装
  4. TL-ER5120路由器配置文档
  5. git把本地代码上传(更新)到github上
  6. python为什么忽然火了_为什么Python突然就火了起来了呢?
  7. C#| 使用String.Format()方法将小数点前的数字四舍五入
  8. java mysql结果集_Java JDBC结果集的处理
  9. 设计模式08_适配器
  10. 矩池云安装PyQt5,并在VNC中测试使用
  11. springmvc请求返回一个字符_response 返回 带双引号 的字符串解决办法 springmvc
  12. 驱动重构SDN/NFV奠定未来网络基石
  13. 基于DKHadoop的智慧人社服务平台开发案例简述
  14. 使用idea 把项目上传到 svn
  15. 物联网技术栈之网关技术
  16. 英特尔与世界自然基金会携手 用人工智能技术保护东北虎
  17. DYNAMIC DETECTION
  18. 蓝牙LMP剖析(二)
  19. PHP实现 记录网站访问量
  20. MapReduce之多MapReduce执行

热门文章

  1. mysql设置备份任务_设置mysql 定时备份任务
  2. Python编程基础:鸡兔同笼问题。假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只。
  3. SQL server 2008卸载出错
  4. 系统思考:情境企划的主要步骤有哪些?
  5. 热情贡献!!!史上最全openstack资料大全!!!你值得拥有!!!
  6. 今天给我的Ubuntu服务器挂在了一个4T的硬盘却只能识别到2T,原来是因为这!涨知识了
  7. java数组查找指定元素_Java在数组中查找指定元素的方法
  8. python 打包windows服务 开机自启动
  9. 5个免费、免注册且无时长限制在线语音转换文本网站分享(收藏)
  10. Matlab之peaks,mesh,meshgrid函数