Blinn光照模型對Phong光照模型高光斷層現象的改進
Phong光照模型的鏡面光反射實現
由於Phong光照模型中,鏡面反射光照分量的公式為視角方向V和光線反射方向R的點積,而當V和R的夾角大於90度時,點積為出現負數,實現中我們常常將點積為負數部分設為0。這樣的話,當鏡面反射的反射度S非常小的時候(例如1),V和R夾角為90的位置的光照強度會發生突變,造成高光斷層的現象。
Blinn光照模型的鏡面光反射實現
而Blinn光照模型的實現中,採用了半程向量和法向量的夾角餘弦作為因子,與Phong光照模型中採用視角方向與反射光線夾角餘弦相比,半程向量與法向量的夾角在平面上方始終在90度以下,這樣就避免出現了鏡面反射分量發生突變的現象。
例如下圖中,計算相同的光照方向L和相同的視角方向V在兩種光照模型下的鏡面反射分量,Phong光照模型在法向量的左邊有許多區域的鏡面光分量被置為了0,因為該區域反射光方向與視角方向的夾角均大於90度。而Blinn在整個平面上方都不會出現半程向量與法向量夾角大於90度的現象。
相關推薦
Blinn光照模型對Phong光照模型高光斷層現象的改進
Phong光照模型的鏡面光反射實現 由於Phong光照模型中,鏡面反射光照分量的公式為視角方向V和光線反射方向R的點積,而當V和R的夾角大於90度時,點積為出現負數,實現中我們常常將點積為負數部分設為0。這樣的話,當鏡面反射的反射度S非常小的時候(例如1),V和R夾角為90的位置的
Unity shader學習之Blinn-Phong光照模型
高光 ron mage tex cli dot 計算公式 ocl tro Blinn-Phong光照模型不用計算反射方向,計算公式如下: h = normalize(v + l); Cspecular = Clight * mspecular * pow(max(0, do
OpenGL學習腳印:Blinn-Phong光照模型
寫在前面 在前面基礎光照部分,我們學習了Phong Shading模型,Blinn-Phong模型對Phong模型的鏡面光成分進行了改進,雖然在物理上解釋沒有Phong好,但是能更好地模擬光照。本節程式碼可以在我的github下載。 Phong不
Phong光照模型的Shader實現
nor text normalize graph www img 由於 2.0 平行四邊形 計算反射向量 Phong用到的是反射向量,計算反射向量的公式是 R = 2*N(dot(N, L)) - L 這個公式是根據向量的投影公式以及平行四邊形法則推導出來的 詳細步驟請看這
UnityShader開發之光照 - 簡單光照模型 - Phong反射光模型引數分析
1.概念 light color = emissive + ambient + diffuse + specluar emissive:自發光 ambient:環境光 diffuse :漫反射光 specluar:鏡面光 Phong模型 鏡面光公式
《unityshader 入門精要》漫反射光照與高光反射光照模型學習筆記
Shader"LT/Blinn-Phong"{Properties { _MainTex ("Texture", 2D) = "white" {} _Diffuse("Diffuse",Color) = (1,1,1,1) _Specular("Specular
【DirectX11】第九篇 光照模型——高光
本系列文章主要翻譯和參考自《Real-Time 3D Rendering with DirectX and HLSL》一書(感謝原書作者),同時會加上一點個人理解和拓展,文章中如有錯誤,歡迎指正。 這裡是書中的程式碼和資源。
進階光照與材質之光照和反射模型
第五章講述了一些漫反射模型和鏡面反射模型的原理和數學公式 博主在unity中實現了一下,把部分結果貼在上面 有下面幾個主題: 渲染公式 基本光照定義 光照和lambert法則 雙向反射分佈函式BRDF 漫反射材質原理簡介與模型 鏡面反射材質原理簡介與模型 基本光照定義 對於
簡單光照模型(Lambert 光照模型)
環境光是對光照現像的最簡單抽象,因而侷限性很大。它僅能描述光線在空間中無方向並均勻散佈時的狀態。很多情況下,入射光是帶有方向的,比如典型的陽光。如果光照射到比較粗糙的物體表面,如粉筆,由於這些表面從各個方向等強度地反射光,因而從各個視角出發,物體表面呈現相同的亮
Shader學習筆記(三)自定義光照模型,經典光照模型Lambert與HalfLambert
自定義光照模型 #pragma surface surfaceFaction lightModel surfaceFaction:著色器程式碼的方法的名字 lightModel:光照模型的名稱 自
巨無霸 對 組件模型
邊界 瓶頸 事件 程序員 兼容性 機器 選擇 制造商 核心 基於組件的應用程序結構域與傳統的巨無霸程序有著根本的不同。為了理解不同,我們來比較一下相同應用程序的各個實施方法。 巨無霸模型 現在,假設你是一個軟件公司的產品經理,負責為制造業研發軟件。這個軟件應用於車間
C++對象模型——對象成員的效率 (Object Member Efficiency)(第三章)
turn ember 坐標 span color set 應該 get fontsize 3.5 對象成員的效率 (Object Mem ber Efficiency) 以下某個測試,目的在測試聚合(aggregation).封裝(encapsulat
來談談你對CSS盒模型的認識?
ive 一個 box overflow spl oat 方式 錯亂 wid 任何一個網頁的搭建都離不開盒模型的堆砌。應該說css模型是web的一個根基,最後呈現出來的效果不同無非就是在高寬、內容與背景刪的區別而已。 那麽CSS模型有什麽認識的呢? 首先,css盒模型有幾種呢
【轉載】使用信號監控 Django 模型對象字段值的變化
rec field dex 文件 沒有 **kwargs blog ini csdn 轉載出處:http://blog.csdn.net/pushiqiang/article/details/74949465 Django 信號 (Signals) 的功能類似於 Wor
對星型模型和雪花模型的簡單理解
alt 存在 body 所有 維度 info 多層 分享 post 星形模型 雪花模型 星型模型是所有維度表都是連接在一個事實表上面,雪花模型是將維度表拆分地更加詳細,是多層次的。 在星型模型的維度表裏面,一張維度表儲存了眾多存在冗余的信息,為什麽冗余,在哪裏冗余,我
JavaScript的事件、DOM模型、事件流模型以及內置對象詳解(三)
dde function n) 事件冒泡 字符 nds rep == 防止 JS中的事件 JS中的事件分類 1.鼠標事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload
基於AIRMA模型對訂單總額未來七天的預測
使用 系統時間 cfi 諸多 通過 次數 處理 實現 情況 1 前言 ? 從時間上看,訂單量時間序列有兩個明顯的特征: ? 1)周期性。每天訂單量的變化趨勢都大致相同,午高峰和晚高峰訂單量集中; ? 2)實時性。當天的訂單量可能會受天氣等因素影響,呈現整體的上漲
使用交叉驗證對鳶尾花分類模型進行調參(超參數)
www. eight data svc ans 分塊 分類 app files 如何選擇超參數: 交叉驗證: 如圖, 大訓練集分塊,使用不同的分塊方法分成N對小訓練集和驗證集。 使用小訓練集進行訓練,使用驗證集進行驗證,得到準確率,求N個驗證集上的平均正確率; 使用平均
用xgboost模型對特徵重要性進行排序
用xgboost模型對特徵重要性進行排序 在這篇文章中,你將會學習到: xgboost對預測模型特徵重要性排序的原理(即為什麼xgboost可以對預測模型特徵重要性進行排序)。 如何繪製xgboost模型得到的特徵重要性條形圖。 如何根據xgboost模型得到的特徵重要性,
實驗二:對Inception v3模型的對抗樣本
轉載自知乎: TensorFlow 教程 #11 - 對抗樣本 https://zhuanlan.zhihu.com/p/27241550 本文主要演示瞭如何給影象增加“對抗噪聲”,以此欺騙模型,使其誤分類。 實驗程式碼:http://localhost:8888/notebooks/1/Tensor