首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基础渲染系列(十)——更复杂的复合材质

当遮挡强度为零时,贴图完全不会影响光线,因此,该函数需要返回1。当处于全强度时,结果恰好是贴图中的结果。我们可以通过基于滑块在1和贴图之间进行插值来实现。 ?...就像是二进制splat贴图一样工作,就像我们在第3部分“组合纹理”中使用的一样。区别在于,值0表示无细节信息,值1表示完整详细信息。 这是一个细节遮罩,可以防止细节出现在金属零件上。...标准着色器还具有着色器功能,可切换法线贴图和局部贴图的使用。当指定主法线贴图或细节法线贴图时,法线贴图将启用。当设置了细节反照率或法线时,将启用细节。 将这些功能添加到我们的着色器中吧。...在创建使用我们的着色器的两种新材质时,你会看到。选择两个,然后为其分配法线贴图。即使两种材质现在都具有法线贴图,但只有第一种材质最终会使用它们。 ?...因此,我永远不会在经常执行的应用程序代码或编辑器代码中使用它。 如果愿意,可以用常规的for循环替换它们。 ? 请注意,上面的代码使用一个临时变量来缓存editor.targets属性。

2.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Stable Diffusion 倚天剑术》第 6 卷:控制小姐姐身体姿势

    接着,在基于线稿图和提示词来生成具有同样线稿结构的新图,这样就实现了对新图的控制。当我们把这样的能力用在画 AI 模特上时,就可以实现对小姐姐姿势的控制了。...这里我们来介绍一下如何在 Stable Diffusion WebUI 中使用这个功能: 1)在 WebUI 中找到 ControlNet 面板,用目标姿势图生成线稿图 整个过程如下图所示: 使用 ControlNet...法线贴图在游戏制作领域用的较多,常用于贴在低模上模拟高模的复杂光影效果。...normal_bae,Normal Map BAE 这个模型可以接受来自渲染引擎的法线贴图,只要法线贴图遵循 ScanNet 的协议即可。...这样我们生成 Normal 法线贴图来控制后续出图的姿势,如图: 使用 ControlNet 的 Normal 模型生成法线贴图 这里的原图、Normal 法线贴图、新图对照如下: <<< 左右滑动见更多

    69130

    进阶渲染系列(七)——三向贴图(任意表面纹理化)【进阶篇完结】

    1.4 没有切线空间 请注意,与Unity的表面着色器方法不同,我们在世界空间而不是切线空间中使用法线向量。如果要在SURFACE_FUNCTION中使用切线空间法线贴图,则必须自己明确地执行此操作。...不使用切线时可以节省工作。仅在默认法线贴图或视差贴图处于活动状态时打开切线空间来实现此目的。...在MyTriPlanarSurfaceFunction中使用此函数,并使用所有三个投影进行采样。然后,最终的反照率变为其平均值。 ? ?...让我们从求幂前直接使用高度开始,替换法线向量。 ? 然后在调用函数时将高度作为参数添加。 ? ?...并且它应该在MyLightmappingFragmentProgram中使用相同的表面方法,但它只关心反照率,发射,金属和平滑度。 ? 用新的表面数据替换getter函数。 ?

    2.5K30

    Unity通用渲染管线(URP)系列(八)——复杂的贴图(Masks, Details, and Normals)

    各个功能可以在需要时检索遮罩。在GetMetallic中执行此操作,通过乘法使用遮罩贴图的R通道计算其结果。 ? ? (只有金色的电路是金属) 金属贴图通常是二进制的。...进行此工作的第一步是在GetDetail中将详细信息值范围从0~1转换为-1~1。 ? 其次,只有R通道会影响反照率,将其推向黑色或白色。这可以通过根据颜色的符号用0或1内插颜色来完成。...(法线贴图) 该贴图遵循标准的切线空间法线贴图的约定,即将上轴(在这种情况下称为Z)存储在B通道中,而右XY轴和前XY轴则存储在RG中。...然后在GetCascadedShadow中使用此向量。 ? 4.4 细节化法线 我们还可以包含法线贴图以获取细节信息。...(可选细节) 现在,只有在定义了相关关键字时,才需要在Varyings中包含详细UV。 ? 最后,仅在需要时在LitPassFragment中包含细节信息。 ?

    4.4K40

    学界 | 用GAN自动生成法线贴图,让图形设计更轻松

    表面法线贴图是形状的高阶差分信息,因此在设计流程的早期阶段,人类不易准确推理得到。...因为法线信息和素描曲线在图像域中都有良好的表征,所以根据素描推导法线贴图可以使用深度神经网络来实现。...在我们的系统中,素描到法线贴图生成问题被当作了一个图像转译问题——使用一个基于 GAN 的框架将素描图像「转译」成法线贴图图像。...我们在生成器中使用了 U-net [24] 架构来在生成过程中传递平滑的信息流,从而进一步提升像素层面的对应关系。...我们在我们的实现中使用了 Wasserstein 距离,以为网络更新提供更有效的引导和降低训练过程的不稳定性。

    1.9K90

    海量新功能,Godot 4.0正式发布!

    下面是新版本部分改动: 3D 和一般渲染改动 Vulkan 和新渲染器 新版本有了两个新的 Vulkan 后端(集群和移动) 此外还集成了一个基于 OpenGL 的兼容性渲染器,旨在支持旧的和低端设备。...当然,仍然可以使用光照贴图在低端设备上预渲染光照和阴影,但光照贴图现在使用 GPU 进行更快的渲染。 最后,阴影在 Godot 3 中的表现一直不太优秀。...此外,借助强大的 SSAO 实施(屏幕空间环境光遮蔽)可以访问许多有用的设置,例如光影响(影响直射光的程度),可以通过忽略具有环境遮挡贴图的对象来优化质量。...在着色器中使用带符号的距离场,可以获得高级视觉效果,例如长阴影、光晕和清晰轮廓。对于 3D 可以在法线贴图中控制光照高度。 使用多个光源时性能会显着提高。...另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取! 推荐阅读 代码越“整洁”,性能越“拉胯”?

    1.4K10

    基础渲染系列(六)——凹凸

    (从高度图中生成法线图) 应用导入设置后,Unity将计算法线贴图。原始高度图仍然存在,但是Unity内部使用生成的贴图。 就像我们将法线可视化为颜色时一样,必须对其进行调整以使其在0–1范围内。...由于指令限制,在定位Shader Model 2时,它也不支持缩放。因此,在定位移动设备时,请勿依赖凹凸缩放。 ? 2.4 结合反照率和凹凸 现在我们有了功能性的法线贴图,你可以检查它带来的差异。...(有和没有凹凸) 3 凹凸细节 在第3部分“组合纹理”中,我们创建了具有细节纹理的着色器。我们用反照率做到了这一点,但我们也可以用凹凸来做到这一点。...它们的工作方式与法线向量一样,只是它们是4D向量。当他们在本地向右指向时,给他们涂红色。 ? ? (展示法线和切线) 最后,用蓝线构建并显示副法线向量。 ? ?...让我们将副法线计算放在自己的函数中。然后,可以在顶点着色器或片段着色器中使用它。 ? 由于未在任何地方定义BINORMAL_PER_FRAGMENT,因此我们的着色器现在将计算每个顶点的双法线。

    3.8K40

    法线贴图

    image.png 什么是法线贴图 在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一 个“平”面,例如砖墙的表面带有石质浮雕等等。...image.png 可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。...后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果,也就是法线贴图。...image.png 表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。...一条法线是一个三维向量,一个三维向量由x, y, z等3个分量组成,在法线贴图中,把(x, y, z)当作RGB3个颜色的值存储。 录这些法线的载体就被我们称为法线贴图。 image.png

    1.7K10

    Three.js 之 Import Model 导入模型

    因为 GLTF 模型已经逐渐变为标准,并且能应对绝大部分你遇到的场景。GLTFGLTF 是 GL Transmission Format 的缩写。...由 Khronos Group 创造(他们还创造了 OpenGL, WebGL, Vulkan, Collada 并且有很多成员在 AMD / ATI, Nvidia, Apple, id Software...GLTF 在近些年已经变得越来越流行。它可以支持各种数据集,你可以在其格式中使用几何体和材质,同时也可以包含相机、光照、场景、动画、骨骼等。...包含了各种信息,包含相机、光照、场景、材质等,但没有几何体或纹理贴图。Duck0.bin 是一个二进制文件。通常包含了几何体和UV贴图坐标、法线坐标等。DuckCM.png 是鸭子的纹理贴图。...例如你想修改纹理贴图,换一张更压缩的贴图时,就会比较麻烦,因为这些数据都是被集合在了一起,同一个二进制文件中。

    6.5K30

    【笔记】《计算机图形学》(11)——纹理映射

    (由参数方程决定的三维表面)或者本身就是参数表面时, 通过将那个参数方程取反映射即可得到很好的映射 但是现实中我们遇到的表面常常不是参数表面, 例如是隐式表面或者三角面片组成的表面, 对于这种情况我们通常用几何坐标系...这些重建操作在实现上都是简单的, 但是会遇到一个很实际的问题. 纹理的渲染是一个非常频繁发生的步骤,也就是其对执行时间的要求很高....这种储存方法比较直接, 渲染时需要对物体表面的法线直接替换成法线图中的法线, 优点是当从和法线图生成时一样的视角渲染时, 可以直接有看到立体模型的错觉效果, 缺点是很多时候我们需要的是能够应用到其它表面上的法线...缺点是当要表达一个完整模型例如一个正方体时解决方法只能是将此贴图复用在六个面上或者为每个面制作一个法线图, 因为无法像模型空间中那样用一张图表示整个正方体....这就是阴影贴图的原理 在阴影贴图处理中有两个问题需要考虑, 一个是由于渲染阴影贴图的分辨率常常不如实际渲染画面时的分辨率, 因此阴影贴图粒度较大的像素的投影就会导致阴影不连续的情况产生.

    4.4K41

    ISUX译文 | The PBR Guide基于物理的渲染指引(下)

    为了节省性能,在实时渲染器中使用高度贴图时,我们应该减少贴图中的高频细节。高度贴图设计时更倾向于呈现置换体(用于置换几何体面形态的形状)的整体轮廓。...一个比较推荐的实操方式是,用模糊/精度较低的高度贴图来塑造置换体的外形,并且减低它的高频细节。然后,再用法线贴图来提供高频细节,而高度贴图只置换了整体轮廓。...如果你在光线跟踪渲染器(Raytrace Renderer)里使用高度贴图实现置换效果时,高频细节就不可缺失了。 4.3.法线贴图 Normal 法线贴图可用于模拟表面的细节。...·制图指引 在SP或SD中,可以利用内置的烘焙工具从模型中烘焙法线贴图。在SD中,你可以利用法线点将高度转换成法线贴图(如图50)。而在SP中,你也可以直接在3D视图中直接绘制法线数据(如图51)。...它是专门为非导体材质所设的,并且可以在S/G工作流中使用。

    1.4K20

    UE4地编基础-材质蓝图篇

    如果在UE4里,发现颜色贴图泛白,那么颜色贴图是16位数的。改成8位数就正常了(从SP、SD里导出贴图时注意设置)。 如果贴图颜色还是泛白。...可以在PS软件里面新建一个文件,把颜色贴图复制进去,然后另存一张贴图颜色。用这张贴图就行了。...4、材质属性贴图 包括Metallic(金属度)、Roughness(粗糙度)贴图 灰度贴图必须关闭GRB选项。 5、法线贴图 UE4支持Directx的法线贴图。...OpenGL的法线贴图需要反转法线绿色通道(G通道)。 法线贴图必须关闭GRB选项。...用Time时间节点来控制自发光的 明暗波动速度。 2、节点: Sine(正弦)函数节点:Sine 表达式在[0, 1]的输入范围和[-1, 1]的输出范围上反复输出正弦波的值。

    2.2K32

    Unity 水、流体、波纹基础系列(一)——纹理变形(Texture Distortion )

    本文重点: 用一张流图纹理来调整UV坐标 创建一个无缝的动画循环 控制流体产生 使用导数纹理展示凹凸 1 UV动画 如果液体不动时,在视觉上是无法与固体区分开的。你看的到底是水,果冻还是玻璃杯呢?...但是我们不需要原始的法线向量,因此我们也可以通过将导数存储在贴图中而不是用法线来跳过转换。 导数贴图的工作方式与法线贴图相同,不同之处在于它包含X和Y维度上的高度导数。...这是一个与以前的法线贴图描述相同表面的导数贴图,就像法线贴图一样,X导数存储在A通道中,Y导数存储在G通道中。另外,它的B通道中还包含原始高度图。但是同样,通过将高度缩放0.1来计算导数。 ?...(导数加高度图) 为什么不把高度直接用0.1倍存储? 高度数据以最大强度存储,以最大程度地减少精度损失。 由于纹理不是法线贴图,因此将其导入为常规2D纹理。确保指示它不是sRGB纹理。 ?...(用导数图代替法线图) 生成的表面法线看起来几乎与使用法线贴图时的外观相同,但它们的计算成本较低。由于我们现在也可以访问高度数据,因此我们也可以使用它为表面着色。

    4.3K21

    Unity Shader常用函数,标签,指令,宏总结(持续更新)

    包含基本光照属性,如 _LightColor0 UNITY_LIGHTMODEL_AMBIENT(使用大写) 环境光,一般取前三个分量rgb(xyz);基本光照模型需要有环境光,漫反射,高光等 基本纹理&法线贴图...用于片元着色器;一般会定义染色属性并与之相乘得到反射率(albedo),反射率作为环境光和漫反射计算的因子 UnpackNormalWithScale(packedNormal, _BumpScale); 反映射法线贴图采样结果得到顶点空间中的法线方向...,同时计算凹凸映射的缩放;packedNormal为法线贴图直接采样结果,_BumpScale为凹凸缩放值;法线贴图必须进行导入设置为Normal Map UnityObjectToWorldDir(v.tangent.xyz...阴影投射: TRANSFER_SHADOW_CASTER_NORMALOFFSET(o) 用于顶点着色器中计算阴影在裁剪空间中的位置,并把结果输出到结构体中,o为输出的结构体; 因为这个宏中使用了v.vertex...和v.normal,故须保证:1.顶点着色器的输入结构体名为v;2.输入结构体中顶点变量名为vertex;3.输出结构体中包含法线信息且名为normal V2F_SHADOW_CASTER; 用于在片元着色器的输入结构体中定义阴影投射所需的变量

    2K10

    基础渲染系列(九)——复合材质

    (法线贴图 和凹凸比例) 当为材质指定了法线贴图时,标准着色器仅显示凹凸比例。也可以通过检查属性是否引用纹理来做到这一点。如果是这样的话,请显示凹凸比例。...在我们的着色器中调整细节纹理的显示名称,以匹配标准着色器。 ? ? (次要贴图) 细节法线贴图的工作原理与主法线贴图相同。奇怪的是,标准着色器GUI不会隐藏细节凹凸比例。...使用我们的照明着色器,用这些贴图创建新材质。使它相当平滑。另外,由于材质不是很亮,因此可以在Unity的默认环境下使用。如果场景的环境强度降低仍然是0的话,则将其设置为1。 ?...这是结合了两个贴图的纹理。尽管金属色只需要R通道,但我仍然用金属色值填充了RGB通道。平滑度使用Alpha通道。 ?...在金属表面和非常光滑的表面上,此限制变得清晰可见。其他时候它没有那么明显。 ? (使用未压缩的法线贴图) 3.2 将平滑度与反照率相结合 当你同时需要将金属贴图和平滑贴图组合为单个纹理时,这很好。

    3.5K10

    UE4UE5的RHI(Vulkan为例)

    对于引擎开发者来说,在原始的RHI接口函数不符合要求时,或者想做一些跟业务绑定的专有逻辑时,这一套非常深的封装反而是一个非常重的负担,因此我就根据自己阅读源码后的理解和开发经验,尝试总结梳理了一下RHI...Vulkan API 在开始具体说RHI怎么封装的之前,还是先介绍一下平台API具体都是什么样子的,这样后面在说RHI对应封装时,就能够清楚为什么这样做了。...了 在使用Subpass时,如果要fetch上一个Subpass的结果,shader里的参数类型要写成subpassInput(layout里用input_attachment_index指定第几个),...我猜是因为这个RHI可以在运行时才决定用哪个,不是编译时候确定的,比如启动时传个参数vulkan,那么就创建不是DX12了,而是vulkan的RHI 在上面有说Vulkan的流程,在绘制前需要准备各种资源...这是因为对于ActiveCmdBuffer来说,在Viewport绘制的时候,提交一次就可以了,而对于资源,用的时候就需要最新数据,比如读贴图的时候,Lock里只调用vmCopyBuffer并不能拿到真正的数据

    6K40

    基础渲染系列(十六)——静态光照

    也可以在Enlighten灯光映射引擎和Progressive灯光映射器之间切换。后者以增量方式生成光照贴图,优先考虑场景视图中可见的内容,这在编辑时很方便。我在本教程中使用了Enlighten。...不使用法线和切线,但是需要顶点着色器中的光照贴图坐标。 ? 我们可以按原样使用函数,但GetEmission除外。该函数仅在前向base pass 或延迟pass中使用时才起作用。...当使用具有法线贴图的材质时,这一点变得非常明显。 ? ?...(使用法线贴图 实时光VS光照贴图化) 4.1 定向 通过将“Directional Mode”改回“Directional”,可以使法线贴图在烘焙的光照下工作。...无需手动为此添加多编译指令,我们可以在正向基本传递中使用#pragma multi_compile_fwdbase。

    3.8K20

    UE5的Nanite刷屏?Unity破解Nanite几十亿面渲染只需三招

    由于视角的原因,当我们调整观测点时,观察到的事物的相对位置会发生变化。这种视觉现象称为视差。可能我们平时游戏开发叫透视。...到这里的话我们可以想象一下这个方案的极致运用,是不是只要有足够精度和数量的法线贴图,高度贴图就能创建出非常完美的真实场景?当然是在完美处理的光影的情况下。...如果算法合理,极致情况下,我们可以全部用一个平面来表示,然后根据需要来生成模型和顶点。 这是OpenGL ES的新的渲染管线。在顶点程序之前,还有一个Tessellation的过程。 ?...有个毛用? 额,严格来说这是个招式,为后面的拳法做起手准备。在极致情况下,我们可以用高模的法线贴图、视差贴图、摄像机的相关参数或者其他因素来控制三角面的生成。...一般来说把视差贴图按照法线方向移动就没什么问题了。 ?

    9.3K52

    Materials(材质)

    image Diffuse map(颜色贴图,漫反射贴图) 给几何体一个基本的颜色纹理,不考虑灯光和特效 image Normal map(法线贴图) 在上篇文章的灯光里讲过,灯光是使用形状表面的法向量来决定照亮哪个面的...反射贴图和前面两个贴法不同,不是直接拉伸包裹在几何体上面的,而是用cube mapping(立方体贴图)来完成的.想像一个立方体,六个面的纹理并排水平放置,就形成了立方体贴图 image image Xcode8...),只有当场景中有ambient light环境光时才有作用,精确定义了每个像素在环境光作用下的被照亮程度.也就是让几何体的黑色部分不被环境光照亮而变浅 image image Specular map...(镜面贴图,高光贴图) 镜面贴图决定了几何体的镜面程度,黑色部分就是不光滑,白色就是光滑反光.会影响Normal map(法线贴图)外部光线照射反光和Reflective map(反射贴图)外部天空盒子图像反光的清晰程度...image image Emission map(发光贴图) 在没有光线时,如果物体表面有荧光涂料,就会发光.发光贴图可以用来模拟这种物体.彩色贴图中,黑色不发光,亮色发光强,暗色发光弱 image

    1.2K20
    领券