祭零小白
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链

更复杂的光照(三)

Unity 的阴影 阴影是如何实现的 我们先可以考虑真实生活中阴影是如何产生的。当一个光源发射的一条光线遇到一个不透明物体时,这条光线就不可以再继续照亮其他物体(这里不考虑光线反射)。因此这个物体就会向它旁边的物体投射阴影,那些阴影区域的产生是因为光线无法到达这些区域。 在实时渲染中,我们最常使用的是一种名为 Shadow Map 的技术。这种技术理解起来非常简单,它会首先把摄像机的位置放在与光源
2022-02-19
Unity Shader
#Light

更复杂的光照(二)

Unity 的光源类型 Unity 一共支持 4 种光源类型:平行光(directional light)、点光源(point light)、聚光灯(spot light)和面光源(area light)。面光源仅在烘焙时才可发挥作用,因此不在本节讨论范围内。 光源类型有什么影响 Shader 中使用的光源属性最常用的有光源的位置、方向(更具体的说就是到某点的方向)、颜色、强度以及衰减(更具体的说
2022-02-18
Unity Shader
#Light

更复杂的光照(一)

Unity 的渲染路径 在 Unity 里,**渲染路径(Rendering Path)**决定光照是如何运用到 Unity Shader 中的。我们需要为每个 Pass 指定它使用的渲染路径,只有这样才能让 Unity 正确地为我们准备光源和处理后的光照信息等数据,也就是说,我们只有为 Shader 正确地选择和设置了需要的渲染路径,该 Shader 的光照计算才能被正确执行。 Unity 支持
2022-02-17
Unity Shader
#Light

透明效果(二)

开启深度写入的半透明效果 在上一篇中,我们给出了一种由于关闭深度写入而造成排序错误的情况。一种解决办法是使用两个 Pass 来渲染模型:第一个 Pass 开启深度写入,但不输出颜色,它的目的仅仅是为了把该模型的深度值写入到深度缓冲中;第二个 Pass 进行正常的透明度混合,由于上一个 Pass 已经得到了逐像素的正确的深度信息,该 Pass 就可以按照像素级别的深度排序结果进行透明渲染。但这个方法
2022-01-27
Unity Shader
#Alpha

透明效果(一)

透明效果 在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为 1 时,表示该像素是完全不透明的,而当其为 0 时,则表示该像素完全不会显示。 在 Unity 中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试(Alpha Tes
2022-01-25
Unity Shader
#Alpha

基础纹理(二)

渐变纹理 纹理其实可以用于存储任何表面属性。一种常见的用法就是使用渐变纹理来控制漫反射光照的结果。下面我们将学习如何使用一张渐变纹理来控制漫反射光照。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666
2022-01-24
Unity Shader
#Texture

基础纹理(一)

基础纹理 纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射(texture mapping)技术,我们可以把一张图“黏”在模型表面,逐**纹素(texel)**地控制模型的颜色。 在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把**纹理映射坐标(texture-mapping corrdinates)**存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。通常,
2022-01-22
Unity Shader
#Texture

标准光照模型

标准光照模型 虽然光照模型有很多种类,但在早期游戏引擎中往往只使用一个光照模型,这个模型被称为标准光照模型。标准光照模型在BRDF理论被提出之前就已经被广泛使用了。标准光照模型只关心直接光照(direct light),也就是那些直接从光源发射出来照射到物体表面后,经过物体表面的一次反射直接进入摄像机的光线 它的基本方法是,把进入到摄像机内的光线分为4个部分,每个部分使用一种方法来计算它的贡献度。
2022-01-19
Unity Shader
#Math #Light

Clip Space

裁剪空间 顶点从观察空间转换到裁剪空间(clip space,也被称为齐次裁剪空间)所用的矩阵叫做裁剪矩阵(clip matrix),也被称为投影矩阵(projection matrix)。 裁剪空间的目标是能够方便地对渲染图元进行裁剪:完全位于这块空间内部的图元将会被保留,完全位于这块空间外部的图元将会被剔除,而与这块空间边界相交的图元就会被裁剪。那么,这块空间是如何决定的呢?答案是由**视锥体
2022-01-17
Unity Shader
#Math

Spatial Transform

坐标空间的变换 在渲染流水线中,我们往往需要把一个点或者方向矢量从一个坐标空间转换到另一个坐标空间,这个过程的是怎么实现的? 我们要想定义一个坐标空间,必须指明其原点位置和三个坐标轴的方向。而这些数值实际上是相对于另一个坐标空间的。也就是说坐标空间会形成一个层次结构——每个坐标空间都是另一个坐标空间的子空间,反过来说,每个空间都有一个父坐标空间。对坐标空间的变换实际上就是在父空间和子空间之间对点和
2021-12-26
Unity Shader
#Math
123

搜索

Hexo Fluid