设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

WebGL和HTML5在未来需要面对的挑战

2011-9-14 14:03| 发布者: joejoe0332| 查看: 6745| 评论: 0|原作者: HiWebGL|来自: HiWebGL

摘要:   在《Game Engine Gems 2》的第13章中,作者Rémi Arnaud基于3D渲染技术评测了不同的浏览器。Rémi认为,因为不能吸引游戏开发者,许多Web 3D渲染技术实际已经失败了。例如VRML,约翰•卡马克已经宣布了它的死亡 ...

WebGL:多重渲染目标(Multiple Render Targets)

  多重渲染目标(Multiple Render Targets)是一种一次性将渲染输出储存在多个纹理中的技术。在OpenGL中可以查询gl_MaxDrawBuffers的值来实现此技术,而WebGL 1.0标准则支持在GLSL中使用gl_FragData来实现多重渲染目标。

  从Direct3D 9.0和OpenGL 2.0开始,多重渲染目标被正式支持。

重要性

  这是一种类似于延期着色(Deferred Shading)和屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion)的技术,它们依赖于渲染通道中产生的数据,比如每个片元的颜色、法线和位置。

  如果不能支持多重渲染目标,场景必须渲染多次(使用多个渲染通道)来获取这些数据,这将大大提高资源的开销。

言论

“如果当OpenGL ES 3.0推出的时候,如果能支持多重渲染目标,那么也许WebGL 2.0也会支持。” ——Gregg Tavares(Google I/O大会WebGL主题演讲者)

“在多通道中渲染有时会拖慢运行速度。”——Mikael Emtinger (ROME, 技术总监)

现状

  因为WebGL 1.0标准及其实现缺乏一种指定被绑定的纹理到目标索引的方法,多重渲染目标实际上是不可用的。(译者注:也就是说目前Frame Buffer Object只能绑定一个渲染目标(Render Target),虽然着色器支持多目标渲染,但是外部一次却只能设置一个渲染目标。另外一方面,理论上gl_FragData并不是专为MRT准备的,所以WebGL在不支持MRT的情况下支持这个关键字, 无可厚非。)

如何解决

  • Khronos可以修正WebGL标准以实现多重渲染目标。
  • Google可以更新他们的ANGLE项目以允许开发者用OpenGL 2.0或Direct3D 9.0实现多重渲染目标。


酷毙
1

雷人
2

鲜花

鸡蛋

漂亮

刚表态过的朋友 (3 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部