问题标签 [shadows]

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 回答
223 浏览

three.js - 如何管理 THREE.DirectionalLight 的阴影目标

我用three.js rev.76

我不知道如何管理THREE.DirectionalLight.

我们可以设置DirectionalLight如下位置:

但是 DirectionalLight 会看着(0.0.0), 和影子相机。我怎样才能让它看(100.200.300)

0 投票
1 回答
903 浏览

java - FBO 深度缓冲区为红色

我无法让我的影子系统正常工作。我使用以下代码生成我的 FBO:

我的实体在我的默认渲染器(输出 vec4)中渲染得很好。我的阴影着色器代码很简单:

我尝试在不使用任何 FBO 的情况下输出 vec4(1.0) 并且一切正常,因此我的计算是正确的,并且我的着色器代码也应该可以正常工作。

我的绘图调用如下所示:

当我调用“renderAllItems();”时 我还在右上角渲染了一个四边形,它应该显示我的深度纹理。但我看到的只是一个红色的四边形。它不应该是黑色/白色并显示一些东西吗?

0 投票
0 回答
158 浏览

javascript - 奇怪的 Threejs [r84] 阴影

我有一个带铁路灯的 Threejs 小场景。模型是使用 Blender 创建和导出的。

这是我的代码:

我是在 JSFiddle 上发布运行时代码的菜鸟,所以完整的工作代码在这里: https ://drive.google.com/open?id=0BwCG1m_fANZmb0UxYVE5OUlfYzQ

我得到了什么,运行这段代码[截图]: 奇怪的阴影

我试过玩spotLight.shadow.bias = 0.001;,但没有任何帮助。

如果物体内部没有任何面,它看起来不那么丑(上光帽),但如果有(下光帽),它看起来就很可怕。

在搅拌机中,我尝试翻转,重新计算对象的正常值,但仍然没有用。

非常感谢提前,抱歉 GDrive 中的代码。

0 投票
2 回答
1928 浏览

three.js - A-Frame 和 Three.js 如何设置 castShadow 和 receiveShadow

使用 AFrame 和三个。制作了一个 AFrame 简单的场景,一个相机,一个渲染器,一个聚光灯,一个平面和一个立方体。

我希望立方体将阴影投射到平面上。

我已经使用参考 cube.object3D 和 Spotlight.object3D 在多维数据集中设置了聚光灯中的 .castShadow。

我已经使用参考 plane.object3D 设置了平面中的 receiveShadow。

还设置了renderer.shadowMapEnabled。

但看不到任何影子投进了飞机。

有什么提示吗?

非常感谢。

0 投票
0 回答
865 浏览

opengl - OpenGL 上的 PCF 过滤

我正在阅读文档ARB_shadow,他们暗示 OpenGL 可以在纹理采样器中自由实现 PCF(百分比更接近过滤),但他们不能在规范中谈论它。

首先他们说:

  • 双线性或三线性滤波是如何实现的?

解决方案:我们建议一种实现行为,但将细节留给实现。这里的差异相当于阴影边缘的质量和柔和度。具体的过滤算法可以通过分层扩展来表达。为了避免知识产权和专利问题,我们故意在这里含糊其辞。

然后稍后:

如果 TEXTURE_MAG_FILTER 不是 NEAREST 或 TEXTURE_MIN_FILTER 不是 NEAREST 或 NEAREST_MIPMAP_NEAREST 则可以通过将多个深度纹理值与纹理 R 坐标进行比较来计算 r。这方面的细节取决于实现,但 r 应该是 [0, 1] 范围内的值,该值与比较通过或失败的数量成正比。

而且......那是PCF

问题

第一个问题是:它有效吗?当您使用 LINEAR 过滤器对深度纹理进行采样时,有多少供应商真正使用 PCF?

第二个(也是最重要的)问题是:如何检测通过 ARB_shadow 进行的硬件 PCF 过滤是否有效?如果它不存在,我想回退到着色器中的软件 PCF。

笔记

  • 我注意到 ARB_shadow 与ARB_fragment_program_shadow(至少在我可以访问的显卡上)密切相关。ARB_fragment_program_shadow 是着色器中 PCF 的低级硬件支持。这是答案的线索吗,即。如果两个扩展都存在,那么当我说魔术词时会出现硬件 PCF?

  • 用简单的二进制结果实现 ARB_shadow 将是愚蠢的。我假设在驱动程序中实现 ARB_shadow 的全部意义在于执行 PCF,即使不允许文档这么说。ARB_shadow 的存在是否意味着硬件 PCF?

0 投票
0 回答
92 浏览

three.js - 如何在three.js中隐藏shadowMapEnabler

我有一个工作代码,其中阴影工作正常,除非并且直到,renderer.shadowMapEnabled 设置为 true。但是,这里的问题是阴影贴图助手出现在场景中,它描绘了方向光从一个位置到另一个位置的移动,从而投射了阴影。我希望阴影在那里,但隐藏阴影助手。如果我评论 renderer.shadowMapEnabled 那么阴影不会投射。有谁能帮忙吗?

0 投票
0 回答
354 浏览

three.js - Three.js ShaderMaterial 着色器:标识(“hello world”)顶点和片段代码是什么?

我正在尝试为 THREE.js 阴影编写一个自定义着色器,但对 GLSL 是新手,入门时遇到了一些麻烦。我认为最好的方法是从产生与默认函数相同的阴影的“身份”函数开始,ShaderMaterial然后慢慢破解这些函数。但我似乎无法让它工作。这是我尝试过的:

uniforms只是提供黑色作为阴影颜色:

这不会产生任何阴影,尽管它可以正确触发,我知道,因为我可以将输出更改为gl_FragColor任意 HSL 值并看到整个视图用该颜色着色。显然,我不理解vertexShader产生与默认输出相同的正确输出。

任何有关标识 vertexShader 和 fragmentShader 的帮助都会真正帮助我用 GLSL 弄湿我的脚。

谢谢!

0 投票
1 回答
152 浏览

three.js - three.js 光从对象泄漏

我遇到了有关three.js 照明的问题。不知道我在做什么错。我有一个设置为接收阴影的平面来尝试和一个设置为 castShadow 的立方体。总的来说一切都好,直到我把光移到立方体里。如果光线在立方体中心的 70% 范围内,一切都很好,没有光线从外面出来,但如果在立方体边缘的 30% 范围内,它就会向外面漏光。这可以预防吗?我的意思是:

(还行吧) 在此处输入图像描述

这不行在此处输入图像描述

0 投票
1 回答
199 浏览

unity3d - 将雨粒子作为阴影

我创建了以下场景: 在此处输入图像描述

你看到的是透过窗户照到房间后墙的光线。外面有一棵树在风中飘扬。我试图模拟暴风雨天气,所以我还需要在风景中添加雨水。但是,我只需要它作为透过窗户的阴影。这是如何完成的,可以简单地通过 Unity 的粒子系统完成,还是我需要着色器等?

0 投票
1 回答
8107 浏览

python - Python OpenCV 中的阴影去除

我正在尝试使用 Finlayson 等的熵最小化方法在 python OpenCV 中实现阴影去除。人:

“熵最小化的内在图像”,Finlayson 等。人。

我似乎无法匹配论文中的结果。我的熵图与论文中的不匹配,并且我得到了错误的最小熵。

有什么想法吗?(根据要求,我有更多的源代码和论文)

输出:

原来的

rg色度

对数色度

几何平均对数色度

2D 几何对数色度

熵最小化

灰度近似

不变的rg色度