Questions tagged «shadows»

固体物体的存在会遮挡光线,从而形成黑暗空间。通常有助于告诉您角色将要降落的地方。

1
为什么阴影贴图是标准的?
尽管我是一名程序员,但我几乎没有接触过游戏开发。我这个问题已有一段时间了,现在我正在研究游戏开发,所以我认为这是个好时机。 为什么阴影贴图似乎是游戏用来制作阴影的唯一方式?直言不讳,它看起来很糟糕。即使现代游戏的阴影设置已达到最大值,也会出现锯齿状的块状Y阴影,这非常分散注意力。 11年前制作的《毁灭战士3》使用的阴影体积看上去比我见过的任何阴影贴图实现都要好得多,其中包括在发布此问题的同一周发布的AAA游戏。《毁灭战士3》的第三方修改器甚至使阴影的边缘变得柔和,使它们在视觉上更加令人印象深刻。 实现诸如阴影卷之类的东西是否存在某种技术问题或限制?阴影贴图是否易于实施,以至于开发人员甚至不需要考虑其他任何东西? 我能够找到的关于该主题的唯一信息是,构成体积的多边形可能很大,从而要求更高。影子卷可能对系统有更高的要求,但是如果是这样的话,它们在2004年如何摆脱使用它们的困扰? 这个问题并非仅针对阴影映射与阴影体积,它们只是我在完整产品中使用过的仅有的两个,而我只是无法在其他任何技术上找到很多信息。

2
为什么有些游戏显示灯光穿过墙壁发光?
在某些游戏中,即使将视频质量设置为高水平,我也会看到灯光穿过墙壁。 我最近玩过的一些游戏示例包括《无主之地2》(导弹爆炸)和《克苏鲁的呼唤》(灯笼;该游戏甚至使用了虚幻引擎4)。 这是错误还是出于性能原因? 示例无主之地2:https://youtu.be/9bV83qA6_mU? t = 419(几次,但很快) 额外的问题:在后一种情况下,有什么方法可以廉价地使用光线跟踪解决问题?我想昂贵的RT肯定可以解决问题,但是我想知道它是否也可以“便宜”的形式用于解决此特定问题。

1
如何获得PagedGeometry草以接收阴影?
我切换到Ogre3D(v1.7)并使用PagedGeometry。我正在尝试做的是一个简单的场景,其中包含地形,一些树木和草丛。简而言之,我想在Ogre中实现这种效果: 透明/切出的阴影在PagedGeometry演示中实现,但是像上面的示例一样,我找不到如何在草地上正确投射阴影的任何解决方案。 我可以使用什么技术来完成此任务?

1
现代阴影渲染技术?
就阴影渲染而言,最新的技术水平是什么?我的目标是OpenGL 3.2,如果需要的话,使用延迟渲染管道。 自从我研究阴影渲染已经有好几年了,那时有很多可用的技术,从模具到各种阴影贴图方法。那时,渲染阴影需要由CPU控制的单独渲染通道。但是最近我看到了一个演示,其中一个场景完全在GPU上渲染,包括阴影。我不知道该如何实现,或者甚至是合理的事情(除了技术演示之外)。 鉴于互联网上有大量的旧信息,我想了解人们最近使用的是什么方法,以及有多少方法可以推送到GPU(假设我的目标OpenGL版本支持它)。
16 opengl  shadows 

1
阴影贴图文物
我想尝试为3D XNA游戏添加阴影。我已经用一盏灯和一台摄像机设置了一些测试环境。但是,我的方法遇到了工件。 我使用来自http://pastebin.com/zXi0hmsU的着色器代码渲染最终结果,并使用http://pastebin.com/rY4Gcj9N创建阴影贴图。该代码非常简单,涉及从灯光角度生成深度图,然后将其投影到相机空间并检查遮挡。 但是,从大多数角度来看,我得到的结果都很丑陋 场景由一些简单的立方体(手动构造,面向外部,背面被剔除),一盏灯(左上角所示的阴影图-看起来还可以)和一台摄像机组成。 我的阴影贴图的RenderTarget初始化为 int shadowMapSize = 512; RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize, shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24Stencil8); GraphicsDevice.SetRenderTarget(shadowMap); GraphicsDevice.Clear(Color.White); GraphicsDevice.DepthStencilState = DepthStencilState.Default; 然后,应用该CreateShadowMap效果,然后应用LambertWithShadows效果。最后,使用绘制阴影图SpriteBatch。 其余代码仅包含为着色器提供正确的值。如有必要,我可以提供。

4
二维等距游戏中的实时阴影投射
我正在用C ++写一个小的2D等距引擎,并且试图实现实时阴影投射。我按照本页上描述的一种简单方法进行操作,结果是(光与黄色立方体位于同一位置): 结果非常好,但是在墙壁和立方体顶部缺少阴影。这是一个看起来像的示例(我用绿色绘制了预期的阴影): 所有绘制的立方体仅由位于XY位置且Z深度(z = x + y)的3个2D方形构成。我将OpenGL与正交矩阵(glOrtho)结合使用。使用模板缓冲区绘制阴影。 我正在寻找可以帮助我完成此影子投射实施的资源或解决方案。 非常感谢!

