090311 / Atom Triangle Soup previous | next Atom iPhone Update Blend performance on the iPhone wasn't up to the level I needed. So I'm doing something different, and 3000 lines into a new engine (from "scratch") started this weekend using older Atom code as reference. The PowerVR MBX has one awesome feature by design, for a single opaque draw call, it can handle huge amount of Z overdraw. In fact the first generation iPod Touch can do 29 fps with 64x overdraw with a single draw call of 64 fullscreen triangles of different z (note 64x Z overdraw is not obtainable in practice, using lots of triangles will limit this). In any case I've gone back to rendering triangles. Development in engine triangle soup test shots below, don't expect anything to look like real game... I'm sticking to the same framebuffer feedback as I had in previous Atom engines. For the iPhone engine, triangle output is color + color.alpha * texture. Texture is the previous rendered frame only. I'm rendering to a 256x256 sized render texture (for bandwidth, fill, MBX requirement for pow2 texture size), then copy to screen using a scanline pattern to help hide upsample artifacts. Texture recirculation coordinates are delayed by one frame so they can correspond to previous frame triangle positions. Effects are generated by adjusting texture coordinates and feedback amount. Geometry shown here is just distorted octahedrons, in a distorted oct tree traversal, with random colors, with fractal framebuffer feedback cranked up. Feedback with scaling can have this "copy multiple reduction" fractal effect if contractive mappings are used. The geometry for now has a static tree, because I haven't yet finished the dynamic traversal and hidden surface removal code for the new engine. Using feedback to simulating the feel of refractive or reflective transparency. Guessing this is similar to how the ice was rendered in Super Mario Galaxy. Per texture coordinate (not doing vertex) jitter can create a heat wave effect. Or blur and and strange fluid visual echo. Or without jitter for just the visual echo. Crank up per texture coordinate jitter and the result is some wild stuff which looks in motion (and not on the static screen shot) like an old school fluid flame effect. All these material effects can be mixed and matched on any geometry. Lots of stuff to try out still ... like using something other than random color. Next step is to get the HSR and view traversal working. After that adding in the hierarchical physics code. Then the scary task of optimizing the CPU work to insure it runs on the iPhone... Network Notes Xtremelabs has posted some interesting average bandwidth and latency numbers for various wireless networks (useful for iPhone dev). Latency for EDGE is next to useless for anything interactive on multiplayer. IMO also looks like P2P would be required (to cut communication latency in half) for good interaction... Network : Upload Kbits/s, Download Kbits/s, Latency ms 3G : 955.6, 152.6, 484.2 EDGE : 218.4, 37.3, 907.3 WIFI PUB : 2502.0, 773.9, 205.0 WIFI PRI : 2905.3, 738.8, 184.4 Voxels Continued Efficient High Quality Rendering of Point Sampled Geometry Spacerat's Voxel Blog with CUDA demo. Other iPhone Notes According to this, 128MB 101MB for OS 11MB for video 15MB for app Unity3D Wiki has some good numbers on textured overdraw performance (using 512x512 texture). 10.8 ms for 32bit texture full screen quad 20.4 ms for dual 32bit texture 8.1 ms for 4bit texture 12.2 ms for dual 4bit texture 9.8 ms for dual 2bit texture 7 ms for color only Other MBX Notes MBX Hardware Details not the MBX Lite, but very very useful indeed... | Atom ©2009-2007 Timothy Farrar Latest Blog Entries 090407 . dxt tip 090320 . gdc 2009 090318 . re-attachable code 090311 . atom tri soup 090305 . voxels 090219 . r600 090218 . arm vfp 090212 . iphone atom 090208 . iphone 090207 . kz2 ii 090129 . gt3xx speculation 090121 . killzone 2 090110 . hole filling 090108 . structure synth 090105 . nv gpu prg + tes 081230 . gl3 textures 081224 . larrabee 081223 . 3d ifs art 081219 . gl3 driver 081218 . reprojection 2 081217 . reprojection 081216 . pc gpu stats 081209 . opencl 081115 . r2 081106 . arm vfp11 081102 . gl3 on linux 081030 . p r d a 081020 . temporal binned ring buffer 081014 . octahedron map 081010 . temporal locality 081008 . future hardware 080926 . changed email 080918 . general purpose 080826 . olick paper 080814 . otoy, braid 080813 . opengl 3 II 080811 . opengl 3 080806 . random stuff 080718 . nv perf kit 080709 . antialiasing 080704 . micro polys II 080628 . micro polys 080524 . triangles 080426 . parallel II 080319 . beyond the vacuum 080223 . human head + parallel 080114 . xp install
Index 000000 . index
Graphics 090311 . atom tri soup 090110 . hole filling 081218 . reprojection 2 081217 . reprojection 081209 . opencl 081014 . octahedron map 081010 . temporal locality 080709 . antialiasing 080704 . micro polys II 080628 . micro polys 080524 . triangles 080319 . beyond the vacuum 071130 . GPU only 071121 . deferred 3 071116 . deferred 2 071103 . random shots 071025 . motion cards 071018 . cubemap concepts 071015 . drawing reverse II 070926 . drawing in reverse 070822 . new pipeline progress 070819 . high dynamic range 070817 . video update 070810 . engine lighting 070809 . engine videos 070731 . screen shots 070713 . micro impostors 070711 . infinite LOD 070710 . graphics engine intro
Interaction 071204 . GPU only 2 071018 . cubemap concepts 070816 . CFD videos 070730 . CFD code 070715 . self healing
Networking 070708 . breaking firewalls 070707 . management servers 070706 . 510 players / 128Kbps 070705 . UDP player bandwidth 070704 . network latency 070703 . cost of bandwidth
Sound 070709 . 3D audio / KEMAR
Language 090318 . re-attachable code 081030 . p r d a 070921 . assembler in atom4th 070919 . editor working 070915 . chicken and egg 070912 . font making 070910 . 2 4th | !2 4th
Elsewhere andrew selle adrian crook alex champandard angelo pesce aras pranckevicius brian karis cedrick collomb christer ericson chris hecker craig reynolds dave moore david lenihan ignacio castano jeremy shopf jonas risbrandt ke-sen huang marco salvi mikael christensen mike acton mingw naty hoffman nick porcino oss pete shirley pierre terdiman pixar papers realtime rendering ron fedkiw tom forsyth vincent scheib wolfgang engel All Blog Entries 090407 . dxt tip 090320 . gdc 2009 090318 . re-attachable code 090311 . atom tri soup 090305 . voxels 090219 . r600 090218 . arm vfp 090212 . iphone atom 090208 . iphone 090207 . kz2 ii 090129 . gt3xx speculation 090121 . killzone 2 090110 . hole filling 090108 . structure synth 090105 . nv gpu prg + tes 081230 . gl3 textures 081224 . larrabee 081223 . 3d ifs art 081219 . gl3 driver 081218 . reprojection 2 081217 . reprojection 081216 . pc gpu stats 081209 . opencl 081115 . r2 081106 . arm vfp11 081102 . gl3 on linux 081030 . p r d a 081020 . temporal binned ring buffer 081014 . octahedron map 081010 . temporal locality 081008 . future hardware 080926 . changed email 080918 . general purpose 080826 . olick paper 080814 . otoy, braid 080813 . opengl 3 II 080811 . opengl 3 080806 . random stuff 080718 . nv perf kit 080709 . antialiasing 080704 . micro polys II 080628 . micro polys 080524 . triangles 080426 . parallel II 080319 . beyond the vacuum 080223 . human head + parallel 080114 . xp install 080108 . 2008 071207 . G84 071204 . GPU only 2 071130 . GPU only 071126 . opt+more 071121 . deferred 3 071116 . deferred 2 071115 . critic 2 071112 . critic 071108 . GPU assembly 2 071104 . GPU assembly 071103 . random shots 071031 . cubemap seams 071026 . transform feedback 071025 . motion cards 071024 . GS woes 071019 . cubemap woes 071015 . drawing reverse II 070930 . porting to sm3.0? 070926 . drawing in reverse 070921 . assembler in atom4th 070919 . editor working 070915 . chicken and egg 070912 . font making 070910 . 2 4th | !2 4th 070822 . new pipeline progress 070819 . high dynamic range 070818 . DFES 070817 . video update 070816 . CFD videos 070810 . engine lighting 070809 . engine videos 070731 . screen shots 070730 . CFD code 070715 . self healing 070713 . micro impostors 070712 . fragment raytracer 070711 . infinite LOD 070710 . graphics engine intro 070709 . 3D audio / KEMAR 070708 . breaking firewalls 070707 . management servers 070706 . 510 players / 128Kbps 070705 . UDP player bandwidth 070704 . network latency 070703 . cost of bandwidth 070702 . market research
|