Questions tagged «pbr»

2
如何正确组合漫反射和镜面反射项?
据我了解,在BRDF中,菲涅耳术语告诉我们光子撞击表面时被反射或折射的可能性。 反射光子将有助于镜面项,而折射光子将有助于散射项。因此,当以基于物理的方式确定光对材料颜色的贡献时,我很想写: // Assuming for example: // diffuse = dot(L, N); // specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0; // fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0); color = lightIntensity * Lerp(diffuse * albedo, specular, fresnel); 但是,我认为我从未见过这样写过。我已经看到镜面反射项是根据菲涅耳项进行加权的,而不是弥散项。塞巴斯蒂安·拉加德 SébastienLagarde)在其关于PBR的大量引用文章中甚至指出,使用加权扩散项是不正确的。(1 − F)(1个-F)(1 …

1
与PBR实施混淆
我发现了数学的奇妙世界,并且用PBR和命名来碰壁,所以我有几个问题:据我了解,BRDF描述了材料对光(入射的直接光和反射)的反应。但是在“ Cook-Torrance”中,我看不到任何有关反射的信息,我不了解如何对其进行整合,因此只能得到漫反射的光和反射。 我已经读过很多有关“ Oren-Nayar”等不同“扩散术语”的文章,它是否像DFG提名人中的其他“ D”一样,是Cook-Torrance的一部分?不用镜面计算就可以代替它吗? 我从搅拌机艺术家的背景中读到了很多有关“ GGX”的东西,我认为这是一种模糊的反映,但似乎我错了,现在我在许多不同的情况下(例如在微刻面正常情况下)都发现了这个GGX术语本教程中的分发 简而言之,问题是:“ Oren-Nayar”,“ GGX”和“ Cook-Torrance”如何相互关联(如果存在),以及如何在这些算法中集成“ vec3反射”? 正如我在成为数学新手之前所说的那样,因此如果您的回答“算是数学上的麻烦”,请为您的方程式写一个glsl / hlsl版本,这对我来说更容易理解,因此等效性对我有很大帮助 PS:我知道我的问题很模糊,但也跟我对这个问题的理解一样模糊。
14 glsl  pbr 

1
将光泽度转换为粗糙度,反之亦然的公认方法是什么?
大多数现代渲染器使用基于物理的材料,其模型通常会根据粗糙度进行参数化。由于渲染器并非总是如此,因此常规资产通常没有粗糙感。相反,我们将“光泽度”或“镜面反射力”视为常见的材料参数。 我知道两者之间没有精确的转换,但是对于已知镜面反射能力或光泽度的材料,是否有经验法则/近似方法获得粗糙度?
12 specular  brdf  pbr 

2
在基于物理的BRDF中,应使用哪个矢量来计算菲涅耳系数?
众所周知的菲涅耳系数的Schlick近似公式为: F= F0+ (1 − F0)(1 − c o s (θ ))5F=F0+(1−F0)(1−cos(θ))5F=F_0+(1 - F_0)(1 - cos(\theta))^5 并且等于表面法线向量和视图向量的点积。c o s (θ )cos(θ)cos(\theta) 现在还不清楚我但如果我们应该用实际的表面法线或半矢量^ h。在基于物理的BRDF中应使用哪个?为什么?ñNNHHH 而且,据我所知,菲涅耳系数给出了给定射线被反射或折射的概率。因此,我很难理解为什么我们仍然可以在BRDF中使用该公式,该公式应该近似于整个半球的积分。 这种观察倾向于使我认为这将是,但是对我而言,并不明显的是代表性法线的菲涅耳等于将所有实际法线的菲涅耳积分。HHH
11 brdf  pbr  integral  fresnel 

1
以辐射度单位还是光度单位渲染?
在传统渲染中,通常使用辐射度单位进行所有计算,无论是作为全光谱渲染还是按分量计算(XYZ,RGB等)。 但是,由于现代渲染添加了更多基于物理的模型,因此艺术家可以方便地以更熟悉的光度单位指定值,例如以流明表示的光强度。 为了将管道全部保留在一种类型的单元中,可以执行以下操作之一: 使用发光效率将光度单位转换为辐射度单位 将整个渲染管线保持为光度单位 塞巴斯蒂安·拉加德(SébastianLagarde)在他的Siggraph 2014演讲“ 将冻伤转移到PBR”的课程笔记中很好地表达了这一想法。 我的问题是: 仅以光度单位进行渲染有任何不利之处吗? 据我所知,光度单位只是偏向人眼的辐射度单位。考虑到我们将用肉眼观看最终图像,所以我认为这不是问题。 冻伤是RGB组件明智的引擎。通过仅以光度单位进行渲染,光谱渲染器是否还会有其他缺点?

3
作为(漫反射/反照率)纹理的16位半浮点线性HDR图像?
因此,我已经考虑了一段时间,并尝试通过google找到答案,但没有成功。 如果您所有的纹理都是8位LDR图像(如JPEG),则在渲染时不可能与曝光控制/色调映射产生冲突。就是说,如果您调整图像的渲染曝光度,则应该在纹理中不存在的细节上进行曝光,因为低动态范围限制了这些细节。因此,在具有16位半浮点数的线性色彩空间中将纹理作为HDR图像并另存为.exr,以获得良好的颜色表示(32位“全”浮点数可能会过大吗?),这是否有意义?我认为,要获得更详细和正确的颜色值,可能还会对GI产生影响,并且如何计算颜色渗色? 还是根本没有必要,因为我们想要的渲染的最终结果可能会与以任何方式拍摄的纹理的曝光水平相似?而且由于相机通常以12-14bit的速度拍摄,因此您必须对纹理进行多次曝光,并做所有额外的工作才能将它们全部组合成一个HDRI。 编辑: 为澄清起见,我最感兴趣的是从照片逼真的渲染角度来看,使用光线跟踪渲染器(例如mental ray,V-Ray,Arnold等)进行全光模拟和全局照明,而不是实时游戏引擎。

1
GGX几何术语的正确形式
我正在尝试在raytracer中实现微面BRDF,但是遇到了一些问题。我读过的许多论文和文章都将局部几何术语定义为视图和半矢量的函数:G1(v,h)。但是,实现此目标时,我得到以下结果: (最下面一行是粗糙度为1.0-0.0的电介质,最上面一行是粗糙度为1.0-0.0的金属电介质) 边缘周围有一个怪异的高光,nl == 0附近有一个截止。我使用Unity作为参考来检查我的渲染,因此我检查了它们的着色器源,以查看它们的用途,并从中可以看出它们的几何项根本没有被半向量参数化!因此,我尝试了相同的代码,但使用了宏观表面法线而不是半向量,并得到以下结果: 在我未经训练的眼睛看来,这似乎更接近预期的结果。但是我有感觉这是不正确的?我阅读的大多数文章都使用半向量,但不是全部。是否有这种差异的原因? 我将以下代码用作几何术语: float RayTracer::GeometryGGX(const Vector3& v, const Vector3& l, const Vector3& n, const Vector3& h, float a) { return G1GGX(v, h, a) * G1GGX(l, h, a); } float RayTracer::G1GGX(const Vector3& v, const Vector3& h, float a) { float NoV = Util::Clamp01(cml::dot(v, h)); float a2 = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.