1
高斯模糊是柔和阴影边缘的相当准确的表示吗?
我不确定现实生活中的柔和阴影(来自封闭的大型光源)是否具有高斯或线性衰减,或其他原因。 我正在做一些可以通过操纵某种预渲染的渐变纹理来创建阴影的事情,因此我不必依靠帧缓冲区和传统的阴影技术。我计划将渐变烘焙到网格纹理的一个通道中,然后根据每个四边形覆盖多少阴影来操纵值。这是可能的,因为我只是像锯齿一样排列了四边形,其中每个峰都可以将阴影投射到下一个相邻的四边形上。 因此,线性衰减将是最简单的(只需要从线性梯度中减去一些值即可),但是我很难说出实际看起来是真实的。是否有一个简单的数学公式可以应用于线性梯度以得出高斯近似值?

5
在纸牌游戏中,我将使用什么渲染技术为纸牌绘制阴影效果?
什么样的阴影算法可以用来创建像这样的阴影? 我正在制作的是类似的东西,但是都由OpenGL驱动的2D绘图API完成,因此没有Z坐标。 另外,对于手本身,我真的很想得到一种阴影效果,如下所示: 我只是不确定如何获得接近它的阴影外观。 卡的数量一定会发生变化,并且卡会扔到桌子上,所以我不能使用任何类型的光照图。 我应该研究哪种算法(除了模糊,我知道需要做些什么?) 谢谢 更新资料 我正在制作2D纸牌游戏。我想从卡上添加阴影阴影偏移,有点像: 我正在考虑的方式是: 保留与后缓冲大小相同的纹理。 绘制黑色矩形作为该纹理的临时卡片。 模糊该纹理。 用这种纹理画我的卡片。 对卡进行其他照明。 将此纹理绘制到后缓冲区。 我的问题是: 这是正确的方法吗? 有没有一种方法可以在不渲染纹理的情况下(保持位图 与后缓冲区一样大)? 是否可以安全地假定后 缓冲区大小不会超过最大纹理大小?(我的意思是,如果后缓冲区 为2000x3000,那么可以说我可以在 该大小的视频内存中创建纹理了吗? 谢谢

1
如何在多层2d tilemap中实现光影?
我正在从头开始编写等距游戏,我想知道如何/是否可以添加灯光和阴影。 我到目前为止的代码可以在这里找到,但它应该是不够了解,现在,地图是真/假值的简单3D阵列。这是环境的快照: 如果是单层tilemap,那将是直接的。我可以理解所需的2d中简单的光线投射。 但是,考虑到我的地图具有多个高度级别以及类似洞穴的区域,我真的不知道该如何为它创建令人信服的阴影。也许逐块解决方案是唯一现实的方法?

1
如何实现图层之间投射的2D阴影?
如何实现由不同层中的对象投射的2D阴影? 不喜欢Catalin Zima著名教程中的动态照明: 但是就像这段视频中管道的阴影一样: 就像这个视频中平台的影子和角色一样: 我想在具有多个图层和许多不同颜色的灯光的场景中使用相同类型的照明。 我可以想象通过在该图层后面的图层上绘制该图层的黑色副本,然后根据要在其上投射阴影的图层中的孔进行调整来进行此操作。但是我希望有一种更便宜的基于像素着色器的方法。


4
阴影贴图和透明四边形
阴影贴图使用深度缓冲区来计算应在何处绘制阴影。 我的问题是我想要一些半透明的纹理四边形来投射阴影-例如广告牌树。由于将在所有四边形上设置深度值,而不仅仅是可见部分,因此它将投射四边形阴影,这不是我想要的。 如何使用阴影贴图使透明四边形投射正确的阴影?

1
人们如何绕过Carmack的Reverse专利?
显然,创新对卡马克的反向专利,以及他们成功地迫使ID来修改他们的技术源下降,以及包括EAX在Doom 3。 但是Carmack的Reverse经常被讨论,显然,它是延迟着色的一个不错的选择,因此大概也可以在许多其他高预算产品中使用它。 尽管Creative不太可能会追随较小的公司,但我想知道较大的工作室如何解决这个问题。他们只是希望自己的手指交叉并且希望Creative不会拖拉他们,还是根本不使用Carmack的Reverse?

3
第一次阴影贴图问题
我第一次使用着色器在OpenGL中实现了基本的阴影映射,现在遇到了一些问题。在下面,您可以看到我渲染的场景的示例: 我要进行的阴影映射的过程是,我使用“视图矩阵”从光的角度以及用于正常渲染的投影和模型矩阵将场景渲染到帧缓冲区。 在第二遍中,我将上述MVP矩阵从光的角度发送到顶点着色器,该顶点着色器将位置转换为光空间。片段着色器进行透视划分,并将位置更改为纹理坐标。 这是我的顶点着色器, #version 150 core uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVPMatrix; uniform mat4 lightMVP; uniform float scale; in vec3 in_Position; in vec3 in_Normal; in vec2 in_TexCoord; smooth out vec3 pass_Normal; smooth out vec3 pass_Position; smooth out vec2 TexCoord; smooth out vec4 lightspace_Position; void main(void){ pass_Normal …
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.