问题标签 [specular]

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 投票
0 回答
550 浏览

three.js - 带 alpha 通道的threejs specColor

我需要在我的场景中使用三个.js 导入一些几何图形,每个几何图形都指定一个 RGBA 颜色和一个 RGBA 镜面反射颜色。在threejs中存在一个问题,因为它似乎只处理RGB颜色,整个对象都有一个alpha属性。但我需要两个单独的 alpha 值:一个用于颜色,一个用于高光颜色。

0 投票
0 回答
123 浏览

c++ - 镜面光是点还是方向?

镜面光是否将一个点或方向作为光?如果是方向,则应该计算诸如LightPosition - VertexPosition吗?或者就像手动指定的 LightDirection 一样?

0 投票
0 回答
431 浏览

opengl - 半透明物体的镜面高光 - OpenGL

我正在为我的计算机图形学课程做最后的项目。这一切都在 OpenGL 中完成。我的项目是创建水下气泡的模拟。这不应该是现实的,但是,我已经完成了我的项目提案中的所有要求,所以我想做一些更高级的东西。

现在,我的泡泡不现实。它们是半透明的,每个周围都有一个半透明的白色圆圈。使用 GL_LIGHT_MODEL_TWO_SIDE、glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 和 GL_POLYGON_SMOOTH 计算光照。这给出了明显的气泡外观。

我无法得到的一件事是镜面高光!它们在那里,但它们是半透明的白色,而不是闪亮表面上真正的镜面高光的不透明白色。

如果我将我的 alpha 设置为全 1,那么会有很好的白色镜面高光,但是我的对象不再是半透明的。

我玩过 GL_SHININESS,但收效甚微。

这是我的照明和材料代码:

谁能建议一种在半透明物体上获得明亮的白色镜面高光的方法?

0 投票
3 回答
2511 浏览

opengl-es - opengl es中立方体上的镜面光

在一些介绍光照的教程中,人们会从一个球体的例子开始,它由所有三种类型的光照亮:环境光、漫反射光和镜面反射光。然后可以很容易地看到,例如通过关闭单个灯光,环境光负责物体的均匀照明,漫反射光来自特定方向,并且由于镜面光,我们可以观察到表面上的亮点.

我尝试用一​​个更简单的例子重复相同的步骤,一个用户可以任意旋转的立方体。我实际上期望看到的是类似的画面:我假设OpenGL应该在一定程度上遵循几何光学的规则,如果光源和相机的位置都指定了,那么其中一个应该只有一个亮点立方体面,将光源直接反射到相机上的面。

但是,我只能获得均匀照明的面孔,而不能获得亮点。所以,我的问题是,真的有可能得到它吗?忘了提一下,我使用了最简单的三角剖分——每个面 2 个三角形。另一件事,我使用的是 OpenGL ES 1.1,所以没有着色器。

0 投票
2 回答
1985 浏览

opengl - 镜面高光取决于相机距离

我只是尝试实现镜面高光。问题是当远离表面时,高光变得越来越强,高光的边缘变得非常刺眼。当移动太靠近表面时,高光会完全消失。

这是我的片段着色器的相关部分。所有计算都在视图空间中。我使用定向太阳光。

这是我的照明缓冲区的屏幕截图。你可以看到最前面的桶根本没有镜面高光,而远处的桶则过于强烈。中间的枪管根据需要点亮。

远高光太强,近高光消失

我究竟做错了什么?

0 投票
1 回答
1176 浏览

opengl - 不那么平滑的阴影

Blinn-phong 阴影...?

法线 布林蓬

所以我遇到的问题,如上图所示,我似乎无法让镜面高光平滑地着色。问题是沿面边缘的突然切断,这不应该发生。漫反射照明似乎工作得很好,它使用相同的插值。这是 blinn-phong 高光的代码:

lightDirection是恒定的,它是无限远的(即太阳)。至于 viewRay,它是在顶点着色器中计算的,使用投影矩阵:

我正在使用延迟渲染,这是 UV 值的来源(渲染到全屏纹理)。

