Questions tagged «shadow-mapping»

2
在阴影映射中处理投影别名
我不喜欢简单的过程3D建模,以制作用于3D打印的小建筑物。一个例子: 为了使模型在屏幕上更具可读性,我为单个定向光实现了基本的阴影映射。由于我的场景没有变化,因此我只使用场景的轴对齐框渲染一次阴影贴图,以找出阴影贴图的边界。阴影和边界看起来像我已经正确放置了所有矩阵,但是再靠近一点看起来就很糟糕: 从我读过的书中,我了解了彼得平移以及我可能会做些什么,但是我认为这是投影别名的一种形式,参差不齐的边缘看起来非常糟糕,以至于我认为基本实现中有问题。 我修改了像素着色器以显示阴影纹理边界: 我在纹理上进行了双线性过滤(没有它,我会出现严重的暗疮痤疮)。可悲的是,我对PCF的尝试也失败了-它看起来同样参差不齐: 这是禁用了双线性过滤的单个示例案例: 这看起来像“典型的”投射混叠吗?是否可以使用截锥体的场景(可能会进行级联)剪切视景的动态渲染来解决该问题? 编辑:添加双线性过滤的特写,阴影比较后,只是为了展示我得到的。由于内部边缘,阴影暗疮出现。我正在使用堆叠的虚拟块进行建模,但未执行正确的联合操作。根据我的阅读,在多面体上执行布尔运算并非易事,但也将允许我实现静态阴影量以及清理某些3D打印软件。

1
WebGL全向阴影映射问题
首先,我想说的是,我已经阅读了很多有关使用深度图和立方体贴图进行阴影贴图的文章,我了解它们是如何工作的,并且我在使用OpenGL时也有使用它们的工作经验,但是,实现时遇到了问题全向阴影贴图技术在我的3D图形引擎“ EZ3”中使用单点光源。我的引擎使用WebGL作为3D图形API,并使用JavaScript作为编程语言,这是我的计算机科学学士学位论文的目的。 基本上,这就是我实现阴影贴图算法的方式,但是我只关注点光源的情况,因为有了它们,我可以归档全向阴影贴图。 首先,我像这样积极进行正面剔除: if (this.state.faceCulling !== Material.FRONT) { if (this.state.faceCulling === Material.NONE) gl.enable(gl.CULL_FACE); gl.cullFace(gl.FRONT); this.state.faceCulling = Material.FRONT; } 其次,我创建一个深度程序以记录每个立方体贴图面的深度值,这是我在GLSL 1.0中的深度程序代码: 顶点着色器: precision highp float; attribute vec3 position; uniform mat4 uModelView; uniform mat4 uProjection; void main() { gl_Position = uProjection * uModelView * vec4(position, 1.0); } 片段着色器: precision highp float; …
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.