原创 蒙特卡洛積分-重要性採樣原理及其應用

我自己是數學菜逼,所以我在學習數學之類的內容的時候,我基本上會去找視頻看,雖然視頻比較耗時間,但數學真的很難,沒辦法,菜逼一個。好在在b站上找到一位數學老師有這個視頻講解,真的救命呀!!!放下視頻鏈接https://www.bilibili

原创 vs2022相對路徑加載

打開項目文件如下,model是我放模型的文件夾,路徑可以寫成 "../model/nanosuit/nanosuit.obj"      

原创 vs2022配置OpenGL環境(GLFW+GLAD+assimp)

配置環境永遠都是最噁心的步驟。。。看了別人的博客把自己的搞好了,然後下次又要花很多的時間找博客改配置,大家都很懶,我也很懶,但還是自己記錄一下,免得下次又去找很多博客才能解決。 GLFW可以直接在vs裏安裝,使用NuGet工具,這個工具默認

原创 Real-Time Ray Tracing 1

實時光線追蹤和實時全局光照都是光線彈射兩次,實時光線追蹤在一個像素上只採樣一次,即只有一根光線穿過一個像素打到場景內(1SPP),在打到第一個地方叫primary hitpoint,然後從這點向光源連線,判斷它是否在陰影內。然後就是從pri

原创 Real-Time Physically-Based Materials
 (surface models)

PBR and PBR Materials:基於物理的渲染,PBR分佈在物體表面或者體積中。    BRDF回顧:Fresnel term(菲涅爾項),從一點看去,有多少能量反射。  grazing angle:入射(camera看的方向)

原创 Real-Time Global Illumination(screen space)

Screen Space Ambient Occlusion:屏幕空間環境光遮蔽,在屏幕空間中的全局光照的一種近似。 假設SSAO的着色點的光照是來源於次級光源或多次彈射,且都是diffuse的。但它和布林馮着色模型並不一樣。    在這

原创 Real-Time Global Illumination

實時全局光照:爲了簡單和快速,實時全局光照是在直接光照的基礎上再加一次間接光照。   直接光照加間接光照的效果,圖中小太陽的地方是直接光照,然後小太陽的光線會照射到p點  實時全局光照的主要思路是:分爲兩個問題,第一步先確定直接光照點,

原创 Environment Lighting2

Shadow from environment lighting:工業界一般採用環境光中較爲明顯的陰影作爲主要陰影,也就是一個陰影或者兩個三個左右,由於每一個着色點都要考慮着色和陰影,所以不能直接使用採樣的方法,這裏使用效率更好的方法PRT

原创 environment lighting

環境光照是一種無限距離遠和所有方向的光照    The split sum approximation 爲了算出着色,所以需要Solving the rendering equation,其中的V項代表了光線是否能夠到達,在去除V項之後就

原创 Real-Time Shadows 2

在PCF的最後一步,需要對一定範圍內的所有深度值做比較,如果深度值大於着色點的深度值記爲1,小於記爲0.然後求平均。這種操作需要花費較多的時間。這種行爲可類比於在一個班級中,知道自己的分數,想要知道自己在班級中的排名,需要和班級中每一位同學

原创 Real-Time Shadows 1

Shadow Mapping:從光源處記錄一張場景的最淺深度表,然後再從攝像機處看向場景的某個物體向光源連線,比較此時物體到光源距離和深度表記錄的距離,如果大於深度表記錄的距離,則說明被遮擋在陰影內,如果小於,則不在陰影內。    S

原创 光線追蹤(Whitted-Style)

光柵化在軟陰影和光線多次彈射上的實現比較麻煩,所以引入了光線追蹤的方法。光柵化通過Shadow Mapping來實現陰影的效果,它應用於點光源上。 光柵化是光線從相機沿着每個像素的方向打到場景上,然後彈射到光源,即只有一次的光線彈射。  

原创 加速結構(加速光線與場景的物體求交)

把包圍盒分成很多個小格子,當小格子與物體表面相交時,就標記該格子。 當光線進入包圍盒時,就會不停的和一路上的小格子發生交互,如果小格子裏有物體,就判斷光線是否與物體交互,如果沒有交互則繼續前進,如果發生交互就記錄並返回。 由於在某些地方比

原创 陰影映射

Shadow Mapping:在某一個點,眼睛是可以看到,但光線無法達到這個點,這個點就在陰影裏,如果光線也能達到這個點,這個點就不在陰影裏 但這種陰影是硬陰影,即點要麼在陰影內,要麼不在內。適用於點光線。   實際做法:Pass 1:在光

原创 深度緩存、着色和圖形管線

在最終的結果圖上,是可以看到每個物體的遠近程度,和他們自己的顏色。在這裏使用兩個數組來存儲每個像素的顏色和深度值 根據像素的深度值來進行覆蓋,從而表現出最終的結果:     着色:光線打到不同的材質上有着不同的結果,(Blinn-Pho