2章 The Graphics Rendering Pipeline
"A chain is no stronger than its weakest link." 鎖の強さは、もっとも弱い環によって決まる。 graphics rendering pipeline? 3d data -> pipeline -> 2d image cueing? Bresenham's line-drawing algorithm? symmetric double-step algorithm? pipeline is non-programmable graphics rendering virtual camera view volume frustum : 錐台 prism : 角柱 pipeline speed is determined by the slowest stage. bottleneck of pipeline pipeline 3 stage : application, geometry, rasterizer conceptual stage (粗い分割) functional stage (さらに分割) 時間がかかるstageを、さらにpipeline化する? application stage : collision detection, global accceleration?, physics <- CPU geometry stage : transform, projection (what, how, where drawn) <- GPU rasterizer stage : per-pixel computation <- GPU 2.2 Application Stage what happens?(example : collision) <- CPU rendering primitive : point, line, triangle 幾何を決めるstage superscalar? multi-core CPUで高速化できる部分 hierarchical view transform culling 2.3 Geometry Stage per-polygon, per-vertex 1. model & view transform, 2. vertex shading, 3. projection, 4. clipping?, 5. screen mapping. 上の機能をsubstageで 2.3.1 Model & View Transform model space (not transformed) model transform (position, orientation) model coordinates -> model transform -> world coordinates world space world space is unique projection clipping view transform z-axis delineated camera space (eye space) transform = 4*4 matrix (chapter 4) ワールド座標にカメラと物体をセットして、view transformすると、自分の視点になる(camera space) 右がx軸、z軸は自分に向かって刺さってくる(前方がz軸の負の値) 2.3.2 Vertex Shading for realistic appearance model(material, light, ...) shading (materialにlightが当たったときのeffectを決めること) shading equation rasterization stage(interpolation) shading(chapter 3, 5) 2.3.3 Projection projection( view volume -> unit cube ) unit cube( (-1,-1,-1), (1, 1, 1) ) = canonical view volume orthographic (parallel) = 平行透視? perspective projection = **透視?(遠くの物が小さく見える遠近法) oblique rectangular box view volume(rectangular box) -> orthographic projection -> unit cube orthographic projectoin (parallel is parallel) frustum perspective projection : frustum -> unit cube normalized device coordinates? 2.3.4 Clipping 部分的にview volumeに入っているprimitive -> clippingが必要 sectioning programmable processing unit fixed-operation hardware z-coordinate is stored in a Z-buffer clipping : unit cubeによって切り取られた、不要部分を消す処理(p20 figure2.6) 2.3.5 Screen Mapping 描画に必要な部分(inside unit cube)だけ切り取られたdataが入ってきたところ screen coordinates (x, y) window coordinates = screen coordinates + z-coordinates cartesian coordinates leftmost OpenGL : (0,0) is lower left DirectX : (0,0) is upper left Cartesian system 2.4 The Rasterizer Stage to set color for the pixels rasterization (scan conversion) z-value (depth-value) pixel : picture element differential : 微分? 2.4.1 Triangle Setup ? 2.4.2 Triangle Traversal traversal triangle traversal? scan conversion? triangle fragment? ? 2.4.3 Pixel Shading input : interpolated shading data? hardwired silicon programmable GPU texturing (chapter 6) テクスチャ貼りはここで! programmable! 2.4.4 color buffer not fully programmable, but configurable Z-buffer algorithm? z-buffer stores closest primitive from camera BSP tree back-to-front order O(n) convergence (n is the number of primitives) opaque primitive alpha channel opacity alpha test? stencil buffer? raster operation (ROP) blend operation frame buffer? accumulation buffer motion blur (averaged) depth of field antialiasing soft shadow? double buffering back buffer front buffer vertical retrace? 2.5 Through the Pipeline rendering primitive : point, line, triangle CAD : computer aided design see to it that offline rendering? micropolygon pipeline? (movie) predictive rendering? (academic) ray tracing fixed-function pipeline Z-buffer testing Programmable GPU (Wii) programmability programmable GPUで、pipelineの不要な部分を消すなど、操作しよう!
Real-Time Rendering | |
Tomas Akenine-Moller A K Peters Ltd 2008-07-31 売り上げランキング : 1190 おすすめ平均 最近までの動向が把握できる 調べたいことがあったら当たってみる本 三次元リアルタイムCGの百科全書 Amazonで詳しく見る by G-Tools |