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

opengl - 延迟渲染和移动点光源

我知道网上有几个关于同一个问题的线程,但我没有从这些线程中得​​到帮助,因为我的实现不同。

我正在将视图空间中的颜色、法线和深度渲染到纹理中。在第二个中,我将纹理与全屏四边形绑定并计算照明。定向光似乎工作正常,但点光源随着相机移动。

我分享相应的着色器代码:

光照步骤顶点着色器

光照步骤片段着色器

我将光属性作为制服发送到着色器:

viewmatrix 是相机矩阵,modelmatrix 在这里只是身份。

为什么点光源用相机而不是模型平移?

欢迎任何建议!

0 投票
2 回答
3490 浏览

opengl - 最简单光照模型中的光照方向及其变换

所以,我已经在我的 OpenGL 学习任务中获得了基本的光照。

想象一下这个最简单的光照模型。每个顶点都有一个位置、颜色和法线。着色器获取计算为(MV -1 ) T的 ModelViewProjection 矩阵 ( MVP )、Modelview 矩阵 ( MV ) 和法线矩阵 ( N ) ,以及作为制服的LightColorLightDirection。顶点着色器执行光照计算——片段着色器只输出插值的颜色。

现在,在我遇到的关于这个主题的每个教程中,我看到了两件让我困惑的事情。首先,LightDirection已经假设在眼睛坐标中。其次,输出颜色计算为

我希望LightDirection应该首先反转,也就是说,我认为正确的公式是

似乎假设LightDirection实际上是实际光流的向量的倒数。

Q1:这是某种既定惯例,即该模型中的LightDirection被假定为指向无限远光源的矢量,而不是光方向的矢量,或者这不是主要问题,只是碰巧在我遇到的教程是这么假设的?

Q2:如果LightDirection是世界坐标而不是眼睛坐标,应该用法线矩阵还是模型视图矩阵转换为眼睛坐标?

感谢您澄清这些事情!

0 投票
1 回答
303 浏览

objective-c - 不寻常的照明效果 - 随机多边形着色

我正在创建一个用于 iOS 的对象加载器,我已经设法从 OBJ 文件加载顶点、法线和面数据,然后将这些数据放入数组中以重建对象。但是我遇到了照明问题,底部是我的程序模拟的视频 - 这是在以下位置的照明:

这在每帧的渲染方法和设置视图方法中都指定,该方法在设置时调用一次。

这里有各种其他的照明细节,这些在设置过程中被调用一次:

该问题的视频可以在这里找到:

http://youtu.be/dXm4wqzvO5c

谢谢,

保罗

[编辑]

有关更多信息,法线也由以下代码提供,它们目前位于大型法线数组或 XYZ XYZ XYZ 等...

0 投票
1 回答
352 浏览

raytracing - 光线追踪照明

我正在尝试为一个简单的球体光线追踪应用程序实现镜面反射和漫反射照明,但我的矢量有问题。

我正在尝试使用以下内容来更新灯光,但生成的图像看起来完全一样,所以我知道我做错了什么。我假设我以某种方式弄乱了向量。hit 是被击中的球体,mindis 是到这个球体点的距离。Pir、pig、pib 是颜色的 rgb。

0 投票
1 回答
961 浏览

opengl - 使光源在 OpenGL 中可见

我想在我的 OpenGL 场景中移动我的光源,它正在工作。但实际上我也想看到你的光源。

我怎样才能做到这一点?

0 投票
1 回答
3828 浏览

lighting - Three.js 的最大点光源数

我正在尝试使用点光源在我的 Three.js 场景中点亮立方体的每一侧。然而,我添加到场景中的 6 盏灯中似乎只有 4 盏实际上被渲染,因为立方体的顶面和底面仍然是黑暗的。如果我移除正面和背面的灯,顶部和底部的灯会突然起作用。

Three.js 是否有可能在一个场景中同时只支持 4 个点光源,或者我做错了什么?

0 投票
2 回答
4765 浏览

c# - 制作像泰拉瑞亚这样的灯光系统?

我正在尝试使我的照明类似于泰拉瑞亚的块状照明。现在,我知道如何让方块变暗,我可以将方块分配给特定的光照级别,但是,我将如何制作一个真正的光实体,它会发出圆形的光(也可以是菱形的)?非常感谢您的帮助,如果我的问题不清楚,请随时提问。

0 投票
3 回答
1121 浏览

c++ - OpenGL 光照问题

当我在 OpenGL 中启用光照时,我无法看到我创建的对象。我有一个从 3D Max 导入的对象,该对象的照明可以正常工作,但我的场景的其余部分却不能。我知道我需要指定法线,但这似乎没有帮助。虽然如果我在 display() 函数中创建一个可以正常工作的简单多边形,但是在类的方法中创建并在 display() 函数中调用的其他多边形没有显示出来

这是我的照明代码

这是我的类方法,它正在创造我的海洋

然后在我的 display() 函数中调用它,如下所示

知道为什么我看不到这些吗?

更新:

如果我禁用纹理,我可以看到我的大海。如何修复它以便我可以使用纹理和照明?

更新 2:

已将纹理更改为 GL_MODULATE 但我还必须删除混合以使其工作。我需要启用混合吗?

0 投票
1 回答
1855 浏览

opengl - 点燃太阳给出荒谬的结果

我正在尝试开发空间模拟器。我正在尝试使用太阳作为光源。我的问题是照明剂量按预期工作。也许我对法线使用了错误的计算。我正在使用单个“createsphere”函数来创建一个球体,然后使用不同的坐标和大小来显示它们。问题是屏幕上的所有球体都显示几乎相同的效果(即我只应用了一个光源,但它似乎已应用于所有球体)。而且光线也随着它们旋转。我不确定问题出在哪里......我正在发布我的代码......

球体显示代码

创建球体的代码

和照亮太阳的代码

0 投票
1 回答
242 浏览

java - 如何对精灵的特定部分进行着色

我一直在为我计划制作的策略游戏开发一个等距的 minecraft 游戏引擎。如您所见,它确实需要一些照明。很难区分不同的海拔,因为一切都是相同的阴影。所以我的问题是:我可以只对精灵的特定部分进行着色吗?所有这些块都只是精灵,所以如果我对整个图像进行着色,它将对整个块进行着色。

引擎截图