问题标签 [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 投票
1 回答
525 浏览

python - 将 novaclient 库导入 python 时出错

我正在将 novalient API 库导入 python 2.7.3,如下所示

当我尝试这个时,它给了我以下错误

如何解决这个问题?这是与版本相关的问题吗?

0 投票
1 回答
665 浏览

c++ - 基于物理的渲染结果看起来不正确

我一直在尝试使用以下资源来实现基于物理的渲染。它描述了可以用来实现基于物理的着色的方程式。这是我的着色器代码:

结果如下:图片

如您所见,中间有一条奇怪的白色带。灯光位置在球体上方,相机在球体前面。粗糙度变量当前设置为 0.2。我不知道我是否错误地执行了方程式,或者我传入的参数应该是什么样子。

0 投票
1 回答
541 浏览

rendering - 什么是“基于物理的”照明/渲染/材质?

基于物理的照明、基于物理的渲染和基于物理的材质之间有什么区别?它们与延迟渲染和前向渲染有何不同?电影中使用基于物理的渲染,游戏中使用延迟渲染?

0 投票
3 回答
6741 浏览

three.js - 三.js pbr解决方案

我知道 toolbag 和 playcanvas 最能支持 PBR(基于物理的渲染)。three.js 中有什么 pbr 解决方案?

请提供一些链接或示例。

工具包 pbr

游戏画布 pbr

0 投票
1 回答
261 浏览

opengl - PBR反射阶段行为

我已经在我的延迟渲染引擎中实现了使用 OpenGL 渲染的 PBR。问题是随着粗糙度的增加,我的物体上有奇怪的迹象。

您可以在这些图像上看到这一点:

在此处输入图像描述 在此处输入图像描述

我发现问题出在过滤上。使用 LINEAR_MIPMAP_LINEAR 可以得到上面显示的结果,但是当我使用 NEAREST_MIPMAP_LINEAR 时,奇怪的接缝不存在,但是当表面更粗糙时,您可以看到纹理的像素(如下图所示)。

在此处输入图像描述

0 投票
1 回答
2477 浏览

unity3d - 如何在 Unity 中从零开始创建 PBR 金属材质?

我不熟悉基于物理的着色/渲染,所以需要一些技巧..

尝试在 Unity3D 中为炮管制作简单的金属材料(见下图#1,该网格只是默认的统一圆柱体图元) Unity PBR大炮,不是 下面是一些很好的例子(涂漆金属,或者只是一些脏金属,不需要那些磨损的边缘)

我看过很多 PBR 参考颜色图表,但没有得到类似的结果.. http://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/

0 投票
1 回答
675 浏览

unity3d - 虚幻引擎 4、Unity 5 和 three.js 中基于物理的着色器实现是否存在差异

Unreal Engine 4、Unity 5 和 Three.js 实现中基于物理的着色器实现之间是否存在差异?

如果是,它们是什么以及它们在视觉外观方面有何不同?

0 投票
2 回答
134 浏览

graphics - PBR Frensel effect

I'm read Real-Time Rendering and the Radiometry section was too hard for me to understand, so I googled PBR and found this article.

Can someone explain the next sentence?

The second observation about Fresnel properties is that the curve or gradient between the angles does not vary much from material to material. Metals are the most divergent, but they too can be accounted for analytically.

Secondly, I'm really new to PBR. Can you recommend other good articles about this subject, with a focus on coding?

0 投票
1 回答
1545 浏览

opengl - 如何在 PBR 中实现金属工作流程?

Cook-Torrance BRDF 和 Lambert BRDF 上有很多材料。Unreal Engine 4 中的 Real ShadingMoving Frostbite to BPR深入解释了如何实现它们以进行实时渲染。

他们忽略了两个 BRDF 的组合来创建完整的着色模型。如果我理解正确,我们至少可以使用两个基本原则来做到这一点:镜面反射和金属度工作流程。是它们的比较。

我决定实施金属性工作流程。所以我有以下参数来计算:

  • 反照率 (RGB)
  • 粗糙度(浮动)
  • 金属度(浮动)

对于镜面反射部分,我需要确定我的镜面反射颜色。

Mamoset指出

使用金属度贴图时,绝缘表面 - 在金属度贴图中设置为 0.0(黑色)的像素 - 被分配一个固定的反射率值(线性:0.04 sRGB:0.22)并使用反照率贴图作为漫反射值。对于金属表面——在金属度贴图中设置为 1.0(白色)的像素——镜面反射颜色和强度取自反照率贴图,并且在着色器中将漫反射值设置为 0(黑色)。

因此,镜面反射颜色应通过以下方式计算:

随后,这可用于计算反射辐射率。为了限制我的问题的范围,我将在此处参考Brian Karis的实现,如下所示:

对于漫反射部分,我需要确定反照率。

上面的同一引文描述了它的工作原理:

现在,Lambert BRDF 可用于计算来自一些入射辐照度 E 的漫反射光照:

为了获得最终的辐射,将漫反射和镜面反射部分结合起来:

我的问题是如何计算kdks

  1. Codinglabs建议在半球上整合菲涅尔函数来计算ks.

kd之后通过以下方式计算:

例如,当将它与虚幻引擎进行比较时,我在非金属上得到的结果并不是我所期望的。在法向入射时,反射比预期的要低得多,这应该是由于在非金属情况下设置的低 F0。但我检查了进一步的来源,0.04 似乎是常用的值。

有人可以确认Codinglabs的建议计算吗?甚至提供 Epic 使用的代码?

0 投票
1 回答
2919 浏览

opengl - 如何计算 PBR 中的镜面反射贡献?

我正在尝试在我们的项目中实现基于物理的渲染 (PBR)(我们为学术和学习目的启动了一个小型游戏引擎),但我无法理解基于材料的金属和粗糙度计算镜面反射和漫反射贡献的正确方法是什么.

我们不使用任何第三方库/引擎进行渲染,一切都是用 OpenGL 3.3 手写的。

现在我有这个(我将把完整的代码放在下面):

但我的印象是镜面反射术语必须以某种方式依赖于粗糙度。我正在考虑将其更改为:

但同样,我不确定。正确的方法是什么?有没有正确的方法,或者我应该只使用“反复试验”的方法,直到得到满意的结果?

这是完整的 GLSL 代码: