问题标签 [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.
c++ - 关于未解析的外部符号的 pbrt 问题
最近,我正在学习 pbrt(基于物理的渲染)。但是,我在 VS2019 中使用它有一个问题。我已经创建了 pbrt 系统(使用命令“git clone --recursive https://github.com/mmp/pbrt-v3/”),并将其包含在 VS 中。在我写了一个简单的测试代码之后:
VS2019 提供了许多未解决的外部符号错误,我没有在这里显示所有这些错误:
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 "int __cdecl Imf::globalThreadCount(void)" (?globalThreadCount@Imf@@YAHXZ) PBRT E:\PBRT\PBRT\libpbrt.lib(imageio.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 "public: __cdecl Imf::RgbaOutputFile::RgbaOutputFile(char const * const,class Imath::Box<class Imath::Vec2 > const &,class Imath::Box <class Imath::Vec2 > const &,enum Imf::RgbaChannels,float,class Imath::Vec2,float,enum Imf::LineOrder,enum Imf::Compression,int)" (??0RgbaOutputFile@Imf@@QEAA @QEBDAEBV?$Box@V?$Vec2@H@Imath@@@Imath@@1W4RgbaChannels@1@MV?$Vec2@M@3@MW4LineOrder@1@W4Compression@1@H@Z) PBRT E:\PBRT \PBRT\libpbrt.lib(imageio.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 "public: virtual __cdecl Imf::RgbaOutputFile::~RgbaOutputFile(void)" (??1RgbaOutputFile@Imf@@UEAA@XZ) PBRT E:\PBRT\PBRT\ libpbrt.lib(imageio.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 "public: void __cdecl Imf::RgbaOutputFile::setFrameBuffer(struct Imf::Rgba const *,unsigned __int64,unsigned __int64)" (?setFrameBuffer@RgbaOutputFile@Imf@@ QEAAXPEBURgba@2@_K1@Z) PBRT E:\PBRT\PBRT\libpbrt.lib(imageio.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 "public: class Imath::Box<class Imath::Vec2 > const & __cdecl Imf::RgbaInputFile::displayWindow(void)const " (?displayWindow@RgbaInputFile@Imf @@QEBAAEBV?$Box@V?$Vec2@H@Imath@@@Imath@@XZ) PBRT E:\PBRT\PBRT\libpbrt.lib(imageio.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 无法解析的外部符号 inflate PBRT E:\PBRT\PBRT\Ptex.lib(PtexReader.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK2001 unresolved external symbol inflateEnd PBRT E:\PBRT\PBRT\Ptex.lib(PtexReader.obj) 1
严重性代码 描述 项目文件行抑制状态错误 LNK1120 15 未解析的外部 PBRT E:\PBRT\x64\Release\PBRT.exe 1
pbrt 有什么问题?我想我在cmake时没有做错什么,我现在打算做什么?非常感谢您回答这个问题。
unity3d - 尝试在 PBR 着色器图中设置顶点法线时 Unity vs_4_0 指令错误
我正在尝试使用 Universal Render Pipeline 的 PBR Shader Graph 创建海洋 PBR 着色器,但是当我尝试在 master 中分配法线时,它会引发错误:
表达式断言失败:'0 == m_CurrentBufferBindMask[kUnityPerDraw]' UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)
和
无法将表达式映射到第 132 行的 vs_4_0 指令集(在 d3d11 上)
计算出的法线是使用变换节点上的方向模式变换到对象空间的全局法线。
这是我当前的着色器图:
“WaveNoise”节点是一个自定义子图着色器,它使用堆叠的正弦波和余弦波从位置输出波高。
这是 PBR 主节点的配置:
我正在使用两个主节点,但活动的一个是 PBR,我放置了一个 Unlit Master 来测试是否发生相同的错误,在我的测试中这没有发生。不知道有没有人也有这个问题。
aframe - Aframe 1.0.4 - 设置 scene.environment 不更新材质
所以我在这里看到了一个旧帖子:
这就是说...“如果将 env 贴图应用于 Scene.environment,它会自动用作场景中所有物理材质的环境贴图(假设未设置材质的 envmap)。”
因此,在场景中使用 Aframe 组件进行了尝试:
环境属性设置成功,但其他物体材质的envMap仍然设置为null,环境光照对材质没有影响。
有任何想法吗?
ios - SCNView 在模拟器中使用 iPhone 6 上的 OpenGL,
SceneKit 在模拟器 OpenGL 上用于 iPhone 6 中的 SCNView,这导致将闪电模型从 PBR 更改为 Phong
错误:OpenGL 渲染器不支持基于物理的光照模型,而是使用 Phong
有没有办法解决它?较新的 iPhone 在 PBR 中正确渲染 SceneKit 中的模型
ios - SCNParticleSystem 以错误的方式部分隐藏或遮挡
我对粒子系统有疑问,在极少数情况下,它可能会以错误的方式被遮挡。您在打印屏幕上看到的粒子系统是一个球体(具有不可见材料,材料透明度 = 0.0),从其表面发射粒子。就像每秒 250 个粒子 - 没有魔法 - 粒子系统按应有的 99% 工作。
您还会看到一个直径非常大的地板(即 SCNPlane),例如 100m x 100m。当相机飞过并且视角发生一点变化时会发生遮挡,因为相机移动平稳。根据相机角度,它可能会发生 - 正如您在第二张图像中看到的那样 - 粒子系统以错误的方式被部分遮挡,就像它会留在地平线后面 - 但它不会 - 它在地板上方 2m 处徘徊并且有半径1m。
有没有人遇到过类似的问题?有没有什么办法可以在所有情况下(从所有视角)正确渲染。
有时粒子系统甚至完全消失。i.Ex 当相机从上方 (20m) 直接观察粒子系统时。
(场景使用 SceneKit 使用基于物理的渲染 - 背景是一个简单的天空盒)
three.js - 在three.js中混合Phong和PBR材质
我有一个应用程序,其中包含使用 MeshPhongMaterials 渲染的网格。它们与 three.js 中可用的全套灯光配合得很好。
但是,我想将它们与导入的 GLB/GLTF 模型结合起来。为了点亮模型,我相信我必须使用如下环境贴图:
但是,环境贴图似乎导致 Phong 材质显示为饱和状态,并且我找不到合适的灯光组合。
人们总是可以将所有内容都转换为 PBR,但我错过了什么吗?Phong 和 PBR 能否在光线充足、外观自然的场景中共存?
opengl - 从 PBR 材质中生成适当的 alpha(透明度)值
我正在编写一个 PBR 着色器,并且正在尝试确定生成图像输出的 alpha 值的正确方法。目标是得到一个“预乘 alpha”的最终图像,以便稍后可以与另一个 Over 合成操作一起使用(例如,在另一个背景图像上合成它)。这一切都很好,除了透明表面上的镜面高光情况。
阅读本文: https ://google.github.io/filament/Filament.md.html#lighting/transparencyandtranslucencylighting
尤其是:
观察一个窗口,您会看到漫反射是透明的。另一方面,镜面反射率越亮,窗口看起来越不透明。这种效果可以在图 63 中看到:场景被适当地反射到玻璃表面,但太阳的镜面高光足够亮,看起来不透明。
它们还包括代码片段:
渲染玻璃时,金属级别将为 0,因此它根本不会从 baseColor 中提取,而只是使用镜面反射级别。这一切都是有道理的,这意味着即使在透明玻璃上仍然会出现镜面高光,根据上面的引用。我不想最后只乘以 alpha,因为我的 baseColor 纹理已经是预乘的 alpha 图像,例如包含贴花的东西。例如,假设我正在画一块玻璃,上面贴着字母“A”。
我的问题是:对于在玻璃的透明部分具有镜面高光的像素,alpha 值应该是多少才能在下游合成?根据上面的代码,alpha 将为 0,这将导致 Over 操作稍后表现不佳。我这样说是因为预乘 alpha 的一个属性是 max(R,G,B) <= A,但是这个镜面高光将具有 max(R,G,B) > A。这将导致过度操作高光和正在合成的背景之间的添加剂,吹出最终图像。我应该将 alpha 设置为 max(specular, alpha),以便为这些像素提供更有用的 alpha 值吗?有没有更“正确”的方法来处理这个问题?谢谢