what is ssao

?????? 說到ssao 就要從ao說起,ao,即間接環境光遮蔽技術。我們知道現實中的光線,除了來自太陽和電燈的直射光線以外,光線碰到物體以后,還會再次反射,折射,而再次反射折射的過程中,又會被其他物體遮擋,而留下陰影。所以實際上,現實中你看到的陰影,不只是直接光源,如陽光電燈被物體遮擋所留下的陰影,還有許多是它們被間接的反射和折射后所留下的影子,而ao的目的就是模擬這種間接陰影的形成。


從上到下分別是孤島危機2中的ssao,ssdo,以及最低特效下的木有任何ao。

??????? 從上圖我們可以更清楚地發現:ao的開啟為墻壁的磚縫帶來了陰影。而ssdo是孤島危機2 dx11中帶來的新的ao處理方式,它的亮點就是“動態的ao"
??????? 我們知道,游戲中的直接光源可以是動態的,而所謂牽一發動全身,一旦直接光源的照射角度,照射強度發生變化的時候,那么與它相關的反射光,折射光也會相對地發生變化,那么這些間接的反射光,折射光被遮蔽所留下的陰影情況也自然會發生變化。傳統的ssao在面對這種復雜情況時容易發生最終顯示效果上的錯誤,因此實際上在dx9的孤島危機2中雖然也有ssao,但其實它對于動態間接光照的遮蔽計算是被關閉的,也就是“死水一般的ssao",而ssdo的出現則可以實現精確地處理全動態范圍的間接環境光遮蔽情況,因此在dx11版中你所看到的ao,是隨著環境光源的變化而變化的。


?????? 實現原理:

?????? ssao:屏幕空間環境光遮蔽,是ao被擺上臺面后,最早提出的,一種環境光遮蔽陰影計算與實現技術。原理是這樣的:我們知道物質的表面是凹凸起伏的,而游戲為了表現物體起伏,通常是在物體模型和物體凹凸紋理上做文章。ssao的目的就是檢測這些凹凸紋理表面的凹凸情況,也就是”深度值“來判斷哪些物體在凹的地方,那些物體在凸的地方。凹的地方被間接光源照射以后,它的光會被凸的地方擋住,從而產生陰影,于是ssao檢測到以后,賦予它一個陰影。

?????? ao的開啟為墻壁的磚縫帶來了陰影,而ssdo是孤島危機2 dx11中帶來的新的ao處理方式。它的亮點就是“動態的ao"。我們知道,游戲中的直接光源可以是動態的。而所謂牽一發動全身,一旦直接光源的照射角度,照射強度發生變化的時候,那么與它相關的反射光,折射光也會相對地發生變化。那么這些間接的反射光,折射光被遮蔽所留下的陰影情況也自然會發生變化。傳統的ssao在面對這種復雜情況時容易發生最終顯示效果上的錯誤,因此實際上在dx9的孤島危機2中雖然也有ssao,但其實它對于動態間接光照的遮蔽計算是被關閉的,也就是“死水一般的ssao"。而ssdo的出現則可以實現精確地處理全動態范圍的間接環境光遮蔽情況,因此在dx11版中你所看到的ao,是隨著環境光源的變化而變化的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【pyqt5學習】——groupBox顯示matplotlib圖像

目錄 一、導入模塊 二、創建matplotlib窗口類 三、qt_designer設計窗口 四、邏輯代碼 五、結果展示 一、導入模塊 import matplotlibmatplotlib.use("Qt5Agg") from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg from matplotlib.figure impor…

[BZOJ3545][ONTAK2010]Peaks

[BZOJ3545][ONTAK2010]Peaks 試題描述 在Bytemountains有N座山峰,每座山峰有他的高度h_i。有些山峰之間有雙向道路相連,共M條路徑,每條路徑有一個困難值,這個值越大表示越難走,現在有Q組詢問,每組詢問詢問從…

杭電1027Ignatius and the Princess II模擬

地址:http://acm.hdu.edu.cn/showproblem.php?pid1027 題目: Problem DescriptionNow our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about to kill our pretty Princess. But now the BEelzebub has t…

angular 使用rxjs 監聽同級兄弟組件數據變化

angular 的官網給出了父子組件之間數據交互的方法,如ViewChild、EventEmitter 但是如果要在同級組件之間進行數據同步,似乎并沒有給出太多的信息。 有時候我們想,在一個組件中修改數據之后,馬上反映到另外一個組件中, …

OpenCV里IplImage的widthStep參數 和width參數

一直以為IplImage結構體中的widthStep元素大小等于width*nChannels,大錯特錯!(為了快速訪問,要內存對齊啊)查看OpenCV2.1的源碼,在src/cxcore/cxarray.cpp文件中,找到cvInitImageHeader函數&…

【數字信號處理】——Python頻譜繪制

# -*- coding: utf-8 -*- from matplotlib import pyplotpyplot.rcParams[font.sans-serif] [SimHei] pyplot.rcParams[axes.unicode_minus] Falseimport numpy as np import matplotlib.pyplot as pl import matplotlib import math import randomN 500 # 繪制點總數 fs 5…

