We now have some sense of how we can make lighting calculations, not take an
incredible amount of time. In this lesson, we're going to take an extremely high
level view of how objects get rendered by a graphics accelerator. This graphics
hardware is usually called the GPU, for graphics processing unit. A GPU uses a
rendering process called rasterization or scan conversion, which is optimized to
use the simplifications I've outlined. Let's look at one rendering pipeline from
end to end. The idea of a pipeline is to treat each object separately. The first
step is simply that the application sends objects to the GPU. What objects?
Typically, 3D triangles. Each triangle is defined by the full locations of its
three points. An application converts a cube into just a few triangles. A sphere
gets turned into a bunch of triangles. So, in the first step, the application
decides what triangles to send down the pipeline. In the second stage of the
pipeline, these triangles are modified by the camera's view of the world along
with whatever modelling transform is applied. A modelling transform is a way to
modify the location, orientation and even the size of a part. For example, if
you were rendering a bouncing ball, the ball's modeling transform each frame,
would move the ball to a different location along it's path. The effect of the
camera view is clear enough. After the object is moved to it's location for the
frame, is it still in view of the camera? That is, is the object inside the view
frustum. If not, then we're done with this object, since it won't affect any
pixels on the screen. In this case, we say the object is fully clipped. So here,
this cube is fully clipped since its outside of the view frustum. The camera and
modelling transforms compute the location of each triangle on the screen. If the
triangle is partially or fully inside the frustum, the three points of the
triangle on the screen are then used in a process called rasterization. If a
triangle is slightly off the screen, it gets clipped and it's turned into more
triangles. This process identifies all the pixels whose centers are inside the
triangle. In other words, it fills in the triangle. So, rasterization here has
found that this triangle covers the pixel centers, in these various places.
These locations are then used to show the image of the triangle on the screen.
どのように光を算出すればいいか大体お分かりですね
このレッスンではグラフィックスアクセラレータを
使ったレンダリングを考えます
このハードウエアは一般的にGPUと呼ばれています
GPUがラスタライズや走査変換などの作業を行い
レンダリングの簡素化を可能にしています
レンダリングパイプラインを
最初から順を追って見てみましょう
最初にアプリケーションが
オブジェクトをGPUに送ります
そのオブジェクトは通常は三角形で
それぞれが3つの点で作られています
アプリケーションによって立方体はいくつかの三角形に
球体は膨大な数の三角形に変換されて
次のステップへと送られます
次のステップでは
カメラの視野とモデリング変換によって
三角形に修正が加えられます
モデリング変換では位置、方向、サイズが修正されます
弾むボールを描く場合は
各フレームをモデリング変換することによって
ボールを動かすことができるのです
カメラの視野については簡単です
動いたあともオブジェクトが視すい台の中に
あるかどうかを考えるだけでいいのです
視すい台の中になければ
ピクセルに何の影響も与えません
その場合はオブジェクトを除外します
この立方体は視すい台の外にあるので除外されます
カメラとモデリング変換によって
各三角形の位置が決まりました
三角形が一部でも視すい台に入っていれば
その3つの頂点が次のラスタ化で利用されます
画面の外に出ている部分は除外され
さらに三角形に分化されます
ラスタ化では
中心が三角形の中にあるピクセルを見つけ出します
この三角形を見ると ピクセルの中心に
かかっている部分がたくさんありますね
この位置情報が画面に三角形を表示する時に
使われます
我们现在知道如何才能使照明计算的计算量减少
在这一课中,我们要采取一个非常高的
的高级视图对象是如何被渲染图形加速器。
图形硬件通常被称为在GPU。
意思是图形处理单元( graphics processing unit)
一个GPU采用的渲染过程被称为光栅化或扫描转换
我已经概述了使用的简化。让我们从头到尾来看看一个渲染流水线
流水线的思想是分别对待每一个对象
第一步只是应用程序简单的发送一个对象给GPU.. 什么对象?
通常情况下,3D三角形。每个三角形被定义为它的三个点的完整位置
一个应用程序把立方体转换成几个三角形。
一个球体则是一堆三角形。所以,在第一步,应用程序决定
哪些三角形被发送到流水线里,在流水线(pipeline)的第二步
这些三角形被相机修改
以应用于任何建模变换
建模变换是一种方法可以修改的位置,方向,甚至一个部分的大小。
你是呈现一个反弹球,球的造型改变每一帧,
球移动到不同的位置,沿着它的路径。
相机视图的效果是不够明确。之后的对象被移动到它的位置上的帧
它仍然是在相机视图?也就是说,在视台体
如果没有,那么我们就完成了这个对象,因为它不会影响任何
在屏幕上的像素。在这种情况下,我们说对象完全被剪裁。所以在这里,
此多维数据集是完全剪裁以来其外的摄像头的可视范围。相机和
模拟转换计算的每个三角形在屏幕上的位置。如果
三角形里面圆锥体的三个点的部分或完全
然后在栅格化过程中使用屏幕上的三角形。如果
三角形是稍有关闭屏幕,它获取剪裁和它却变成更多
三角形。这一进程标识其中心都在里面的所有像素
三角形。换句话说,它填充三角形中。所以,在这里栅格化了
发现这个三角涵盖像素中心,在这些不同的地方。
这些位置然后用于在屏幕上显示的图像的三角。
我們現在對合理時間內計算光的效果有些概念
這門課我們概觀地來看繪圖加速器如何繪製物件
這個硬體通常叫作 GPU(Graphics Processing Unit)
GPU 使用柵格化(Rasterization)或掃瞄轉換(Scan Conversion)繪圖
它們依照我提過的簡化來最佳化
我們從頭到尾來看一條繪圖管線
管線的用意就是分別處理各個物件
第一步即應用程式將物件送往 GPU
送什麼物件?通常是 3D 三角形
每個三角形由空間中三個點定義
應用程式將立方體被轉換成一些三角形
球體被轉換成一堆三角形
在第一步,應用程式決定哪些三角形送往接下來的管線
管線的第二階段,這些三角形經過攝影機視角變換
還有物件本身的座標變換
物件的座標變換指對位置、方向甚至大小的修改
舉例來說,假設你在繪製一個彈跳中的球
球的每一格的座標變換
會讓球沿著路徑移動
攝影機的視角變換效果相當直白
當物件移動到這一格所該在的位置後,還在攝影機視野裡嗎?
即物件是否在視錐內
如果不在,那我們就不用處理這個物件,因為它不會影響到螢幕上任何像素
這種情況,我們會說這物件整個被裁切(Clip)掉了
這個方塊被整個裁切掉,因為它在視錐之外
攝影機與物件的座標變換會算出每個三角形在螢幕上的位置
如果三角形部分或全部在視錐裡
這個三角形三個點會被送往下一個叫做柵格化的階段
如果三角形稍微超出範圍,則會被裁切
變成更多的三角形
這個過程會找出所有像素,其中心點在三角形內
換個角度說,它在「填滿」三角形
這裡柵格化辨識出這個三角形涵蓋了這幾個像素中心點
這些位置接著被用來展示三角形的圖像在螢幕上