在Android设备上没有WEBGL_depth_texture的WebGL中的阴影映射?

时间:2014-08-26 15:45:31

标签: android opengl-es-2.0 webgl webgl-extensions

我编写了一个Web应用程序,它使用JavaScript和WebGL绘制交互式场景,包括阴影贴图。我想确保此网站尽可能多地在Android设备上运行。阴影贴图在桌面计算机上运行良好 - 通过使用深度纹理和滥用颜色纹理来存储深度。但我还没有设法让网站在Android设备上使用阴影贴图渲染场景,而不会产生大量文物。

问题是

  1. 根据webglstats.com,大多数Android设备不支持WEBGL_depth_texture扩展,因此直接使用光源深度缓冲区,因为阴影贴图不起作用。
  2. 解决方法是将每个片段的深度编码为RGBA值。虽然这在台式计算机上运行良好,但相同的代码会导致Android上的主要工件。我的猜测是这是一个精确的问题:WebGL计算的深度值的精度太低,和/或具有floats精度的WebGL片段着色器中的mediump(根据着色器编译器)我的Nexus 7 2012 Chrome上的错误消息,片段着色器不支持highp)实际上只有半浮点数,因此将深度值拆分为RGBA值的精度太低。
  3. 是否有适用于大多数Android设备的WebGL阴影贴图的工作示例?或者这是不合理的? (通过浮点扩展等方式模拟更高的浮点精度在片段着色器中看起来非常昂贵)。

0 个答案:

没有答案