Android開發:《Gradle Recipes for Android》閱讀筆記1.3

想命令行執行gradle的構建,可以通過提供的gradle wrapper或者安裝gradle。 構建android項目不需要安裝gradle,因為android studio已經包含gradle。"gradle wrapper"指的是根目錄下的gradlew和gradlew.bat腳本(結尾的w是wrapper的意…

pic

轉載于:https://www.cnblogs.com/edisonxiang/p/5392651.html

leetcode 643 Maximum Average Subarray I

題目詳情 Given an array consisting of n integers, find the contiguous subarray of given length k that has the maximum average value. And you need to output the maximum average value. 輸入一個數組nums和一個整數k。要求找出輸入數組中長度為k的子數組&#xff0c…

OpenCV之cvSmooth函數平滑濾波

1、cvSmooth函數用法 定義原型 <span style"font-size:12px;"> void cvSmooth( const CvArr* src, CvArr* dst,int smoothtypeCV_GAUSSIAN,int param1, int param2, double param3, double param4 );</span>src:輸入圖像. dst:輸出圖像. smoot…

【python數字信號處理】——DFT、DTFT(頻譜圖、幅度圖、相位圖)

目錄 一、離散時間傅里葉變換DTFT 二、離散傅里葉變換DFT 三、DFT與DTFT的關系 ? 參考&#xff1a; 《數字信號處理》——&#xff08;一&#xff09;.DTFT、DFT(python實現)_遠行者223的博客-CSDN博客python繪制頻譜圖DTFT&#xff0c;DFTpython繪制頻譜圖&#xff1a;…

ERROR:Tried to register widget id ==basemapGalleryDiv but that id is already registered解決辦法

在ArcGIS Server開發中&#xff0c;遇到DIV已經被注冊的情況&#xff0c;不能對原DIV內容進行更新。這里需要調用Dojo的destroyRecursive&#xff08;&#xff09;方法&#xff0c;逐個銷毀該Widget下的子元素及其后代元素。然后就可以在原DIV上注冊新的小部件。 示例代碼&…

通過Spring Data Neo4J操作您的圖形數據庫

在前面的一篇文章《圖形數據庫Neo4J簡介》中&#xff0c;我們已經對其內部所使用的各種機制進行了簡單地介紹。而在我們嘗試對Neo4J進行大版本升級時&#xff0c;我發現網絡上并沒有任何成型的樣例代碼以及簡介&#xff0c;而其自身的文檔也對如何使用Spring Data Neo4J介紹得語…

圖像金字塔

圖像金字塔被廣泛用于各種視覺應用中。圖像金字塔是一個圖像集合&#xff0c;集合中所有的圖像都源于同一個原始圖像&#xff0c;而且是通過對原始圖像連續降采樣活得&#xff0c;直到達到某個中止條件才停止降采樣。&#xff08;當然&#xff0c;降為一個像素肯定是中止條件。…

python使用git進行版本控制-分支管理

1、遠程克隆 最好的方式是先創建遠程庫&#xff0c;然后&#xff0c;從遠程庫克隆&#xff1a; 首先在github上創建一個新的倉庫&#xff0c;名字叫gitskills 我們勾選Initialize this repository with a README&#xff0c;這樣GitHub會自動為我們創建一個README.md文件。 下一…

【python數字信號處理】——Z變換

目錄 一、公式 二、代碼 三、結果 一、公式 頻域變量&#xff1a;z 時域變量&#xff1a;n 常見序列的Z變換&#xff1a;信號與系統復習歸納&#xff08;十一&#xff09;&#xff1a;Z變換例題_百把人的博客-CSDN博客_z變換例題基于東南大學陳從顏譯《信號、系統和變換》和…

九宮格拼圖 支持44 55等

代碼下載轉載于:https://www.cnblogs.com/ygcool/p/5395343.html

144. Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes values. For example:Given binary tree {1,#,2,3}, 1\2/3return [1,2,3]. 該題是對樹做前序遍歷 下面分別是遞歸&#xff0c;非遞歸&#xff0c;分治三種思路的解題結果 #遞歸寫法 class Solution(object):d…

一體化點焊機將要取代分體式焊鉗在汽車制造生產線上的使用

目前大多數汽車制造廠及相關配套鈑金件廠家選用的是懸掛式點焊機及分體式焊鉗&#xff0c;從焊接變壓器的功率參數看&#xff0c;約70 % 為160KVA 的&#xff0c;約30 % 為200 kVA 的。原因主要有兩方面&#xff0c;一是新材料如鍍鋅鋼板、高強度鋼板、鋁合金板的應用&#xff…

【python數字信號處理】——線性卷積

目錄 一、公式概念 二、代碼 1、numpy庫 2、自定義打印出每一步結果 三、結果 一、公式概念 線性卷積_百度百科線性卷積(linear convolution) 在時域描述線性系統輸入和輸出之間關系的一種運算。這種運算在線性系統分析和信號處理中應用很多&#xff0c;通常簡稱卷積。中文…