AS3实时光影追踪渲染(Flash ActionScript 3.0 Raytracer)
source: http://www.strille.net/works/as3/raytracer/
默认画面在双核2G处理器的电脑上不太流畅,双核2.6G十分流畅,内存均为2G. 用PV3D来尝试做出类似效果,先用ShadedMaterial和ShadowCaster测试,参考zupko.info的casting shadow:
shadowCaster.setType(ShadowCaster.DIRECTIONAL);
…
shader = new EnvMapShader(light, envMap.bitmapData, envMap.bitmapData, 0x333333);
bitmapMaterial = new BitmapMaterial(pv3dBitmap.bitmapData, false);
bitmapMaterial.smooth = true;
var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
shadedMaterial.interactive = true;
…
bmdEnvSphere.draw(viewport, matrixEnvSphere);
速度在2.0G的CPU上巨慢,效果也不太理想,改为环境材质伪造光线追踪:
var envBlur:BitmapData = new Bitmap(new rayTracingImg(200,200)).bitmapData
envBlur.applyFilter(envBlur, envBlur.rect, new Point(), new BlurFilter(4, 4, 3));
var em:EnvMapMaterial=new EnvMapMaterial(light, envBlur);
em.smooth=true;
em.tiled=true;
速度稍快,但是已经失去了光线追踪的意义,效果也是马马虎虎,看来要做到网页Flash实时三维渲染,我还有很长的路要走.
高阶的光线追踪渲染可以看看这个CUDA的教程: CUDA ray tracing tutorial。
基于MVC架构的Javascript免费开源框架 - JavaScriptMVC
CSS渐变背景(Firefox 3.6)