问题标签 [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.
python - 将 novaclient 库导入 python 时出错
我正在将 novalient API 库导入 python 2.7.3,如下所示
当我尝试这个时,它给了我以下错误
如何解决这个问题?这是与版本相关的问题吗?
c++ - 基于物理的渲染结果看起来不正确
我一直在尝试使用以下资源来实现基于物理的渲染。它描述了可以用来实现基于物理的着色的方程式。这是我的着色器代码:
结果如下:
如您所见,中间有一条奇怪的白色带。灯光位置在球体上方,相机在球体前面。粗糙度变量当前设置为 0.2。我不知道我是否错误地执行了方程式,或者我传入的参数应该是什么样子。
rendering - 什么是“基于物理的”照明/渲染/材质?
基于物理的照明、基于物理的渲染和基于物理的材质之间有什么区别?它们与延迟渲染和前向渲染有何不同?电影中使用基于物理的渲染,游戏中使用延迟渲染?
unity3d - 如何在 Unity 中从零开始创建 PBR 金属材质?
我不熟悉基于物理的着色/渲染,所以需要一些技巧..
尝试在 Unity3D 中为炮管制作简单的金属材料(见下图#1,该网格只是默认的统一圆柱体图元) 下面是一些很好的例子(涂漆金属,或者只是一些脏金属,不需要那些磨损的边缘)
- http://plyczkowski.deviantart.com/art/PBR-Smart-Material-Painted-Metal-499427545
- http://static.wixstatic.com/media/a65e38_f250817ee6494a05a8e98f4be4cbc955.png_srz_p_1200_675_75_22_0.50_1.20_0.00_png_srz
我看过很多 PBR 参考颜色图表,但没有得到类似的结果.. http://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/
unity3d - 虚幻引擎 4、Unity 5 和 three.js 中基于物理的着色器实现是否存在差异
Unreal Engine 4、Unity 5 和 Three.js 实现中基于物理的着色器实现之间是否存在差异?
如果是,它们是什么以及它们在视觉外观方面有何不同?
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?
opengl - 如何在 PBR 中实现金属工作流程?
Cook-Torrance BRDF 和 Lambert BRDF 上有很多材料。Unreal Engine 4 中的 Real Shading和Moving Frostbite to BPR深入解释了如何实现它们以进行实时渲染。
他们忽略了两个 BRDF 的组合来创建完整的着色模型。如果我理解正确,我们至少可以使用两个基本原则来做到这一点:镜面反射和金属度工作流程。这是它们的比较。
我决定实施金属性工作流程。所以我有以下参数来计算:
- 反照率 (RGB)
- 粗糙度(浮动)
- 金属度(浮动)
对于镜面反射部分,我需要确定我的镜面反射颜色。
Mamoset指出
使用金属度贴图时,绝缘表面 - 在金属度贴图中设置为 0.0(黑色)的像素 - 被分配一个固定的反射率值(线性:0.04 sRGB:0.22)并使用反照率贴图作为漫反射值。对于金属表面——在金属度贴图中设置为 1.0(白色)的像素——镜面反射颜色和强度取自反照率贴图,并且在着色器中将漫反射值设置为 0(黑色)。
因此,镜面反射颜色应通过以下方式计算:
随后,这可用于计算反射辐射率。为了限制我的问题的范围,我将在此处参考Brian Karis的实现,如下所示:
对于漫反射部分,我需要确定反照率。
上面的同一引文描述了它的工作原理:
现在,Lambert BRDF 可用于计算来自一些入射辐照度 E 的漫反射光照:
为了获得最终的辐射,将漫反射和镜面反射部分结合起来:
我的问题是如何计算kd
和ks
?
- Codinglabs建议在半球上整合菲涅尔函数来计算
ks
.
kd
之后通过以下方式计算:
例如,当将它与虚幻引擎进行比较时,我在非金属上得到的结果并不是我所期望的。在法向入射时,反射比预期的要低得多,这应该是由于在非金属情况下设置的低 F0。但我检查了进一步的来源,0.04 似乎是常用的值。
有人可以确认Codinglabs的建议计算吗?甚至提供 Epic 使用的代码?
opengl - 如何计算 PBR 中的镜面反射贡献?
我正在尝试在我们的项目中实现基于物理的渲染 (PBR)(我们为学术和学习目的启动了一个小型游戏引擎),但我无法理解基于材料的金属和粗糙度计算镜面反射和漫反射贡献的正确方法是什么.
我们不使用任何第三方库/引擎进行渲染,一切都是用 OpenGL 3.3 手写的。
现在我有这个(我将把完整的代码放在下面):
但我的印象是镜面反射术语必须以某种方式依赖于粗糙度。我正在考虑将其更改为:
但同样,我不确定。正确的方法是什么?有没有正确的方法,或者我应该只使用“反复试验”的方法,直到得到满意的结果?
这是完整的 GLSL 代码: