您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Game艺视界 于 2022-3-20 13:56 编辑
第08课凹凸偏移和视差遮挡贴图Bump Offset and Parallax Occlusion Mapping
在本集中,我们将介绍两种制作法线贴图的方法, 在第二集中,我们讨论了我们构建的PBR材料,这是鹅卵石材料,它具有基本纹理法线贴图,这种纹理是镜面粗糙度和周围光遮挡的结合而且它还具有我们不使用的金属质感,看起来很不错,我们得到了一个很好的漂亮的鹅卵石材料。
我要做的是用这种灰色(数值)而不是我们的灰色纹理样本,以使法线贴图的凹凸更加明显,并且您会明白我的意思了,因为现在没有颜色变成底色法线贴图的凸起更好一点
我们要介绍的第一个技术称为偏移映射 offset mapping,我有一个称为凹凸的节点偏移量,它的作用是修改我要用于的UV坐标,它会修改基于UV的在表面的高度上 高度图,黑色的意味着您的质地真的很低,白色的表示您高。 看到分辨率不高,纹理实际上只是256 x 256比较糊,不需要很高的分辨率纹理即可获得非常好的外观效果。我通过渲染高分辨率在3ds max中创建了此高度图,小的贴图可以减少uv偏移造成的锐角。
我将其插入凹凸偏移的高度插槽,现在如果我插入来自凹凸的UV偏移到我的三个纹理中,让我们看一下,可以看到效果非常逼真,这就是高度图的作用,让原本的结果不再平坦
我的第二种技术是视差遮蔽映射(Parallax Occlusion Mapping) 视差遮蔽映射修正了之前BumpOffset在陡峭角度上的失真,节点如下 我们使用了TextureObject读取纹理,而没有使用sample直接采样,因为在视差遮蔽映射的过程里会多次采样,在这个视差遮挡映射节点中多次凹凸偏移技术我只对我的高度图进行一次采样,所以使用视差遮挡贴图实际上是通过我的场景进行光线追踪,找出射线撞击我的物体的位置,并进行多个射线采样以找出表面的最佳形状。
我们设置一个最大最小的步进数,添加常量节点, 相当强大的系统,您可以做的是使用凹凸偏移映射 更强大的系统或更高端的平台,请使用视差遮挡贴图看起来非常好
视差遮蔽映射是逐步对高度贴图时使用的向量,找到相应的深度。 将总深度范围划分为同一个深度/高度的多个层 从每个层中我们沿着视线方向移动采样纹理坐标,直到我们找到一个采样低于当前层的深度值,在触碰之前和之后,在深度层之间进行线性插值 我们可以设置step来调整精度,垂直看时会使用minStep,角度越斜越用maxStep 在这里插入RGB颜色,以便我们看一下它最后效果
第09课纹理压缩与设置Texture Compression and Settings
在这一节,我们会讨论纹理设置和压缩格式,把这些值设置正确很重要以便您可以为您的虚幻项目在质量和性能之间进行正确的权衡。
我们继续使用上一节的shader,这是我们的基础颜色纹理 - 当您导入纹理时,它是2 K x 2 K
- 您创建的原始纹理的大小,然后在游戏中在引擎中也是2 K x 2 K
- 资产大小您的纹理正在使用的内存,因此在我当前的压缩设置下,我的2k纹理仅占用了2 MB或将近3 MB的内存
- 没有alpha通道
- 我的纹理被标记为要流式传输意思是角色在游戏中移动时,如果有物体上面的纹理接近角色的纹理动态加载和流式传输,然后该对象离开或在屏幕外的纹理。将被流出或从内存中删除这是管理纹理的最有效方法
- 下一项是正在使用的纹理压缩格式,这是DXT1它是最有效的压缩格式之一
- 没有偏移
- 它们是12张MIT地图进入虚幻引擎的纹理,它会创建一个mipmap链,意思是说您的纹理是2k像这样的,它将制作一个副本的纹理是1k,另一个是512,另一个是256,它将继续制作较小的副本,直到获得一直下降到4x4,每个副本都称为MIt取决于您正在观看物体的距离相机多近或远或您看物体的角度或角度如何笔直将选择要采样的MIT级别,因此有时会进行采样完整的2k图像,或者如果物体距离较远或以一定角度看到,则为将加载并采样较低的中级电平以节省内存性能。
接下来是压缩设置 这是一个漫反射纹理,在这里选中此框,其中显示不使用alpha进行压缩,这将导致什么如果我导入的纹理具有四个通道,红色,绿色,蓝色和Alpha,它将忽略该Alpha通道,并压缩内容,就好像即使我导入了具有alpha,因此,如果您知道纹理只会包含三个通道为红色,绿色和蓝色,应检查是否没有Alpha压缩万一您不小心将其保存为32位图像或具有第四通道的图像,因此它将忽略该第四通道。
接下来,我们将讨论压缩设置,就像我说的DXt1是您可以使用的最有效的压缩设置,因此如果您有具有三个通道的纹理,例如此处的鹅卵石纹理,您可以对其进行设置到DX t1,未压缩的图像将是内存中大小的8倍,压缩图像,因此DXt1的压缩比为8:1这是非常有效的。
让我们看一下其他一些压缩设置是法线贴图,法线贴图在DirectX 11上使用EXT 5或bc 5DX T 5是4:1的压缩比,如果您在此处选择法线贴图将应用一些非常适合的压缩设置使法线贴图看起来尽可能好,因此无论何时使用您应该始终选择normalmap dxt五,这绝对是最好的。
Alpha通道是所有数据中压缩程度最低的,所以如果我有一些数据非常重要,不要接收压缩伪像我可能应该将其存储在Alpha通道中。 srgb的复选框,这意味着什么是将数据视为线性数据,没有伽马校正只要您具有仅是灰度的蒙版,就会在此处应用校正那一些灰度信息,例如粗糙度或环境光遮挡那些需要存储在线性空间中的东西,所以你应该始终确保仅在需要时才取消选中此srgb框。 srgb处于打开状态时是提供应该是基本色颜色的着色器信息(颜色勾选灰度取消) 选择合适的纹理压缩格式,并且注意纹理压缩选择的格式,与纹理采样的格式需要相同匹配 重要的是要平衡纹理的压缩和质量设置,因此您在内存中获得的小纹理既美观又高质量,视需要而定,并且有不同的正确方法。
第10课布料着色器 cloth shading了解布料
在今天的教程中,我们将看一看布料着色器 开始之前我们要做的第一件事看看参考图,一些真实衣服并确定一些使布料与其他表面不同的特征这将使我们能够知道我们需要在着色器中做什么才能使着色器看起来像布
这是一些棉布的图像,织物和您可以看到的主要特征之一是沿着边缘有一点绒毛伸出来,你能看到这些细小的纤维吗? 这些纤维发生的原因是它们会在光通过时捕获光在物体后面和前面,这些纤维捕捉光,所以它使表面看起来像在边缘被照亮,好像有边缘使表面看起来像在边缘被照亮,
我们看另一幅图像,这里是一些针织的图片棉花,您会再次看到它的边缘有这些纤维,看起来它在边缘被点亮,所以边缘的照明比中间有一些缎子的图像,在此图像中,您可以看到我们几乎像相反的效果一样,还有更多当您直接看表面时会出现照明掉下来并向边缘变暗
再看一看,这是一些丝绸的图像, 我们将使用第一个技术由约翰·哈维尔(John Havel)在SIGGRAPH上发表的有关他的工作的演讲中介绍他为《神秘海域2》做过,从SIGGRAPH的幻灯片80上,您可以看到他在这里有一个公式创建他的布料着色器,这就是我们要在 Unreal 中模仿的内容.
在我们开始放下节点之前想提一下,那就是技术在物理上是不正确的,我们这里要模仿的是布料的外观,不一定是实际的物理 如果我们尝试模仿布的物理性质,我们将不得不改变照明模型unreal 正在使用,我们无法仅从节点执行此操作出于这个原因,我们将创建一个简单的着色器来模仿布料的特性,而无需实际计算物理上的光线
我们要做的第一件事就是使用 Afrin el 术语和Afrin el term 计算视图向量和法线之间的点积就像我们在这里所做的那样,所以如果我右键单击并键入Fornell,您可以看到这里有一个节点创建了一个fernell项,并且这与我们要做的事情类似,但我们不会使用此节点,因为我们想对其进行更多自定义 我们放上cotton纹理的贴图
换个纹理接着调调参数
它不是一个物理上正确的数学公式,但它确实让我们在模仿布料外观的同时,还能创造出漂亮的便宜的着色器,其保持在虚幻引擎的照明模型的范围内。
第11课体积冰着色器在今天的教程中,我们将继续体积效果,这是您可能会用到的冰块或冰块的效.这是我通过在冷却器中加水然后离开而制成的一块冰它在冰箱里放了几天,如果我们看看这个物体,你可以看到它表面上有各种各样的细节,但也有体积中的细节,因此我们今天将创建一个模仿的着色器.
我在这里有一个纹理,其中的纹理坐标已连接到其中,底色使用了纹理,对此没有什么特别的真的,这只是带有虚幻的东西,叫做T Perlin噪音 M,它看起来像这样,所以它只是一堆噪音
我们想要做的是我们想要这种噪声就像在表面之下一样四处移动,而不是粘在表面上表面,所以现在它只是直接用 UV 涂抹在表面上坐标, 这里这个红色矢量代表表面的法线,此绿色矢量代表相机,右边现在,这就是我们的模型surface,除了我们的相机表面没有响应该运动。
我们真正想要的是这样的东西,随着摄像机矢量的移动围绕表面下方的纹理移动, 所以我们需要弄清楚如何获得当前应用于我们表面的纹理以推入表面并相对于相机矢量的移动,
有一个矢量是它被称为反射向量
这是我们想要的东西,但它在表面上方,而不是下方表面,所以我们需要做的就是获取反射向量并反转它会给我们这紫色的那一种,
我们可以使用它来添加到我们的 UV 坐标中并得到 v 的那个,当我们的相机矢量移动时在表面下滑动,这里是我们的纹理和我们的纹理坐标直接传递给基色,我将其从世界空间转换为切线空间,我们将产生这种效果在切线空间中,这里我的切线空间法线仅为 0 0 1它只是平放在表面上,然后我正在使用这个名为 custom 的节点反射向量,我正在传递我的表面法线和我的相机向量进入反射向量,然后我采用 R 和 G 或 X&Y 分量我可以将它们添加到我的纹理坐标中,这样我就可以将其作为我的噪波纹理传递给UV。
让我们来看看我们得到了什么,所以当我在周围翻滚这个立方体时,您会看到现在纹理不再粘在表面上,看起来几乎就像立方体是一块玻璃,我正在看放大镜和纹理是我正在查看的对象,它在后面玻璃,这是我想要的效果,
但现在是只是太强烈了我想要它的感觉是纹理在里面在表面之下,但现在它看起来就像纹理一样在表面后面,正在发生的偏移也很明显强大,所以我需要添加一些控件,我们可以使用这些控件来调低音量 我现在要抓住这个人,这将采取 Z反射矢量的分量,然后它将做一个绝对值除法控制偏移大小
现在让我们添加另一件事,我们的表面非常光滑一开始看是冰不是很光滑有各种瑕疵,所以我在这里有一个法线贴图,我要把它拉出来向下法线贴图,而不是使用0 0 1的表面法线完全平滑,我要替换我的法线贴图,你可以看到在这个法线贴图中,它大部分是平滑的,但有所有这些小麻点和瑕疵,这就是我想要的,
我现在可以做的另一件事是我的噪声纹理发生的偏移是完全统一的,所以我使用这个值一百,我的纹理在每个位置都均匀偏移我想比其他像素偏移更多。我可以使用纹理来定义我的偏移量,而不仅仅是这个统一的一百这样的值
好的,现在这看起来很酷,所以我让每个像素都被抵消了与它周围的像素略有不同,所以它看起来像这个非常有趣的凹凸不平的表面图案,看起来有体积 ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍如果您要使用此着色器并稍微移动一点进一步使用它,您可以在表面上创建一些非常好的反射你可以创建一些更好的纹理我只是使用随机噪声纹理,但您可以创建看起来更像冰的纹理您可以创建一些不错的镜面反射高光,但是这是核心。
表面具有体积而不是只是将纹理直接附着到表面上。
第12课摇曳树叶着色器仰望白杨树林的树冠,我们在这里可以看到成千上万的树叶在风中荡漾着,这里的每一片小叶都有很多复杂性,其中有数千个是旋转它自己的小茎,被风吹,风是随着与每个叶子,每个茎,每个分支的碰撞而被削弱这里发生的事情太多了,树木在摇曳,树叶在摇曳。
开发人员需要做的就是弄清楚我该怎么做 将其中的几张叶子映射到一个多边形上,让我们看一下这张图片上面可能有 75 或 100 片叶子 我们把它放在一个多边形上大大降低了我们的复杂性。
但是现在我们引入了一个新问题如果我们想要动画,多边形本身将作为一个实体单元移动,所以所有的叶子将一起移动,就好像它们是本教程视频中的叶子一样,在此为单个叶子设置动画的技术 所以让我们直接进入虚幻领域,看看它是如何工作的看起来它是一个1024 纹理,具有很好的 alpha通道切叶然后将纹理坐标插入其中,现在分支只是静态的,所以我们想要为它设置动画。
所以我要引入一个时间节点time节点,我们将获得一些动画,以便我将时间投入我添加节点的B插槽,纹理坐标插入到a插槽,然后我要把它插入我分支的 UVs移动那里有动画,但感觉不像摇摇晃晃的叶子。
所以我们要做的第一件事是添加一对控件来控制有多少移动,所以我要添加一个乘法节点,我们将时间乘以一个小值,这里保持不变,让我们乘以时间,让我们把它放慢一点让我们现在保存1.4,我们将时间乘以现在的另一件事需要做的是减慢实际移动的速度您可以看到它现在正在不断增长, 我们想要它来回走动,用正弦波来实现,所以我要在这里添加一个正弦节点sine 另一个乘法节点,我们需要将此正弦值乘以很小,我要在这里复制我的常量节点并将其插入,然后我们要将其设置为0.006,可以看到,通过这些乘法节点,我们已经可以控制它,以便分支机构在合理的范围内移动。
接下来我需要做的是找到一个在该分支上隔离单个叶子的方法,以便我可以使单个叶子叶子以与其他人不同的量摆动,以便做到我所做的需要做的是画一个看起来像这样的面具,这是我的叶子纹理,我将它带入Photoshop,然后我将其涂成绿色,蓝色和红色,以隔离单个对象您会看到这些斑点确实分辨率很低,你不需要这个面具的高分辨率纹理足以隔离单个叶子。只要您能够将单个叶子指定为属于这个纹理中的红色组绿色组或蓝色组。
我实际上并没有使用这些蒙版来表示颜色,我只是在使用单独的红色,绿色和蓝色通道代表不同的叶子组,所以让我们切换回虚幻,我想向您展示这个面具的外观 r g b
我们又做一个法线,得到这个效果
我们正在努力使这种效果尽可能便宜,因为通常在视频游戏中植被是绘制成本很高,因此我们遗漏了很多东西。 您会注意到所有叶子都在一个叶片中摆动 现在对角线方向我可以增加更多的复杂性着色器并使红色绿色和蓝色组向不同方向摆动。但在这种情况下,我选择使它们向一个方向摆动我故意选择省略的细节来制作这个着色器,节省资源。作为着色器艺术家,我们要面对的一件事是我们必须创造一种效果可以达到我们想要的外观,但要使其尽可能便宜。 尽管实际上只有三个将红色,绿色和蓝色分组,感觉更加生动活泼,并且有很多。
|