问题标签 [pbr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
921 浏览

unity3d - Unity 3d PBR着色器图:用颜色替换透明度

我正在使用 Unity 2018.3.5f1 和 Shader Graph 4.9.0 和 Lightweight RP 4.9.0。我想创建将用颜色替换纹理的透明部分的着色器。

这就是我的着色器图的样子透明度替换着色器,问题是我收到了奇怪的行为 - 我在模型上出现了一些黑点,模型上有黑点将“替换颜色”节点中的“范围”属性更改为 0 将创建更多粗糙的边缘和更多的黑点,改变它朝向 1 使纹理慢慢消失。基本上我想重新创建这个着色器(我在 Blender 中制作并且使用屏幕截图所示的相同纹理完美地工作) 但是 Unity 的着色器图中没有混合节点。搅拌机中的透明度着色器 Blender中没有黑点

0 投票
1 回答
623 浏览

three.js - ThreeJS GLTFExporter 不导出 PBR 材质贴图

我有一个带有 PBR 材质的简单立方体。使用的贴图是颜色、金属度、粗糙度、凹凸。当我通过此代码导出场景时,导出的 glb 缺少除颜色之外的所有地图。这是 ThreeJS 中的错误吗?

0 投票
0 回答
116 浏览

three.js - 在 three.js 渲染器中应用光照贴图后,PBR 材质反射率降低

我是一名 3d 艺术家,致力于基于 three.js 和 Gltf 的 3d 建筑配置器。配置器使用光照贴图。在将光照贴图应用于模型后,PBR 材料的反射率全局下降时,我遇到了一个问题。

这是在左侧应用光照贴图和在右侧应用光照贴图之前的模型截图。

使用和不使用光照贴图进行渲染

我想知道是否有可能在光照贴图和没有光照贴图的情况下具有相同的反射率,如果可以,在哪里挖掘。

谢谢!

0 投票
0 回答
1334 浏览

opengl - PBR 纹理和 Phong Shading 模型材质参数

我正在研究 Phong 着色模型,看起来材料具有以下属性:

  • 环境、漫反射和镜面反射系数(显示它们如何对光的这些属性作出反应)
  • 镜面反射分量的光泽度

现在,假设我想编写一个没有固定值的着色器,而是从 PBR 纹理中获取它们,我可以在 3D Studio Max 或 Maya 等 3D 图形软件中生成它们。这样的纹理集通常由以下组成:

  • 颜色/反照率/漫反射贴图(我猜它会取代“漫反射”系数)
  • 环境遮挡(我认为它将取代“环境”系数)
  • 高度图(不知道着色器将如何使用它)
  • 法线贴图(简单,它取代了该点的法线)
  • 金属/镜面反射(我认为这些替换了“镜面反射”系数,不确定哪个工作流程最适合 phong 模型)
  • 粗糙度贴图(也许它取代了“光泽度”?不确定)

我在这里没有正确理解什么?我可以首先做到这一点吗?我在 Wikipedia 上读到环境遮挡不是像 Phong Shading 这样的本地方法,这可能只是意味着必须使用某种全局方法计算地图(对我来说没有问题,因为我在 3D 软件中生成它),但这让我怀疑如果 Phong 模型实际上适合我正在尝试做的事情。

0 投票
1 回答
523 浏览

blender - 就新材料/BSDF 而言,开放着色语言 (OSL) 到底有哪些限制?

我正在研究 BRDF 描述和实现技术,而 OSL 是这样做的主要语言之一。我很好奇使用 OSL 实现新 BRDF 的方式,或者是否可以在不弄乱源代码的情况下这样做。

OSL 文档提供了一组任何渲染器都应该使用的材料。例如,Blender 提供了一组可在 OSL 中使用的扩展的已实现材质(这些材质实际上已作为 Cycles 中的节点提供)。我对创建新材料 (BRDF) 很感兴趣。根据这个线程,OSL 不应该像这样使用,而是用户应该利用已经可用的材料闭包(BSDF)来创建新材料。该线程中的 OP 试图实现 BRDF 但无法取得进展,因为他找不到获得所需某些向量的方法。

最后,我的问题是:为了创建用于 OSL 的新材料(BRDF),是否有必要先在 C++ 中实现它们并重新编译 OSL,才能最终使它们可用?我无法找到这个问题的明确答案。

0 投票
1 回答
125 浏览

opengl - 解决预过滤卷积中的亮点时的错误结果

learnopengl高光IBL教程中,解决预滤波卷积中的亮点,教程参考这篇文章和预滤波计算如下:

这是我的代码:

当我只在我的球体上显示预过滤器颜色时,它看起来像这样: 在此处输入图像描述 如果我使用它会变得不那么绿色,const uint SAMPLE_COUNT = 4096u;并且在使用时没有带亮点的绿色我prefilterColor += textureLod(environmentMap, L, 0.0).rgb; 应该在这个代码中提醒哪里得到既没有绿色也没有亮点的结果?

0 投票
1 回答
106 浏览

cocoa-touch - ARKit 人脸追踪 PBR

我正在使用 ARKit 面部跟踪配置并实时显示面部网格,我可以成功为其添加漫反射和法线贴图,并且它们显示正确,但是粗糙度或金属度没有运气,粗糙度没有效果,金属度渲染全黑和沉闷/不透明,我尝试过的事情:

  • self.contentNode?.geometry?.firstMaterial?.roughness.contents = UIColor.black //UIColor.white
  • self.contentNode?.geometry?.firstMaterial?.metalness.contents = UIColor.black //UIColor.white
  • self.contentNode?.geometry?.firstMaterial?.roughness.contents = myMetallnessTextureImage
  • self.contentNode?.geometry?.firstMaterial?.metalness.contents = myRoughnessTextureImage

值得注意的是,大部分光照管理是由会话完成的,这就是为什么网格在使用它时会响应环境光和直射光,而当只有环境光时,网格看起来是介电/粗糙的,而当有很强的定向光,看起来金属/光滑,是会话控制了这些参数吗?

如果我将面网格导出为.obj,在 Xcode 上打开它时,我可以调整材质属性,并且可以获得完全金属光泽的面,但是当实时将相同的参数应用于我的网格时,它们不起作用。

最后,我想要的是能够通过使用灰度图使脸部的某些部分变成金属色。

另外我知道面部跟踪配置不允许环境贴图(如果错误,请纠正我),因此完全镜像的纹理看起来非常不现实,但无论如何,它应该可以工作。

谢谢!

0 投票
1 回答
116 浏览

c - cmake灯丝渲染项目时出错

我试图 Cmake 谷歌灯丝项目(https://github.com/google/filament)。但是我遇到了下面的错误显示。

在此处输入图像描述

我已按照 Windows 构建部分中提到的步骤进行操作,但仍然出现错误。有没有其他方法来构建这个项目?

0 投票
0 回答
60 浏览

c++ - 来自朗伯曲面的反采样

Physically Based Rendering一书中,朗伯曲面通过以下方式进行采样(参见http://www.pbr-book.org/3ed-2018/Light_Transport_I_Surface_Reflection/Sampling_Reflection_Functions.html#):

我现在想要做的是,给定wowi,计算u使得调用Sample_f(wo, &wi_other, u)产量wi_other == wi(至少近似)。

虽然基本上解决这个问题并不难,但我的解决方案是浮点不精确。如果您熟悉光线追踪:如果遵循精确计算的方向的光线wi撞击表面点p,则可能会证明近似计算的方向wi_other与所在的整个表面非常接近p

到目前为止,这是我的解决方案:

我们能以某种方式减少解决方案的错误吗?

0 投票
1 回答
402 浏览

shader - Direct3D11 / PBR 着色器 - 场景太暗 - 有 BRDF(白肋烟/迪士尼)着色器的经验吗?

我成功地潜入了 DirectX/3D11 (SharpDX/C#),我将一切变为现实,最后,我想实现 PBR。我非常想要像 Disney / Burley 这样的唯一 BRDF,幸运的是,我在 Shader 文件夹中找到了 Microsoft Shipped PBREffect.fx,这是一个完全符合我目标的 HLSL 着色器。

最后,我所有的常量缓冲区都在传递,PBR 本身工作正常 - 但在更大的场景中,我成功应用的唯一灯光非常小,如镜面反射点,其他一切都保持黑暗。例如,在太阳能电池板纹理上,如果没有空间光晕,ALBEDO 根本不可见。粗糙度、AO、法线一直都在应用,因为我有可见的环境光遮蔽灯白线,这是来自其他贴图。

我处于某种不可能的境地。我无法实现其他 Light 解决方案,因为这会变砖或覆盖整个 PBR。通过所有功能实现不同的实现。

是否有人对这个着色器有一些经验和想法,如何获得“世界之光”,我在 Bis 场景中的所有对象上都有一个基本亮度。像 1000.0f 和更高的渲染空间。

斯蒂芬。

附上3张截图。

[地图/PBR 完美应用,但仅在聚光灯下] https://i.stack.imgur.com/JeUH3.jpg [黄铜 PBR 材料 - 仅在现场点亮] https://i.stack.imgur .com/KZNK7.png [image1] https://i.stack.imgur.com/Unmvm.jpg