观后感
文章平均质量分 66
wy小骑士
学无止境,愿你我携手共进。
展开
-
Unity_Shader初级篇_6_Unity Shader入门精要
渲染总是围绕着一个基础问题:我们如合同决定一个像素的颜色?从宏观上来说,渲染包含了两大部分:决定一个像素的可见性,决定这个像素上的光照计算。而光照模型就是用于决定在一个像素上进行怎样的光照计算。 本章着重讲述光照模型的原理,因此实现的Shader往往并不能直接应用到实际项目中(直接使用会缺少阴影、光照衰减等效果)。通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3中物理现象。...原创 2018-03-16 17:03:20 · 1495 阅读 · 0 评论 -
Unity_Shader高级篇_16_Unity Shader入门精要_减少计算复杂度
16.8 减少计算复杂度16.8.1 Shader的LOD技术 和16.5.2提到的模型的LOD技术类似,Shader的LOD技术可以控制使用的Shader等级。它的原理是,只有Shader的LOD值小于某个设定的值,这个Shader才会被使用,而使用了那些超过设定值的Shader的物体将不会被渲染。 我们通常会在SubShader中使用类似下面的语句来指明该shader的LOD值:S...原创 2018-04-10 15:37:14 · 556 阅读 · 2 评论 -
Unity_Shader高级篇_14.1_Unity Shader入门精要
14.2 素描风格的渲染 另一种非常流行的非真实感渲染时素描风格的渲染。微软研究院的Praun等人在2001年的SIGGRAPH上发表了一篇非常著名的论文(Rraun E,Hoppe H,Webb M, et al. Real-time hatching[C]//Proceedings of the 28th annual conference on Computer graphics and ...原创 2018-04-03 18:03:01 · 573 阅读 · 0 评论 -
Unity_Shader高级篇_15_Unity Shader入门精要_消融效果
第15章 使用噪音 很多时候,向规则的事物里添加一些“杂乱无章”的效果往往会有意想不到的效果。而这些“杂乱无章”的效果来源就是噪音。在本章中,我们将会学习如何使用噪音来模拟各种看似神奇的特效。在15.1中,我们将使用一张噪音纹理来模拟火焰的消融效果。15.2节则把噪音应用在模拟水面的波动上,从而产生波光粼粼的视觉效果。在15.3中,我们会回顾13.3中实现的全局雾效,并向其中添加噪音来模拟不均匀...原创 2018-04-03 18:04:09 · 1024 阅读 · 0 评论 -
Unity_Shader高级篇_12.1_Unity Shader入门精要
12.4 高斯模糊 高斯滤波 高斯模糊同样利用了卷积计算,它使用的卷积核名为高斯核。高斯核是一个正方形大小的滤波核,其中每个元素的计算都是基于下面的高斯方程: 其中,σ是标准方差(一般取值为1),x和y分别对应了当前位置到卷积核中心的整数距离。要构建一个高斯核,我们只需要计算告诉核内各个位置对应的高斯值。为了保证滤波后的图像不会变暗,我们需要对高斯核中的权重进行归一化,即让每个权重除以所...原创 2018-03-28 17:28:34 · 1030 阅读 · 0 评论 -
Unity_Shader高级篇_12.2_后处理_径向模糊效果
径向模糊效果是后处理啦,后处理的原理就不多说了,就是通过渲染好的屏幕图像进行全屏操作。首先观察上面那张图,从中心部分,向外扩展,有一种画面向外拉伸的感觉。那么,我们在fragment阶段,就可以按照这个思路来处理,上一篇文章在写描边效果的后处理时,为了让轮廓向外扩展,我们使用了模糊效果,把像素和周围的像素进行加权平均;而对于径向模糊也是一样,我们针对每个像素点,首先要得到一个相对于中心(不一定就是...原创 2018-03-28 18:16:17 · 1105 阅读 · 2 评论 -
Unity_Shader扩展篇_18_Unity Shader入门精要
第18章 基于物理的渲染 在之前的章节中,我们学习了Lambert光照模型、Phong光照模型和Blinn-Phong光照模型。但这些光照模型的缺点在于,它们都是经验模型。如果我们需要渲染更高质量的画面,这些经验模型就显得不再能满足我们的要求了。 近年来,基于物理的渲染技术(Physical Based Shading,PBS)被逐渐应用于实时渲染中。总体来说,PBS是为了对光和材质之间的行为进原创 2018-04-12 18:18:28 · 802 阅读 · 0 评论 -
Unity_Shader基础篇_4_Unity Shader入门精要
第4章 学习Shader所需的数学基础 计算机图形学之所以深奥难懂,很大原因是在于它是建立在虚拟世界上的数学模型。数学渗透到图形学的方方面面,当然也包括Shader。在学习Shader的过程中,我们最常使用的就是矢量和矩阵(即数学的分支之一——线性代数)。4.2 笛卡尔坐标系 在游戏制作中,我们使用数学绝大部分都是为了计算位置、距离和角度等变量。而这些计算大部分都是笛卡尔坐标系(Carte...原创 2018-04-16 18:17:44 · 1245 阅读 · 0 评论 -
Unity_Shader扩展篇_17_Unity Shader入门精要
第十七章 Unity的表面着色器探秘 * 表面着色器(Surface Shader)*实际上就是在顶点/片元着色器之上又添加了一层抽象。17.1 表面着色器的一个例子Shader "Unity Shaders Book/Chapter 17/Bumped Diffuse" { Properties { _Color ("Main Color", Color) ...原创 2018-04-11 18:23:58 · 637 阅读 · 0 评论 -
Unity_Shader高级篇_15_Unity Shader入门精要_水波效果
15.2 水波效果 在模拟实时水平的过程中,我们往往也会使用噪音纹理。此时,噪音纹理通常会用作一个高度图,以不断修改水面的法线方向。为了模拟水不断流动的效果,我们会使用和时间相关的变量来对噪声纹理进行采样,当得到法线信息后,再进行正常的反射+折射计算,得到最后的水面波动效果。 本节中,我们将会使用一个由噪声纹理得到的法线贴图,实现一个包含菲涅尔反射(10.1.5)的水面效果。如下图所示: ...原创 2018-04-04 16:42:14 · 2483 阅读 · 0 评论 -
Unity_Shader高级篇_12.3_后处理_屏幕水波效果
水波纹的原理其实比较简单,与其他后处理效果一样,vertex shader千篇一律,所有操作都有fragment shader完成。我们仔细观察一下上图中的效果,其实这种波纹并不是叠加上去的,而是波纹位置的图像被向外拉伸了,而这种拉伸的强度是按照类似sin函数的波形进行拉伸的。(1)新建场景(Scene_12_8)。 (2)新建一个脚本(WaterWave .cs)。并拖拽到摄像机上。 (...原创 2018-03-29 11:28:33 · 4217 阅读 · 5 评论 -
Unity_Shader高级篇_15_Unity Shader入门精要_全局雾效
15.3 全局雾效 13.3中实现效果是一个基于高度的均匀雾效,即在同一个高度上,雾的浓度是相同的。然而,一些时候我们希望可以模拟一种不均匀的雾效,同时让雾不断飘动,看起来更加缥缈。实现 (1)创建场景(Scene_15_3)。 (2)搭建场景。 (3)新建脚本(FogWithNoise.cs)并拖拽到摄像机上。 (4)新建一个Unity Shader(Chapter15-FogWi...原创 2018-04-04 17:45:58 · 1107 阅读 · 2 评论 -
Unity_Shader基础篇_4.1_Unity Shader入门精要
4.6坐标空间 4.6.1 为什么要使用这么多不同的坐标空间 因为一些概念只有在特定的坐标空间下才有意义,才更容易理解。 4.6.2 坐标空间的变换 关于定义一个坐标空间,必须指明其原点位置和3个坐标轴的方向。而这些数值实际上是相对于另一个坐标空间的(所有的都是相对的)。也就是说,坐标空间会形成一个层次结构——每个坐标空间都是另一个坐标空间的子空间,反过来说,每个空间都有一个父(paren...原创 2018-04-18 18:02:29 · 542 阅读 · 0 评论 -
Unity_Shader基础篇_4.2_Unity Shader入门精要
4.8 Unity Shader 的内置变量(数学篇) 使用unity写Shader的一个好处在于,它提供了很多内置的参数,这使得我们不再需要自己手动计算一些值。本节将给出Unity内置的用于空间变换和摄像机以及屏幕参数的内置变量。这些内置变量可以在UnityShadrVariables.cginc文件中找到定义和说明。 4.8.1 变换矩阵 首先是用于坐标空间变换的矩阵。表4.2给出了un...原创 2018-04-19 09:28:26 · 547 阅读 · 0 评论 -
Unity_Shader高级篇_16_Unity Shader入门精要_节省带宽
16.7 节省带宽 大量使用未经压缩的纹理以及使用过大的分辨率都会造成由于带宽而引发的性能瓶颈。 16.7.1 减少纹理的大小 之前提过,使用纹理图集可以帮我们减少draw call的数目,而这些纹理的大小同样是一个需要考虑的问题。需要注意的是,所有纹理的长宽比最好是正方形,而且长宽值最好是2的整数幂。这是因为有很多优化策略只有在这种时候才可以发挥最大效用。在Unity5中,即便我们导入的...原创 2018-04-10 15:02:11 · 780 阅读 · 0 评论 -
Unity_Shader高级篇_16_Unity Shader入门精要_减少需要处理的片元数目
16.6 减少需要处理的片元数目 另一个造成GPU瓶颈的是需要处理过多的片元。这部分优化的重点在于减少overdraw。简单来说,overdraw指的就是同一个像素被绘制了多次。 Unity还提供了查看overdraw的视图,我们可以在Scene视图左上方的下拉菜单中选中Overdraw即可。实际上,这里的视图只是提供了查看物体相互遮挡的层数,并不是真正的最终屏幕绘制的overdraw。也就是...原创 2018-04-10 11:53:16 · 508 阅读 · 0 评论 -
忽悠的原理和技巧观后感
愿世间人人本心向善。然人活一世,不为名既为利。为名必压他人之名,为利必夺他人之利。故此,务求其他,只求心安理得。然,值此一事,观后甚感。 古人云:知己知彼方能百战不殆。压其名,可压之,毁之。前为正,浩然正气辩高低,后为邪,狡诈恶毒污良人。夺其利,亦可压之,毁之。前为阳,阳谋谋事事无憾,后为阴,阴谋诡计计无常。原创 2018-03-05 13:45:17 · 403 阅读 · 0 评论 -
Unity_Shader中级篇_9.1_Unity Shader入门精要
让物体接受阴影 为了让正方体可以接收阴影,我们首先新建一个Unity Shader,(Chapter9-Shadow)我们把Chapter9-Shadow赋给正方体使用的材质ShadowMat。Shader "Unity Shaders Book/Chapter 9/Shadow" { Properties { _Diffuse ("Diffuse", Color...原创 2018-03-22 15:58:25 · 1375 阅读 · 0 评论 -
Unity_Shader初级篇_7_Unity Shader入门精要
纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射(texture mapping)技术,我们可以把一张图“黏”在模型表面,逐妏素(texel)(妏素的名字是为了和像素进行区分)地控制模型的颜色。 在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标(texture-mapping coordinates)存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的...原创 2018-03-19 18:02:02 · 2042 阅读 · 0 评论 -
Unity_Shader中级篇_10_Unity Shader入门精要
高级纹理 第七章学习了关于基础纹理的内容,这些纹理包括法线纹理、渐变纹理和遮罩纹理等。这些纹理尽管用处不同,但他们都属于低维(一维或二维)纹理。此时我们将学习一些更复杂的纹理。在10.1中我们会学习如何使用立方体纹理(Cubemap)实现环境映射。然后,我们会在10.2中了解一类特殊的纹理——渲染纹理(Render Texture),渲染纹理非常强大。最后10.3中将学习程序纹理(Procedu...原创 2018-03-23 18:22:23 · 893 阅读 · 0 评论 -
Unity_Shader高级篇_13_Unity Shader入门精要
第13章 使用深度和法线纹理 在12章中,屏幕后处理效果都只是在屏幕颜色图像上进行各种操作来实现的。然而,很多时候我们不仅需要当前屏幕的颜色信息,还希望得到深度和法线信息。例如,在进行边缘检测时,直接利用颜色信息会使检测到的边缘信息受物体纹理和法线纹理上进行边缘检测,这些图像不会受纹理和光照的影响,而仅仅保存了当前渲染物体的模型信息,通过这样的方式检测出的边缘更加可靠。 本章中,我们将学习如何...原创 2018-03-29 17:54:42 · 634 阅读 · 0 评论 -
Unity_Shader初级篇_8_Unity Shader入门精要
透明效果 透明是游戏中经常要使用的一种效果。在实时渲染中要实现透明效果,通常会子渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外。他还有另一个属性——透明度。当透明度为1时,表示该像素是完全不透明的,而当其为0时,则表示该像素完全不会显示。 在Unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明...原创 2018-03-20 18:14:00 · 692 阅读 · 0 评论 -
Unity_Shader中级篇_9_Unity Shader入门精要
中级篇是本书的进阶篇,将讲解Unity中的渲染路径、如何计算光照衰减和阴影、如何使用高级纹理和动画等一系列进阶内容。 第九章 更复杂的光照 在初级篇中实现的光照模型中没有考虑一些重要的光照计算,如阴影和光照衰减。本章首先讲解Unity中的3种渲染路径和3种重要的光源类型,再解释如何在向前渲染路径中实现包含了光照衰减、阴影等效果的完整的光照计算。在本章最后,会给出基于之前学习内容实现的包含了完整...原创 2018-03-21 18:23:29 · 854 阅读 · 2 评论 -
Unity_Shader高级篇_16_Unity Shader入门精要_减少draw call 数目
在Unity手册的iOS硬件指南(https://docs.unity3d.com/Manual/iphone-Hardware.html)中我们可以了解到iOS平台的硬件条件则相对统一。影响性能的因素 (1)CPU:过多的draw cal。过多的Draw call。复杂的脚本或者模拟的任务。 (2)GPU:顶点处理:多的顶点,过多逐顶点计算·。 片元处理:过多片元(即可能是由于分辨率造...原创 2018-04-08 18:22:46 · 666 阅读 · 0 评论 -
Unity_Shader中级篇_11_Unity Shader入门精要
第十一章 让画面动起来 没有动画的画面往往让人觉得很无趣。在本章中,我们将学习如何向Unity Shader中引入时间变量,以实现各种动画效果。在11.1节中,我们首先会介绍Unity Shader内置的时间变量,在随后的章节中我们会使用这些时间变量来实现动画。11.2节会介绍两种常见的纹理动画,即序列帧动画和背景循环滚动动画。在11.3节,我们会学习使用顶点动画来实现流动的河流、广告牌等动画效...原创 2018-03-26 18:27:11 · 1450 阅读 · 9 评论 -
Unity_Shader高级篇_16_Unity Shader入门精要_减少需要处理的顶点数目
16.5 减少需要处理的顶点数目 尽管draw call是一个重要的性能指标,但顶点数目同样有可能成为GPU的性能瓶颈。 16.5.1 优化几何体 3D游戏制作通常后是模型制作开始的。而在建模时,有一条规则我们需要记住:尽可能减少模型中三角面片的数目,一些对于模型没用影响、或是肉眼非常难察觉到区别的顶点都要尽可能去掉。为了尽可能减少模型中的顶点数目,美工人员往往需要优化网格结构。在很对三维建...原创 2018-04-09 18:02:57 · 640 阅读 · 0 评论 -
Unity_Shader高级篇_13.1_Unity Shader入门精要
13.4 再谈边缘检测 在12.3中,我们曾使用Sobel算子对屏幕图像进行边缘测试,实现描边的效果。但是,这种直接利用颜色信息进行边缘检测的方法会产生很对我们不希望得到的边缘线,如图13.8所示。 可以看出,物体的纹理、阴影等位置也被描上黑边,而这往往不是我们希望看到的。在本节中,我们将学习如何在深度和法线上进行边缘检测,这些图像不会受纹理和光照的影响,而仅仅保存了当前渲染物体的模型信息,通...原创 2018-04-02 17:25:21 · 448 阅读 · 0 评论 -
Unity_Shader高级篇_14_Unity Shader入门精要
第14章 非真实感渲染 游戏渲染一般都是以照相写实主义(photorealism)作为主要目标,但也有许多游戏使用了非真实感渲染(Non-Photorealistic Rendering ,NPR)的方法来渲染游戏画面。非真实感渲染的一个主要目标是,使用一些渲染方法使得画面达到和某些特殊的绘画风格相似的效果,例如卡通、水彩风格等。 接下来我们将学习两种常见的非真实感渲染方法。在14.1中了解包...原创 2018-04-02 18:08:52 · 900 阅读 · 0 评论 -
Unity_Shader高级篇_12_Unity Shader入门精要
高级篇涵盖了一些Shader的高级用法,例如,如何实现屏幕特效、利用法线和深度缓冲,以及非真实渲染等,同时,我们介绍一些针对移动平台的优化技巧。 第十二章 屏幕后处理效果 这一章将介绍如何在Unity中实现一个基本的屏幕后处理脚本系统,并给出一些基本的屏幕特效的实现团里,如高斯模糊、边缘检测等。 第十三章 使用深度和法线纹理 获取特殊的纹理来实现屏幕特效 第十四章 非真实感渲染 将会给...原创 2018-03-27 18:15:59 · 1322 阅读 · 0 评论 -
Unity_Shader扩展篇_19-20_Unity Shader入门精要
Unity 5相对于之前的版本来说,在shader方面做了许多重要的更新。例如,如果我们直接把在unity4中使用的一些shader源代码粘贴到Unity5中,往往会发现和unity4中得到的渲染结果不尽相同,甚至还会报错。 19.1 场景“更亮了” Unity5之前的Shader源码往往有下面的类似代码://Unity 5之前的shader经常包含了类似下面的代码,//而在Unit...原创 2018-04-13 16:47:30 · 352 阅读 · 0 评论