090208 / iPhone previous | next Rough calculations of iPhone peek ability breaks down as follows as far as I can tell (actuals will be a ways under these), 1. 480x320 screen. 2. 412 MHz (for older model). 3. or about 89 clock cycles per screen pixel at 30Hz. 4. 450-590 Ktri/sec (range of texture+color to smooth shaded). 5. or about 15 Ktri/frame at 30Hz. 6. 24 Mtex/sec (fill). 7. or about 5x overdraw at 30Hz. In order to better judge what the iPhone is able to do, I'm porting a very old version of the Atom engine to it. The engine still has the tree structured l-system, but since the iPhone doesn't have enough overdraw capacity, I'm changing all the primitives to opaque triangles (ie real geometry) to better work with the TBDR of the PowerVR MBX. Removes the need for sorting, but I'm not sure if the 16-bit Z-buffer is going to work out here. Seems as if the iPhone does software vertex work, so with any luck having 100% fully dynamic geometry won't be a problem. Got the backend (drawing junk) working today (tested on the simulator), everything gets done in a single draw call (ideal batch performance, which is rather important on the PowerVR MBX!). So the plan is attempt a simple iPhone flying game with an older Atom engine, and with gameplay a like the PS3 Flower game. Difference from other iPhone apps, is that I'm going to compromise everything to try to go for some real view distances (ie awesome LOD), instead of the puny stuff in most iPhone apps. Really not sure if this is going to work or not ... going to have to get a iPod Touch to test with! ATI OpenGL 3.0 Drivers Out Looks like I missed this news, but ATI now has OpenGL 3.0 Catalyst 9.1 Drivers for Windows/Mac/Linux. Awesome! Atom PC/Mac/Linux Updates Not much so say here right now, work has been busy and live has got in the way, so I haven't had the time. I've been looking to better solve the GPU side display traversal problems. Problem is mostly that I can only expand and contract the view tree by one node per frame. This leaves holes when things move which I have to fill in during a image space post process. I tried doing visibility checks where I moved the position of nodes ahead in time by a function of their size. The idea was the if a node will take 5 frames to produce pixel sized children, that I would move that node ahead 5 frames in time in estimated position. This worked a little, but not enough to solve the problem. However I have a new untested idea for GPU side display traversal, which should both reduce me need for vector scatter (ie point drawing in OpenGL3/DX10) by 7x, and should solve the motion hole filling problem. The idea involves doing a reprojection of the previous nodes, then a mipmap style reduction to choose nodes which are in the most need of hole fill expansion, followed by a mipmap style expansion to expand the nodes most in need of hole filling. This should enable me to have a variable amount of tree expansion per frame with a fixed cost! I've got one other really wacky idea which involves doing the above, but trading the vector scatter for a stable fluids advection style gather. I don't think it would work, but if it did, the algorithm would no longer need to draw points at all, and would be fully general (ie easy to do fast in CUDA). | 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
|