XNA-繪圖著色
繪圖著色:
3D繪圖在繪製的過程中,我們會使用到著色器(Shader),裡面需要用到主要的繪圖屬性:光源、材質、著色打光,可以針對自己想要宣染的物體編輯自己想要的著色器,達到自己想要的效果,以下先介紹此三種屬性,之後的文章在來簡單介紹一下Shader。
光源:
實際把3D世界照亮發光體是光源,物理上它是一種電磁波,可以藉由數學公式的計算來模擬發出光線的亮度等特性。
在電腦繪圖學上常用的光源屬性有:光源位置(position)、照射方向(direction)、光源顏色(color)、照射範圍(range)、亮度衰減程度(attenuation)等等,這些不同屬性的組合,可以產生多種不同的光源,其中三大類最為常見:點光源、平行光源、聚光燈光源。
光源種類 | 特性 |
點光源 | 光線朝四面八方均勻照射 |
平行光源 | 照射無線遠的光線 |
聚光燈光源 | 向著某一處某個範圍照射光線 |
在3D遊戲中燈光是有限的,因為不同的光源所需要的運算複雜度也不同,因此在繪圖效能上有所差異。
平行光遊戲是無限遠的點光源,算是點光源的一種特例,因此計算上的負擔是最輕的,像是太陽就適合用平行光源來照射。
而點光源和聚光燈光源的計算就相對的複雜,使用時需考慮到效能的問題,因為這和場景的複雜度(總共有多少模型的三角面有受光)有關。
材質:
是指物體表面反射光線的特性,物理上我們看見物體是因為物體將光線反射到我們的眼中,有四種常見的反射光線的屬性:漫射光(diffuse light)、環境光(ambient light)、發光程度(emision)、炫光程度(specular highlight)。
著色打光:
若沒有著色打光的過程,物件看起來是平板的,著色的過程讓物件看起來有立體感,而打光的過程會使用球體表面頂點的法向量、光源的照射方向、眼睛的位置來計算球體表面反射光線的強度、炫光以及其他的散射光線。這些因素透過物理計算後產生最後每個螢幕像點要呈現的顏色,而這些物理計算就是用Shader程式所撰寫的。