[技術(shù)貼]iterationT 3.0光影GTX600系及以下顯卡兼容問題

大概一個月前iterationT3.0光影也是發(fā)布了。但是有一條很顯眼的公告

一下子勾引了我的好奇心。一瞬間就打開我老舊的筆記本gt520m立馬測試一波。結(jié)果也是直接炸掉。
那么我們今天來深挖下iterationT 3.0.0的源代碼來嘗試解決這個問題。
加載?。。?/h1>
報錯代碼

看到這條報錯我在想。難道GT520M真的跑不了嗎?新涼了一大截。因為這種報錯我根本就沒遇見過。但是這貌似和以前seus v10.1 / seus v10.2白屏問題差不多啊。既然寫著atmosphere,那多少都是大氣的問題。

首先看圖中代碼。我們暫時不管大氣報錯問題。先直接把與大氣有關(guān)的輸出個空白值跑一下看看。
我嘗試把有關(guān)代碼都替換成了0.0。光照部分替換成了1.0。然后運行試試

OK!工作正常。那么接下來問題是為什么天空部分會導(dǎo)致老顯卡報錯呢?
繼續(xù)挖代碼。
我們要先知道GetSkyRadiance的引用條件

還記得這張圖嗎?里面出問題的部分引用的是atmosphereModel。那我們要找這個atmosphereModel是什么東西。
往下找
即創(chuàng)建這個函數(shù)時候

你會發(fā)現(xiàn)報錯的atmosphere既然和這里對應(yīng)
我們看到這個圖中394行的AtmosphereParameters atmosphere就是用atmosphereModel引用的部分。
那么就是這里出現(xiàn)了問題。但是這里的代碼沒問題。那我們要找到atmosphereModel這個struct的創(chuàng)建地方。我們繼續(xù)往下找

我們看圖中代碼可知,atmosphereModel就是在這里創(chuàng)建的。那么這部分的一個顯眼的函數(shù),const。這個const可能就是罪魁禍首。因為部分老顯卡const用不好會炸掉。那么刪除這個const試試。

那么把上面改的內(nèi)容全部還原。只刪除這個const看看什么效果
重載!??!
然后你猜怎么著?

iterationT 3.0.0既然在GT520M上成功運行了。但是幀數(shù)感人。然后老顯卡也能跑了。
要修改的代碼在:
iterationT 3.0.0.zip\shaders\Lib\BasicFounctions\PrecomputedAtmosphere.glsl
相信聰明的你已經(jīng)成功了。
這里說明下。GT520M這類顯卡不要模仿。不然卡成狗。我也是出于好奇的。畢竟這個老筆記本是備用的。所以我只是用來瀏覽網(wǎng)頁看視頻等的。不是拿來玩游戲的。所以是沒有安裝java的。java我在主力機上復(fù)制下來的。
我主力機配置是9700kf+2060super。跑這個光影完全沒有問題。如何gtx690這種核彈炸的可以試試。模仿了也是幀數(shù)感人。這個筆記本是宏基4752g。我就升級過固態(tài)和8g內(nèi)存和win11系統(tǒng)。如果這個光影要有體驗。還是升級硬件靠譜。只要修復(fù)語法錯誤,GTS450,GT520M這些顯卡都能跑itt3光影。