问题标签 [lighting]

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 投票
1 回答
4888 浏览

opengl - 为什么我的 open gl 环境照明不起作用?

我的大部分照明都按照我想要的方式工作,但我似乎完全错过了任何环境照明。也就是说,事物远离太阳的一面是完全黑色的(我希望有 50% 的环境光),而朝向太阳的一面看起来像我预期的那样亮。

这是我的照明设置代码(从原始编辑,见下面的注释):

(注意:LIGHT1 暂时被注释掉了——我只是想让 LIGHT0 做我想做的事。)

不确定它是否重要,但我正在使用 glDrawArrays() 绘制单元对齐、纹理映射的单元立方体(a la MineCraft)。我所有的法线似乎都是正确的;如果我关闭照明,一切都会正确绘制(只是平光。)

有什么提示吗?

谢谢!

编辑(添加屏幕截图。)

这是问题的屏幕截图

编辑 根据评论,我将环境值提高到 2.0,现在它看起来像我期望的大约 50% 环境值。这看起来很奇怪——我认为光照值被固定在 [0, 1]...?关于环境光的什么基本概念我没有理解?

0 投票
1 回答
333 浏览

flash - 2d 平台游戏光源

为使用移动和固定光源的平台游戏制作原型,遇到一些棘手的问题,基本上只是在寻找某种解决方法或替代解决方案。

对于我的第一个想法,我只使用了 2 个蒙版,一个用于背景,一个用于敌人,背景看起来与我想要的完全一样,但不幸的是,随着光线靠近和远离敌人,你可以透过它看到背景,您可以在下面的文件中看到。

瑞士法郎:http ://efullick.com/light/light_test.swf

因此,我认为让敌人和背景始终不透明并仅遮盖其上方的黑色大黑暗层的一部分可能更有意义,然后就到了这一点;

瑞士法郎:http ://efullick.com/light/darkness_test.swf

所以我意识到,显然我必须反转面具,这样它就不会产生一个黑暗点,而是会有很多黑暗,里面有一个洞,以使这种方法有效,但我'我不太确定如何使用多个光源有效地做到这一点。

有任何想法吗?

0 投票
1 回答
1345 浏览

opengl - 为什么 GLSL 照明代码会随着相机移动光点?

我正在尝试制作一个自定义灯光着色器,并且随着时间的推移尝试了很多不同的东西。我发现一些解决方案效果更好,而另一些则更糟。对于这个问题,我正在使用迄今为止效果最好的解决方案。

我的问题是,如果我移动“相机”,灯光位置似乎也会移动。这个解决方案有非常轻微但明显的移动,灯光位置似乎在它应该在的位置之上。

默认的 OpenGL 光照(没有任何着色器)工作正常(稳定的光照位置),但我需要着色器进行多重纹理处理,并且我计划在它工作后使用它的一部分来实现光照效果。

顶点来源:

片段来源:

我究竟做错了什么?

0 投票
1 回答
2943 浏览

graphics - 带有 Blinn-Phong GLSL 着色器、点光源的奇怪结果

