opengl 教程 21 聚光燈

2021-09-06 07:58:55 字數 1316 閱讀 3128

本篇教程中,我們來學習聚光燈的的光照效果,聚光燈有光源位置,也會隨著傳播距離增加而衰減,還有照射方向,另外聚光燈增加的特性是,它的照射範圍在乙個圓錐內,類似探照燈的效果。

下圖顯示了聚光燈的效果:

聚光燈的方向用黑色的箭頭l表示,而我們的光照效果將會限制在兩條紅線內。我們可以通過光線方向,和紅線的夾角來定義光照範圍,對於視線向量v,我們可以用l和v進行點積,如果結果小於cone的角,則不會有聚光燈效果。

主要**:

lighting_technique.h

struct spotlight : public pointlight

};在聚光燈類中,我們定義了2個新的屬性,光照方向以及光照圓錐夾角。

lighting_technique.cpp

struct spotlight

; ...

uniform int gnumspotlights;

...

uniform spotlight gspotlights[max_spot_lights];

定義多個聚光燈光源。

vec4 calcpointlight(struct pointlight l, vec3 normal)

修改點光源shader**,使用結構作為引數。

vec4 calcspotlight(struct spotlight l, vec3 normal)

else

}上面是計算聚光燈效果的函式。

...

for (int i = 0 ; i < gnumspotlights ; i++)

...和點光源的光照的計算方式相同,對於多光源,我們可以累加聚光燈的效果,從而得到最終畫素的光照顏色。

lighting_technique.cpp

void lightingtechnique::setspotlights(unsigned int numlights, const spotlight* plights)

}上面是給uniform變數賦值。

程式執行後效果如下:

OpenGL聚光燈實現註解

version 430 core uniform vec4 ambient 環境光 uniform vec3 lightcolor 聚光燈顏色 uniform vec3 lightposition 聚光燈位置 uniform vec3 soptdirection 聚光燈中心燈光方向 uniform ...

EXCEL實現聚光燈效果

目錄 實現主要有2中方式 1.條件格式 2.vba vba的方式需要熟悉excel,包括調出開發工具 開啟編輯框 複製效果 製作載入巨集 實驗效果 普通excel通用。選單 檔案 選項 自定義功能區 勾選開發工具 選單欄已經調出 二 開啟vba編輯框 選單 開發工具 vb thisworkbook ...

keyshot聚光燈 KeyShot 6使用技巧

從現實中獲取靈感 不同的設計產品可能有不同的渲染方法。看看我們周圍的環境,在現實世界中,哪怕是一面鏡子,一塊鍍鉻的金屬也不會有100 完全的反射。鏡子是玻璃 後面加了一層特殊的塗層。玻璃瓶子通常都會有凹凸 近距離看看周圍的玻璃瓶子 同樣的道理,在電影中你可能會說 這是電腦特技製作的 原因是製作的太 ...