我唯一能想到的是正常的插值不够平滑。但如果是这样的话,我将如何解决它?(我将法线存储为 16 位浮点数,但将其提高到 32 位并没有什么不同)。

0 投票
1 回答
1017 浏览

c++ - OpenGL中的镜面光照问题

我的镜面光照有一些问题,我有环境光和漫反射,但我现在正在研究镜面光以尝试制作一个漂亮的模型。

我的 vertexShader 中有以下内容:

然后在我的 main.cpp 中,我有一些代码可以尝试让它一起工作,镜面光肯定在做一些事情,只是,它并没有让模型看起来有光泽,它似乎将光增强到我可以的程度'看不到任何细节。

我创建以下变量:

renderSceneCallBack()然后我在主要调用的函数中设置我的变量:

然后我创建一个initLights()我想处理所有照明的函数,这也被主要调用:

谁能看到我可能做错了什么,我可能有一些计算错误,我只是没有看到。环境/漫射照明都正常工作。这张照片说明了当前发生的情况,左侧为环境,中间为漫反射,右侧为强度设置为 30 的镜面反射。

在此处输入图像描述

回答

我忘了把这个值传递给主:

使用所选答案现在一切正常

0 投票
0 回答
178 浏览

three.js - Three.js 完全透明的材质,高光贴图完全可见

我需要渲染一个里面有肉的食物托盘,以便为客户展示一些包装设计。我被包裹托盘内容物的塑料薄膜的材料卡住了。我打算使用高光贴图或法线贴图来获得光泽效果,但我唯一能得到的想法是完全透明或使用高光贴图完全着色。都不适合我的目的。

这是我当前的材质设置:

现场代码在这里。JSON托盘文件在这里

在检查器中,可以使用以下命令访问材料: showcase.scene.childrenshowcase.materials

谢谢!

0 投票
1 回答
90 浏览

directx - 高光照明在原点中断 (0, 0, 0)

我有问题让镜面照明工作。看起来我的应用程序中有某种我无法追踪的错误。

光线来自前面(屏幕截图显示相机朝向 -z 方向,左侧是 -x)。

一个简单的镜面反射输出显示以下故障:

在此处输入图像描述

使用的代码:

为了检查可能的变量错误,我检查了 input.VertexWorldSpace:

在此处输入图像描述

为了检查光方向和法线,我检查了漫反射项:

在此处输入图像描述

和相机到顶点视图向量(v): 在此处输入图像描述

对我来说,所有部分看起来都很好,但镜面反射在原点(0,0,0)处仍然变黑并且垂直于光的方向。

我还制作了一个 gif,显示在 origin(0, 0, 0) 处的视图方向向量会发生什么

http://imgur.com/2YlqcGP

另一个 gif 显示相机位置和高光变黑的位置:http: //i.imgur.com/ajUaekA.gifv

我是否对 v 使用了错误的计算?

0 投票
1 回答
870 浏览

directx-11 - 为什么我的着色器会产生不正确的镜面反射结果?[DX11]

我目前正在尝试使用 HLSL 和 DirectX 11 在纹理立方体上实现 Phong 着色和照明。我相信我的环境和漫反射照明计算是正确的,并且在视觉上它们会产生预期的结果。然而,当我应用镜面光照时,我得到了奇怪的结果(见链接)

漫反射、环境光和镜面反射:https ://i.gyazo.com/f7700d758e05227e27be91ab0cfdf64e.png

仅镜面反射:https ://i.gyazo.com/27bbfa0efce5c60748f61f54365cc042.png

我的 .fx 文件:

请原谅任何混乱的代码或变量名,我试图使用各种教程和教科书来让它工作,每个教程和教科书都有自己的命名约定,所以我的现在有点混乱。

编辑:使用答案和其他一些信息来源,我重新设计了我的着色器并让它工作。我的一个问题是常量缓冲区中的填充不正确。我还添加了切线空间计算并将凹凸法线正确转换为 -1 到 +1 范围