我已经制作了一个 GLSL 着色器,用于在场景中进行逐像素 blinn phong 照明,但我遇到了一些关于场景中光线投射的问题。每个灯光的效果似乎都有一个非常硬的边界(在随附的屏幕截图中,您可以在底部平面上看到灯光的边界 - 灯光(其世界位置相当于场景中悬挂的黑色球体)悬挂在上方飞机和法拉利模型,但由于某种原因,仅将光线适当地投射到/朝向/相机,而不是向前,远离相机。

我觉得我犯了一些错误/对眼睛方向如何影响 blinn phong 照明模型缺乏一些了解。我是否搞砸了我的计算,或者我根本不明白这个特定的照明模型应该如何工作?

我的着色器代码在这里: https ://gist.github.com/1040417

效果截图:场景中的灯光边界截止

0 投票
2 回答
2500 浏览

java - 房间内的光源意外动作

我已经编写了几个 Android 应用程序,但这是我第一次体验 3D 编程。

我创建了一个房间(4 个墙壁、天花板和地板),里面有几个物体,并且能够像走路一样在它周围移动相机。我已经用各种图像对所有表面进行了纹理处理,一切都按预期工作。

就上下文而言,房间宽 14 个单位,深 16 个单位(以原点为中心),高 3 个单位(1 个高于原点,2 个低于原点)。房间中间有两个物体,一个立方体和一个倒金字塔。

然后我去添加一个光源来遮蔽立方体和金字塔。我已经阅读并遵循了几个 NeHe 的端口,所以我将我在照明课程中所做的工作应用到我的新代码中。

结果是立方体和金字塔没有阴影。它们在与光线相对的侧面看起来与在面对光线的侧面看起来相同。当相机直接远离光源时,房间看起来就像我添加照明代码之前一样。当我旋转相机以面对光源时,整个房间(包括物体)变得更暗,直到相机直接面对光源时完全变黑。

这里发生了什么?我阅读了许多关于照明及其工作原理的文章,但我没有看到任何东西表明为什么它不会照亮房间的所有侧面,立方体和金字塔会根据光线的位置进行着色。是否有一些预期的灯光行为,因为它在房间“内部”?我只是因为我是新手而错过了一些简单的事情吗?

0 投票
1 回答
527 浏览

opengl - 每片段光照坐标系

我正在使用着色器开发 OpenGL 2.1 应用程序,但我的每片段照明存在问题。当我的场景初始加载时照明是正确的,但是当我在场景中导航时,照明会随着“相机”移动,而不是停留在静态位置。例如,如果我将灯光放在右侧,物体的右侧就会被照亮。如果我然后将相机移动到对象的另一侧并指向相反的方向,照明仍然在对象的右侧(而不是像现在那样在左侧)。我假设我在错误的坐标系中计算照明,这导致了错误的行为。我正在计算以下方式的照明......

在顶点着色器...

其中 vertexNormal 是对象/模型空间中的法线。

在片段着色器中...

例如,其中 LightPosition 是 (100.0, 10.0, 0.0),这会将灯光放在世界的右侧,如上所述。我不确定的部分是 gl_NormalMatrix 部分。我不确定这个矩阵是什么以及它将我的法线放入什么坐标空间(我假设是世界空间)。如果将法线放入世界空间,那么我认为问题在于 ECPosition 在眼睛空间中,而 LightPosition 和 WCNormal 在世界空间中。关于这件事的某些事情似乎不对,但我无法弄清楚。我还尝试将 ECPosition 放入世界空间,将它乘以我自己的 modelMatrix,该模型矩阵仅包含我为将坐标放入世界空间所做的转换,但这不起作用。如果我需要提供有关我的着色器或代码的其他信息,请告诉我。

0 投票
1 回答
1037 浏览

opengl - 实时地形照明

在 OpenGL 地形场景中提供实时照明的最佳方式是什么?每个四边形之间的细节层次将在放大时动态生成,因此预先计算的光源将不起作用。我想在这样的地形上模拟太阳。它不一定是最好的。它只需要看起来足够好。我不熟悉着色器。

0 投票
1 回答
896 浏览

three.js - 光照模型的计算如何在着色器程序中进行?

我正在尝试阅读本教程:

https://aerotwist.com/tutorials/an-introduction-to-shaders-part-2/

但我无法跟进。基本上,代码通过使用直接在 GPU 上运行的着色器来创建定向光。这是代码:

具体来说,我不明白的是这一行:

顶点和灯光的 vNormal 的点积如何创建定向光。任何人都可以用图表解释我。我无法得到它。这对我来说看起来有点神奇。我知道在这个顶点着色器中,每个顶点都作为输入传递,这被称为正常,因为它用“1”表示,然后在上面的片段着色器代码中使用共享变量。但除此之外,我不明白它是如何工作的。

PS:我本可以问博客作者,但据我所知,他有两周的假期。所以我想有一些物理或 3.js 经验的人可能会告诉我。

0 投票
1 回答
865 浏览

c++ - OpenGL透视和照明不起作用?

编辑:有些人说使用 glNormal3f() 来解决我的照明问题,但我刚刚研究并实施了它,它根本没有改变任何东西。

我是 OpenGL 的新手,所以我想我做错了什么,但我尽可能地遵循红皮书中的示例,但我无法弄清楚出了什么问题,所以我想我会尝试并问你们。

我有两个问题。一个是,即使我确定我正确使用了 glFrustum,它仍然会渲染正交场景,并且由于某种原因它会渲染相机前后的对象。另一个是,即使我很确定我在做这个照明是正确的(因为我按照书中的例子),它用统一的颜色照亮场景,没有阴影或任何东西。这是我的代码:

你能帮我找出问题所在吗?提前致谢。

0 投票
2 回答
420 浏览

lighting - 有人可以向我解释辐射照明吗?

我已经掌握了环境光遮蔽的基础知识。我有一个光线投射器,能够均匀地射出半球周围的光线。似乎这些是辐射度所需的基础知识,但我不知道从那里去哪里。我是否发现每张脸有多少光?(我正在用我的世界之类的立方体制作游戏)之后我该怎么办?