XNA-繪圖著色

XNA-繪圖著色

繪圖著色:

    3D繪圖在繪製的過程中,我們會使用到著色器(Shader),裡面需要用到主要的繪圖屬性:光源、材質、著色打光,可以針對自己想要宣染的物體編輯自己想要的著色器,達到自己想要的效果,以下先介紹此三種屬性,之後的文章在來簡單介紹一下Shader。

光源:

    實際把3D世界照亮發光體是光源,物理上它是一種電磁波,可以藉由數學公式的計算來模擬發出光線的亮度等特性。

    在電腦繪圖學上常用的光源屬性有:光源位置(position)、照射方向(direction)、光源顏色(color)、照射範圍(range)、亮度衰減程度(attenuation)等等,這些不同屬性的組合,可以產生多種不同的光源,其中三大類最為常見:點光源、平行光源、聚光燈光源。

光源種類 特性
點光源 光線朝四面八方均勻照射
平行光源 照射無線遠的光線
聚光燈光源 向著某一處某個範圍照射光線

1

    在3D遊戲中燈光是有限的,因為不同的光源所需要的運算複雜度也不同,因此在繪圖效能上有所差異。

    平行光遊戲是無限遠的點光源,算是點光源的一種特例,因此計算上的負擔是最輕的,像是太陽就適合用平行光源來照射。

    而點光源和聚光燈光源的計算就相對的複雜,使用時需考慮到效能的問題,因為這和場景的複雜度(總共有多少模型的三角面有受光)有關。

材質:

    是指物體表面反射光線的特性,物理上我們看見物體是因為物體將光線反射到我們的眼中,有四種常見的反射光線的屬性:漫射光(diffuse light)、環境光(ambient light)、發光程度(emision)、炫光程度(specular highlight)。

著色打光:

    若沒有著色打光的過程,物件看起來是平板的,著色的過程讓物件看起來有立體感,而打光的過程會使用球體表面頂點的法向量、光源的照射方向、眼睛的位置來計算球體表面反射光線的強度、炫光以及其他的散射光線。這些因素透過物理計算後產生最後每個螢幕像點要呈現的顏色,而這些物理計算就是用Shader程式所撰寫的。