读书笔记之《Unity Shader入门精要》
起个名字真的好难啊
这个作者很懒,什么都没留下…
展开
-
第2章 渲染流水线
在开始一切学习之前, 我们有必要了解什么是Shader,即着色器。与之关系非常紧密的就是渲染流水线。可以说,如果你没有了解过渲染流水线的工作流程,就永远无法说自己对Shader 已经入门。渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。它的输入是一个虚拟摄像机、一些光源、一些Shader 以及纹理等。本章将会给出渲染流水线的概览,同时会尽量避免数原创 2017-11-28 19:47:23 · 1640 阅读 · 0 评论 -
第14章 非真实感渲染
尽管游戏渲染一般都是以照相写实主义( photorealism ) 作为主要目标, 但也有许多游戏使用了非真实感渲染( Non-Photorealistic Rendering , NPR)的方法来渲染游戏画面。非真实感渲染的一个主要目标是, 使用一些渲染方法使得画面达到和某些特殊的绘画风格相似的效果,例如卡通、水彩风格等。在本章中,我们将会介绍两种常见的非真实感渲染方法。在14.1原创 2018-01-18 14:30:17 · 984 阅读 · 0 评论 -
第11章 让画面动起来
没有动画的画面往往让人觉得很无趣。在本章中,我们将会学习如何向Unity Shader 中引入时间变量,以实现各种动画效果。在 11.1 节中,我们首先会介绍Unity Shader 内置的时间变量,在随后的章节中我们会使用这些时间变量来实现动画。11.2 节会介绍两种常见的纹理动画,即序列帧动画和背景循环滚动动画。在11.3 节,我们会学习使用顶点动画来实现流动的河流、广告牌等动画效原创 2018-01-09 18:53:29 · 587 阅读 · 0 评论 -
第13章 使用深度和法线纹理
在第12 章中,我们学习的屏幕后处理效果都只是在屏幕颜色图像上进行各种操作来实现的。然而,很多时候我们不仅需要当前屏幕的颜色信息,还希望得到深度和法线信息。例如,在进行边缘检测时,直接利用颜色信息会使检测到的边缘信息受物体纹理和光照等外部因素的影响,得到很多我们不需要的边缘点。一种更好的方法是,我们可以在深度纹理和法线纹理上进行边缘检测,这些图像不会受纹理和光照的影响,而仅仅保存了当前渲染物体的模原创 2018-01-17 15:33:29 · 1569 阅读 · 0 评论 -
第10章 高级纹理
我们在第7 章学习了关于基础纹理的内容,这些纹理包括法线纹理、渐变纹理和遮罩纹理等。这些纹理尽管用处不同,但它们都属于低维〈一维或二维)纹理。在本章中,我们将学习一些更复杂的纹理。在10.1 节中,我们会学习如何使用立方体纹理( Cubemap )实现环境映射。然后,我们会在10.2 节介绍一类特殊的纹理一一渲染纹理(Render Texture ),我们会发现渲染纹理是多么的强大。最原创 2018-01-08 16:12:39 · 646 阅读 · 0 评论 -
第16章 Unity中的渲染优化技术
程序优化的第一条准则: 不要优化。程序优化的第二条准则(仅针对专家! 〉: 不要优化。一一Michael A. Jackson在进行程序优化的时候,人们经常会引用英国的计算机科学家Michael A. Jackson 在1988 年的优化准则。Jackson 是想借此强调,对问题认识不清以及过度优化往往会让事情变得更加复杂,产生更多的程序错误。然而, 如果我们在游戏开发过程中从来都没有原创 2018-01-23 16:36:57 · 4871 阅读 · 0 评论 -
第9章 更复杂的光照
从本章开始,我们就进入了中级篇的学习。在初级篇中,我们对实现的Unity Shader 中的每一行代码都进行了详细解释。我们相信通过初级篇的学习,读者已经对Shader 的基本语法有了一定了解,因此在中级篇以及之后的篇节,我们不再列出Unity Shader 中的每一行代码,而是选择其中的关键代码进行解释。读者可以在本书资源中找到完整的实现。需要注意的是,本章实现的代码太多是为了阐述一些计算的实现原创 2018-01-04 17:50:39 · 857 阅读 · 1 评论 -
第12章 屏幕后处理效果
屏幕后处理效果(screen post-procesing effects ) 是游戏中实现屏幕特效的常见方法。在本章中,我们将学习如何在Unity 中利用渲染纹理来实现各种常见的屏幕后处理效果。在12.1 节中,我们首先会解释在Unity 中实现屏幕后处理效果的原理,并建立一个基本的屏幕后处理脚本系统。随后在12.2 节中,我们会使用这个系统实现一个简单的调整画面亮度、饱和度和对比度的屏原创 2018-01-12 11:46:26 · 2288 阅读 · 1 评论 -
第8章 透明效果
透明是游戏中经常要使用的一种效果。在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外,它还有另一个属性一一透明度。当透明度为1时,表示该像素是完全不透明的,而当其为0 时,则表示该像素完全不会显示。在Unity 中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试(原创 2017-12-26 17:21:40 · 958 阅读 · 0 评论 -
第7章 基础纹理
纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射( texture mapping )技术,我们可以把一张图“黏”在模型表面,逐纹素(texel) (纹素的名字是为了和像素进行区分〉地控制模型的颜色。在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标( texture-mapping coordinates ) 存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中原创 2017-12-20 18:41:34 · 1070 阅读 · 1 评论 -
第5章 开始Unity Shader 学习之旅
欢迎来到本书的第2 篇一一初级篇。在基础篇中,我们学习了渲染流水线, 并给出了Unity Shader 的基本概况, 同时还打下了一定的数学基础。从本章开始,我们将真正开始学习如何在Unity中编写Unity Shader 。本章的结构如下:在5.1 节, 我们将给出编写本书时使用的软件,包括Unity 的版本等。这是为了让读者可以在实践时不会出现因版本不同而造成困扰。在5.2 节,我们将原创 2017-12-15 14:12:35 · 828 阅读 · 0 评论 -
第3章 Unity Shader 基础
通过前面的学习内容我们己经知道, Shader 并不是什么神秘的东西,它们其实就是渲染流水线中的某些特定阶段,如顶点着色器阶段、片元着色器阶段等。在没有Unity 这类编辑器的情况下,如果我们想要对某个模型设置渲染状态,可能需要类似下面的代码:上述伪代码仅仅是简化后的版本,当渲染的模型数目、需要调整的着色器属性不断增多时,上述过程将变得更加复杂和冗长。而且,当涉原创 2017-12-05 20:00:57 · 974 阅读 · 0 评论 -
第4章 学习Shader所需的数学基础(终)(Unity Shader内置变量与练习题答案)
4.8 Unity Shader的内置变量(数学篇)使用Unity 写Shader 的一个好处在于,它提供了很多内置的参数,这使得我们不再需要自己手动计算一些值。本节将给出Unity 内置的用于空间变换和摄像机以及屏幕参数的内置变量。这些内置变量可以在UnityShaderVariables.cginc 文件中找到定义和说明。4.8.1 变换矩阵首先是用于坐标空间变换的矩阵。表4.原创 2017-12-14 13:43:36 · 986 阅读 · 0 评论 -
第4章 学习Shader所需的数学基础(下)(坐标空间及其变换)
4.6 坐标空间我们己经学会了如何使用矩阵来表示基本的变换,如平移、旋转和缩放。而在本节中,我们将关注如何使用这些变换来对坐标空间进行变换。我们在第2 章渲染流水线中就接触了坐标空间的变换。例如,在学习顶点着色器流水线阶段时,我们说过, 顶点着色器最基本的功能就是把模型的顶点坐标从模型空间转换到齐次裁剪坐标空间中。渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程原创 2017-12-12 18:50:36 · 2530 阅读 · 0 评论 -
第4章 学习Shader所需的数学基础(中)(矩阵)
4.4 矩阵不幸的是,没有人能告诉你母体( matrix)究竟是什么。你需要自己去发现它。一一电影《黑客帝国》(英文名: The Matrix )矩阵,英文名是matrix 。如果你用翻译软件去查matrix 这个单词的翻译,就会发现它还有一个意思就是母体。事实上,很多人都不知道,那部具有跨时代意义的电影《黑客帝国》的英文名就是《The Matrix ))。在电影《黑客帝国》中,母体是原创 2017-12-12 15:52:26 · 3449 阅读 · 0 评论 -
第4章 学习Shader所需的数学基础(上)(坐标系、点和矢量)
计算机图形学之所以深奥难懂,很大原因是在于它是建立在虚拟世界上的数学模型。数学渗透到图形学的方方面面,当然也包括Shader。在学习Shader 的过程中,我们最常使用的就是矢量和矩阵(即数学的分支之一一一线性代数)。很多读者认为图形学中的数学复杂难懂。的确,一些数学模型在初学者看来晦涩难懂。但很多情况下,我们需要打交道的只是一些基础的数学运算,而只要掌握了这些内容, 就会发现很多事情可以迎刃原创 2017-12-11 17:52:13 · 3392 阅读 · 1 评论 -
第6章 Unity 中的基础光照
渲染总是围绕着一个基础问题: 我们如何决定一个像素的颜色?从宏观上来说, 渲染包含了两大部分: 决定一个像素的可见性,决定这个像素上的光照计算。而光照模型就是用于决定在一个像素上进行怎样的光照计算。我们首先会在6.1 节介绍在真实世界中,我们是如何看到一个物体的,以此来帮助读者理解光照模型背后的原理。随后在6.2 节中,我们将解释什么是标准光照模型,以及如何在Unity Shader中原创 2017-12-18 11:07:59 · 3333 阅读 · 0 评论 -
第1章 欢迎来到Shader的世界
欢迎来到Shader 的世界!我们曾不断听到周围有人提出类似的问题:“ Shader 是什么” “我应该看哪些书才能学好Shader" "学习Unity Shader,我应该从哪里着手”。我们希望这本书可以告诉你这些问题的答案。如果本书是你学习Shader 的第一本书,我们希望这本书可以为你打开一扇新的大门,让你离制作心目中的优秀游戏的心愿更近一步:如果不是,我们同样希望这本书可以让你更深入地理解原创 2017-11-21 17:24:19 · 867 阅读 · 0 评论 -
第15章 使用噪声
很多时候,向规则的事物里添加一些“杂乱无章”的效果往往会有意想不到的效果。而这些“杂乱无章”的效果来源就是噪声。在本章中,我们将会学习如何使用噪声来模拟各种看似“神奇”的特效。在15.1 节中,我们将使用一张噪声纹理来模拟火焰的消融效果。15.2 节则把噪声应用在模拟水面的波动上,从而产生波光粼粼的视觉效果。在15.3 节中,我们会回顾13.3 节中实现的全局雾效,并向其中添加噪声来模原创 2018-01-19 14:34:36 · 537 阅读 · 0 评论