Deferred Shading in Flash with Stage3D
前不久得到了Flash Player 11.6的beta版本,里边增加了不少新的特性,比如对MRT的支持就很不错。有了MRT最直接的好处就可以在Stage3D上实现很流行的Deferred Shading。前不久做了些尝试,最终还是实现了,效果还不错。 设置MRT的设备相关函数为: Context3D.setRenderToTexture(texture:TextureBase,enableDepthAndStencil:Boolean=false,antiAlias:int=0,surfaceSelector:int=0,colorOutputIndex:int=0):void 不同就在于最后一个参数colorOutputIndex,其就是用来设置render texture 在MRT中对应的颜色输出通道(这里可用的通道数量与d3d或ogl中得到的相同,也即硬件的支持数量)。 在具有MRT支持的同时还提供了对浮点纹理的支持,要不也无法使用MRT得到相应的G-Buffer。创建Float格式的纹理只需要使用 Context3DTextureFormat.RGBA_FLOAT 来作为纹理的格式描述即可(或者RGBA_HALF_FLOAT),在两个浮点纹理中具体G-Buffer的存储与压缩就可以根据具体情况适宜操作即可。 最后实现的效果大体如下: 这里有一些使用MRT相关的注意细节:
不过,目前的beta版本中依然存在不少的bug和坑,相信不久修正的正式版本很快就会发布。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |