问题标签 [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 回答
84 浏览

java - LWJGL2 着色器中的 Lambert 光照模型?- 移植代码

我目前正在尝试使用 LWJGL2 尝试基于物理的渲染技术,并通过我在这里找到的教程的帮助,我决定研究朗伯着色或教程的照明部分。虽然我已经使用 GLSL 完成了其他教程并完成了类似的工作,但我正在努力让一个简单的 Lambert 着色器代码工作。我不确定这个教程有多老,因为它没有说。

从 GLSL 130+ 开始,使用 in 和 out 代替属性和变量。GLSL 330+ 包括其他功能,例如布局限定符并将 texture2D 更改为纹理。

上面的教程使用属性和经常变化,但使用#version 330?。无论如何,这应该是一个简单的顶点和片段着色器,使用版本#330 来创建 Lambert。我想将教程中的代码移植到 LWJGL2 中使用,但我不确定如何使它工作。我希望有人足够慷慨,帮助他们度过这个艰难的时期。

我基于 Thinmatrix 教程的简单顶点着色器更改为使用 330 版:

我的片段着色器:

教程中的顶点着色器:

教程中的片段着色器:

许多这些功能不能与 LWJGL2 一起使用。

我注意到该功能已被弃用。

两年后我试图遵循有关 GLSL 的教程,但有些事情我还不明白。如果有人能就这些事情对我进行教育,将不胜感激。

0 投票
0 回答
1454 浏览

java - 如何实现 PBR 着色器 - LWJGL?

我一直在关注 Thinmatrix 教程来练习 GLSL 和矢量数学,现在我正在尝试实现一个 PBR 着色器,我从这里 (learnOpenGL)借来。我首先确保模型不会渲染。我的旧兰伯特着色器工作正常,但实现着色器一直很棘手。否则我将不得不将 c++ 代码逐块移植到 java,虽然我想尝试一段时间,但我想在我现有的引擎中实现一个 PBR 着色器。我相信我已经启动了这些属性:

但不确定我应该如何添加制服,此时我正在黑暗中尝试一下。我注意到着色器有一个 mat4 统一视图、mat4 统一 camPos 和 mat4 统一模型,我没有在 LWJGL 中绑定(请原谅​​我的术语不好)。目前我的制服是:

来自 learnOpengl 的顶点着色器:

来自learnopengl的片段着色器:

我注意到它们是我没有在 lwjgl 中绑定的制服,有些我不确定如何启动或为什么需要这样做(统一 mat4 模型)。我想我可以离开 Thinmatrix 教程中的制服,并假设它不会处理。如果我错了,请纠正我。

对制作此过程的任何见解将不胜感激。我一直在观看有关 PBR 的讲座和基于着色玩具的视频。

这是我基于thinmatrix教程的代码: 这里

更新:这很接近,但现在我正在尝试纹理,反照率看起来很暗,而其他的则无法区分。我也不知道我应该用 camPos 制服做什么,或者它是否有必要。

在此处输入图像描述

最新源代码:这里

更新:

所以反照率似乎有效,但 ao、粗糙度和金属似乎不想绑定。而且它非常黑暗。

在应该帮助绑定纹理的渲染器类中。

在此处输入图像描述

更新:

在此处输入图像描述

目前我已经让纹理工作了。我觉得我现在可以弄清楚其余的了。我唯一的问题是:这个巨大的纹理接缝是怎么回事?是因为我使用的纹理贴图不是无缝的吗?我假设如果我将正常的、ao 的、粗糙的和金属的无缝连接起来,它就会消失。反照率似乎已经无缝,或者可能不是。我有点挑剔,但只是好奇这是否有助于让它看起来更好。

在此处输入图像描述

0 投票
0 回答
194 浏览

opengl - 如何修复 OpenGL PBR 中的浮点错误

完成 PBR 实施后,我注意到当我靠近反射表面时,会出现我认为是浮点错误的伪影。我真的不希望使用双打,因为我的 GPU 倾向于以性能沉重的方式处理双打 远的

更接近

真的很近

这是我的 PBR IBL 代码(所有环境贴图以及延迟缓冲区都是正确的):

0 投票
0 回答
148 浏览

ios - 使用 PBR iOS 将材质混合到 SceneKit 中的另一个材质

我已经为我的几何图形添加了一种材质SCNNode,现在我想向它添加另一种材质并将其设置为混合模式“乘法”。

我尝试了很多,但无法找到一种方法来做到这一点。如果我们将纹理混合为乘法,那么它适用于其他灯光设置,但不适用于 PBR。

对此有什么帮助吗?

在此处输入图像描述

谢谢

0 投票
0 回答
123 浏览

scenekit - SceneKit PBR - 倍增反照率

我需要在反照率/漫反射上乘以位图。我正在使用 PBR 着色。

例如:在皮肤(反照率/漫反射)上应用纹身(位图),并进行复制,这样您就可以看到纹身覆盖在皮肤上。

问题:这个纹身(位图)应该是第二个反照率/漫反射?还是设置为另一种材质?如果是,什么样的材料?

谢谢!

0 投票
1 回答
800 浏览

scenekit - 使 SceneKit 灯只投射阴影而不照亮场景

我在 ARKit 中使用基于物理的照明来照亮我的场景,但是,我还想添加阴影以使其更加逼真。我尝试添加定向光并将强度设置为尽可能低,但我仍然无法达到我想要的效果。我基本上想要一盏灯只投射阴影并且对场景中的照明没有影响。有什么办法可以达到这个效果吗?

0 投票
0 回答
243 浏览

scenekit - 旧设备和法线贴图伪像上的 USDZ 文件变黑

我一直在创建 USDZ 文件。我对旧设备有问题,基本上是比 iPhone X 更旧的任何设备,显示带有由法线贴图和其他问题导致的伪影的项目,该项目看起来完全是黑色的。

ios 12 和 12.1 测试版上的 iPhone X 和 iPad 运行良好,没有法线贴图: ios 12 和 12.1 测试版上的 iPhone X 和 iPad 运行良好:

iPhone 7 iOS 12 非测试版,没有法线贴图: iPhone 7 iOS 12 非测试版

当我使用法线贴图时,我在旧设备上遇到以下问题: 导致光泽问题的法线贴图

您可以在此处下载原始文件:https ://drive.google.com/drive/folders/13w4fFTr6EQSUyQeEryxQWp0FcPN-84Ci?usp=sharing

非常感谢任何帮助<3

0 投票
1 回答
595 浏览

rendering - SceneKit 中带有反射的透明玻璃

尊敬的 Scenekit 专家,

我正在尝试使用 PBR 获得类似于透明玻璃的材料。它应该是 99% 的透明,同时也非常反光。

这是我正在使用的示例:

问题是反射量似乎受以下因素影响transparency

  1. transparency = 0.01:场景环境贴图的反射几乎看不到了。
  2. transparency = 0.2:我得到了一些很好的反射,但不幸的是,现在我的整个对象都是可见的,即它看起来像一块有色玻璃(取决于我设置的颜色diffuse)。

我怎样才能使它清楚,即在仍然看到反射的同时透明?

0 投票
2 回答
1056 浏览

augmented-reality - 如何在 Sceneform 和 ARCore 中使用 PBR 材质作为图像贴图?

参考文章:自定义材质参考,我们可以传递Normal, Diffuse,Roughness和的值Metalness

我想在 Sceneform 和 ARCore 中使用自定义 PBR 材质作为图像贴图(不是值)。

示例地图:

在此处输入图像描述

0 投票
0 回答
559 浏览

unity3d - Unity 3D 标准 PBR 着色器,带有用于第二个重叠纹理的 UV2

我正在尝试修改标准/粗糙度着色器。我希望着色器有 4 个额外的纹理插槽,用于使用 UV02 通道运行的纹理。从 UV2 获取平铺 X / Y 和偏移 X / Y 的信息。

我已经从 Mobile/Diffuse 创建了这样的着色器,但是我无法在 Standard/Roughness 中复制它。 移动自定义漫反射着色器

有任何想法吗?我已经发布了 Unity 包中的原始着色器/粗糙度代码。