Questions tagged «shading»

4
反照率与扩散
每当我认为我理解两个术语之间的关系时,就会得到更多使我感到困惑的信息。我以为它们是同义词,但是现在我不确定。 “ diffuse”和“ albedo”有什么区别?它们是可互换的术语还是在实践中用来表示不同的事物?

3
基于物理的阴影-环境/间接照明
在研究了M. Pharr和G. Humphreys的PBRT之后,我实现了基于物理的路径跟踪器。现在,我正在尝试使用OpenGL ES(在iPhone应用程序中)将基于物理的渲染应用于实时图形。 我想开始将Oren-Nayar和Cook-Torrance用作漫反射和镜面BRDF,但是我有一个问题:如何为间接照明建模? 在路径跟踪器中(如pbrt中包含的那样),从路径跟踪算法“自动”提供间接/环境光,因为它遵循光线的路径,并考虑了直接和间接照明。 如何使用OpenGL ES编写的基于物理的渲染中的间接照明建模,以便使用实时计算机图形?

1
最新的实时头发渲染如何工作?
众所周知,头发模拟和渲染特别具有挑战性,实际上很少有人提出游戏中提出可信头发的示例。很难想象真正模拟大量的纤维并模拟这么多股纤维之间可能发生的各种散射事件是多么困难,更不用说每个纤维都是半透明的事实了。 有人可以规范化头发渲染的主要挑战是什么,尤其是对于实时场景而言?最新技术如何克服这些问题?是否使用了事实上的标准理论模型? 需要说明的是,对于实时而言,我不一定是指游戏环境。

2
屏幕空间环境光遮挡如何实现?
我不理解维基百科的解释。 对于屏幕上的每个像素,像素着色器都会对当前像素周围的深度值进行采样,并尝试从每个采样点计算遮挡量。 周围像素的深度值如何告诉您有关遮挡的信息?据我了解,遮挡发生在对象A站在另一个对象B的前面时,因此您看不到对象B。但是为什么现在要查看周围像素的深度像素呢?我的意思是您可以看到这些像素,所以没有遮挡。也许我理解遮挡是错误的。 我还不理解的是其他一些教程中的术语“内核”。什么是内核,为什么要在sao中使用它? 有人可以针对我的问题对算法进行详细说明吗?

3
倾斜时,朗伯反射镜是否被入射辐射的一小部分照亮?
在阅读有关Wikipedia的Lambertian反射率时,我发现以下短语(以粗体显示)对我来说听起来并不正确: 在计算机图形学中,朗伯反射通常用作漫反射的模型。此技术使所有封闭的多边形(例如3D网格中的三角形)在渲染时均能在所有方向上均等地反射光。实际上,围绕其法向矢量旋转的点不会改变其反射光的方式。但是,如果该点偏离其初始法向矢量,则该点将改变其反射光的方式,因为该区域被一小部分入射辐射照亮。 我描述段落中描述的情况的方式是,仅倾斜远离光源会导致较少的光入射到给定区域中。通常,远离初始法向矢量倾斜可能会导致每个区域的入射光增加或减少,因为这并没有说明光源的位置。 我是否误解了上下文,还是应该在Wikipedia上重写?
11 shading 

1
以编程方式生成顶点法线
我正在使用Kinect面部api,它为三角形提供了一组顶点和索引,这些三角形将被渲染以生成面部图像。 顶点的数目及其在数组中的顺序以及kinect给定的索引始终是恒定的。 但是,该API没有提供有关UV数据和顶点法线的信息。 该应用程序要求我保持kinect给出的顶点顺序,因为它们在3d空间中的位置会根据面部运动而变化,因此在3d编辑软件中生成uv和法线是毫无疑问的。 我设法通过将顶点位置投影到2D平面上来生成UV,因为同一平面上的顶点很少。 但是,我不知道如何为网格生成顶点法线,如果没有顶点法线,则脸部网格的绘制就不会产生任何深度的特征,尽管随着顶点位置的正确,轮廓是可见的。 我了解到,由于缺少顶点法线,因此照明无法在其上正常工作,因此,现在看起来很苍白的无特征网格。 那么当我只有顶点位置和顶点索引以生成三角形时,如何生成顶点法线呢?

1
尝试实施Microfacet BRDF,但我的结果图像错误
我正在尝试实现微面BRDF模型。我正在读塞巴斯蒂安·拉加德的幻灯片。我在代码中实现了公式,但是我认为结果图像是错误的。 黄色是材料的底色。镜面反射颜色为红色才能正确看到。 我的代码: // Fragment Shader #version 330 core in vec3 Position; in vec2 TexCoord0; in vec3 Normal; in vec3 Tangent; out vec4 FinalColor; uniform vec3 uCameraPosition; // init value: vec3(0, 0, 5) #define PI 3.1415926f #define EPSILON 10e-5f #define saturate(value) clamp(value, 0.0f, 1.0f); float BRDF_Lambert(float NdotL) { return NdotL; …
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.