色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何生成具有硬陰影的完全光線追蹤場景

Dbwd_Imgtec ? 來源:Imagination Tech ? 作者:Imagination Tech ? 2022-04-06 12:59 ? 次閱讀
在任何視覺圖形的場景中,為了讓用戶獲得更真實的體驗,陰影往往發揮著重要作用。不過,它們長期以來一直是實時應用程序中在速度和質量方面最難完成的功能之一。隨著硬件的改進和硬件加速光線追蹤技術的普及,開發人員獲得了比以往任何時候都更準確、更快地渲染陰影的能力。在Imagination,我們相信光線追蹤在未來實時渲染中的潛力,并一直在尋求可能的界限突破。這篇博文將簡要介紹如何生成具有硬陰影的完全光線追蹤場景,以及Khronos Vulkan光線追蹤擴展的高級概述。對于那些已經閱讀了我們之前《Vulkan中的環境遮擋》的讀者來說,這是很好的后續內容,從完全通過光柵化的光照技術到現在使用完整的光線追蹤。正如《Vulkan中的環境遮擋》一樣,我們的PowerVR SDK中有一個完全光線追蹤硬陰影的代碼示例,您可以在空閑時間探索。

當前的陰影技術

在過去十年中,實時渲染陰影的流行方法是使用陰影貼圖。這是場景從光源視角再次渲染到離屏深度緩沖區(稱為陰影貼圖)的地方,然后在著色過程中對陰影貼圖進行采樣,以使用深度比較計算可見性。雖然這種方法已經成功地應用于許多應用中,但它也有一些缺點。

最常見的問題是陰影鋸齒——這是在陰影貼圖的分辨率過低的地方,導致出現塊狀陰影。雖然可以通過使用更高分辨率的陰影貼圖來解決,但會增加內存占用和帶寬利用率,可能會對性能產生負面影響,尤其是在移動設備上。即使使用更高分辨率的陰影貼圖,某些微觀細節也很難保留,這要后續的屏幕空間陰影通道來細化。但是,在使用光線追蹤時,可以在屏幕上為每個像素分配一條光線,這將產生像素完美的硬陰影。

光線追蹤管線

光線生成

當在命令緩沖區調用 vkCmdTraceRaysKHR ,將為當前綁定的光線追蹤流水線調用用戶定義的光線生成著色器。追蹤光線的命令允許開發人員為調度的線程設置各種參數。我們的演示是完全光線追蹤的,這意味著最好為屏幕上的每個像素分配一個光線生成著色器線程。

每次調用光線生成著色器都必須指定將主光線發射到場景中所需的變量。光線需要有原點(視點)和行進方向。可以通過將逆視圖矩陣應用于(0,0,0,1)來計算原點。要計算方向,需要當前像素的屏幕空間位置。可以使用 gl_LaunchIDEXT 從光線生成著色器查詢分派坐標。使用此內置擴展,屏幕空間坐標和光線方向可以按如下方式計算:

const vec2 pixelCenter = vec2(gl_LaunchIDEXT.xy) + vec2(0.5);const vec2 inUV = pixelCenter / vec2(gl_LaunchSizeEXT.xy);vec2 screenspace = inUV * 2.0 - 1.0;
vec4 target = mInvProjectionMatrix * vec4(screenspace.xy, 1, 1);vec4 direction = mInvViewMatrix * vec4(normalize(target.xyz), 0);

從這里,我們可以使用 traceRayEXT 函數將主光線發射到場景中。然后,它將遍歷加速結構,在該結構中,它將命中或錯過場景中的幾何體,并調用相應著色器組。執行的著色器組將取決于其命中內容,并將像素顏色存儲在有效負載結構中。“未命中”著色器只是將光線的顏色設置為硬編碼的清除顏色。

命中組著色器

一旦光線與場景中的對象發生碰撞,就會執行命中著色器。頂點緩沖區、索引緩沖區和材質等模型數據都附著到“命中組”著色器。光線追蹤擴展允許我們獲取命中對象的實例ID。在本演示中,每個模型都是唯一的,因此實例ID直接對應于模型ID。模型ID可用于查找上述緩沖區。

// Since each object is unique in this scene, instance ID is enough to identify which buffers to look upuint objID = gl_InstanceID;
// indices of the triangle we hitivec3 ind = ivec3(indices[nonuniformEXT(objID)].i[3 * gl_PrimitiveID + 0], //    indices[nonuniformEXT(objID)].i[3 * gl_PrimitiveID + 1], //    indices[nonuniformEXT(objID)].i[3 * gl_PrimitiveID + 2]); //
// Vertices of the hit triangleVertex v0 = vertices[nonuniformEXT(objID)].v[ind.x];Vertex v1 = vertices[nonuniformEXT(objID)].v[ind.y];Vertex v2 = vertices[nonuniformEXT(objID)].v[ind.z];

gl_PrimitiveID可以用來告訴我們使用哪些索引來查找命中的頂點,然后使用重心插值系數在它們之間進行插值,該插值系數來自命中著色器中聲明為hitAttributeEXT類型的全局變量。然后,我們使用世界矩陣將插值頂點值轉換到世界空間,并旋轉法線值。

// Get the interpolation coefficientsconst vec3 barycentrics = vec3(1.0 - attribs.x - attribs.y, attribs.x, attribs.y); // Interpolate the position and normal vector for this rayvec4 modelNormal = vec4(v0.nrm * barycentrics.x + v1.nrm * barycentrics.y + v2.nrm * barycentrics.z, 1.0);vec4 modelPos = vec4(v0.pos * barycentrics.x + v1.pos * barycentrics.y + v2.pos * barycentrics.z, 1.0); // Transform the position and normal vectors from model space to world spacemat4 worldTransform = transforms[nonuniformEXT(objID)];vec3 worldPos = (worldTransform * modelPos).xyz; // Don't translate the normal vector, only rotate and scalemat3 worldRotate = mat3(worldTransform[0].xyz, worldTransform[1].xyz, worldTransform[2].xyz);vec3 worldNormal = worldRotate * modelNormal.xyz;

使用擊中點的法線和世界位置,我們可以計算光線相對于場景中靜態光源的Phong照明分量。然后,我們使用一個新的命中和未命中組從該點向光源發射另一條光線。我們可以將次光線的最大長度設置為擊中點和光源之間的距離。如果光線在這個距離內與加速度結構中的任何物體碰撞,我們可以得出結論,在碰撞點和光源之間有一個物體,因此該點處于陰影中。如果次光線未擊中距離集內的任何對象,則會執行“未命中”著色器,我們可以假定該點不在陰影中。

如何生成具有硬陰影的完全光線追蹤場景

在這個圖中,我們可以看到兩個例子。光線從視口(1)發射,第一條光線擊中點3,第二條光線發射,在到達光源的途中不會擊中任何幾何體。視點的第二條光線在點4處照射,但在到達光源的過程中,在點5處再次發生碰撞。因此,我們可以得出結論,點4在陰影中,但點3不在陰影中。

優化

雖然光線追蹤陰影提供了比傳統方法更高的逼真度,但它們仍然不完全完美。因此,就實時計算而言,光線追蹤算法需要更多的硬件,這是一個明顯的缺點。除此之外,還可以采取一些不同的優化措施來改進本文概述的技術。

陰影檢查

我們可以減少第一組用來檢查硬陰影的二次光線的數量;這是通過首先檢查已計算的Phong光照分量來完成的。如果由于曲面背向光源,光照分量已為0,則檢查硬陰影沒有意義,因為該點已處于黑暗中。

這將光線預算從屏幕上像素數的大約1.8倍減少到大約1.5倍。這顯然取決于場景和其中的對象,因為它隨未命中場景的主光線的比例以及通過或未通過陰影檢查的主光線的比例而變化。

混合渲染一般來說,光線追蹤核心將比傳統的光柵化流水線慢(至少目前是這樣)。有幾個可能的原因,但主要的原因是光線追蹤硬件仍然相對較新,因此與光柵化相比,GPU仍然沒有為其投入更多的空間。這意味著可以計算一個標準的G緩沖區,并使用位置附件來定位從哪個位置發射陰影檢查光線。G緩沖區在《Vulkan中的環境遮擋》中有介紹,所以如果你還沒有看到,一定要看一看。簡而言之,G緩沖區可以替代主光線,從而產生更好的任務重疊和更小的光線預算。

結束

雖然完全光線追蹤的硬陰影在寫這篇博文的時候可能不是最佳解決方案,但它們仍然提供了傳統流水線難以模擬的細節和準確性。一如既往,我們強烈建議大家看看PowerVR SDK及其代碼示例,以了解我們如何實現這些技術和實現這些算法的確切機制。我們也總是通過支持門戶或論壇發送電子郵件。

如果您有興趣了解更多關于各種圖形技術的信息,請查看我們的文檔網站,或者在SDK Github中探索我們的其他代碼示例。

原文標題:Vulkan完全光線追蹤硬陰影

文章出處:【微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4801

    瀏覽量

    68735
  • Vulkan
    +關注

    關注

    0

    文章

    28

    瀏覽量

    5724
  • 光線追蹤
    +關注

    關注

    0

    文章

    183

    瀏覽量

    21495

原文標題:Vulkan完全光線追蹤硬陰影

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    飛凌嵌入式ElfBoard ELF 1板卡-運動追蹤之六軸傳感器使用場景

    六軸傳感器主要適用于需要測量和監控物體在三維空間中的運動、速度、方向和姿態的場景。應用場景非常廣泛,涵蓋了許多不同的領域和行業。具體的應用包括但不限于:1.機器人控制:六軸傳感器可以被安裝在機器人
    發表于 11-29 08:57

    基于光線追蹤實現反射折射效果

    本文翻譯自Scratchapixel3.0[1],是一個關于計算機圖形學的系統性的學習教程。如果有誤,歡迎在評論區討論。光線追蹤的另一個優點是,通過擴展光線傳播的思想,我們可以非常容易地「模擬反射
    的頭像 發表于 11-09 01:07 ?215次閱讀
    基于<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>實現反射折射效果

    基于光線追蹤的渲染算法實現

    我們已經涵蓋了所有需要說的內容!我們現在準備寫我們的第一個光線追蹤器。你現在應該能夠猜到光線追蹤算法是如何工作的了。首先,注意到自然界中光的傳播只是從光源發出無數條射線,反彈直到它們撞
    的頭像 發表于 10-30 08:06 ?266次閱讀
    基于<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>的渲染算法實現

    光學透過率測量儀的技術原理和應用場景

    光學透過率測量儀(也稱為光透過率檢測儀)是一種專門用于測量材料透光率的儀器。以下是對其技術原理和應用場景的詳細解析:技術原理光學透過率測量儀的技術原理主要基于光的透射原理。當光線通過物質時,會發
    發表于 10-16 14:38

    TLV320AIC3254具有6路的語音錄制功能,可否生成6路完全獨立的音頻文件?

    您好,請問下TLV320AIC3254具有6路的語音錄制功能,請問下,可否生成6路完全獨立的音頻文件?由于每個拾音器是分別放置于不同的位置。謝謝。
    發表于 10-12 08:58

    光線追蹤的工作原理

    課程射線跟蹤渲染技術概述[2]。在本課程的開始,我們將解釋如何將三維場景制成可視的二維圖像。一旦我們理解了這個過程及其所涉及的內容,我們可以利用計算機通過類似的方
    的頭像 發表于 09-30 08:05 ?225次閱讀
    <b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>的工作原理

    生成式人工智能的概念_生成式人工智能主要應用場景

    生成式人工智能(Generative Artificial Intelligence,簡稱GAI)是一種先進的人工智能技術,其核心在于利用計算機算法和大量數據來生成新的、具有實際價值的內容。這種技術能夠模擬人類的創造力和想象力,
    的頭像 發表于 09-16 16:05 ?1901次閱讀

    AMD光線追蹤專家加盟高通,共筑Adreno GPU性能新高度

    在科技行業日新月異的今天,頂尖人才的流動往往預示著技術創新與突破的新篇章。近日,一則令人矚目的消息在半導體與圖形處理領域引起了廣泛關注——AMD前光線追蹤技術領域的杰出專家Paritosh
    的頭像 發表于 07-11 10:03 ?596次閱讀

    解碼AI驅動的DLSS 3.5光線重建功能

    神經網絡渲染器提高了光線追蹤圖像質量,使用可在采樣光線之間生成更高質量像素的 AI 網絡取代需要人工設計的降噪器。
    的頭像 發表于 05-11 11:06 ?556次閱讀
    解碼AI驅動的DLSS 3.5<b class='flag-5'>光線</b>重建功能

    MediaTek攜手望塵科技通過移動端光線追蹤技術打造沉浸體育游戲體驗

    MediaTek攜手望塵科技(GALA Sports),在手游領域實現了光線追蹤技術的革命性應用。該技術現已成功融入望塵科技旗下的釣魚與籃球體育游戲中,極大地提升了玩家的視覺沉浸體驗,讓游戲畫面更加逼真。
    的頭像 發表于 05-07 11:39 ?707次閱讀

    NVIDIA推出兩款基于NVIDIA Ampere架構的全新臺式機GPU

    兩款 NVIDIA Ampere 架構 GPU 為工作站帶來實時光線追蹤功能和生成式 AI 工具支持。
    的頭像 發表于 04-26 11:25 ?638次閱讀

    MediaTek攜手望塵科技共同推進移動端光線追蹤技術在手游中的應用落地

    MediaTek 與望塵科技(GALA Sports)攜手合作,共同推進移動端光線追蹤技術在手游中的應用落地,將該技術成功導入了望塵科技旗下的釣魚和籃球體育在線類游戲,為玩家帶來更具沉浸感的逼真游戲畫面。
    的頭像 發表于 04-18 10:04 ?415次閱讀
    MediaTek攜手望塵科技共同推進移動端<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>技術在手游中的應用落地

    微軟:SSD固態硬盤可降低顯存占用,提高光線追蹤性能

    其專利說明如下:由于光線追蹤加速結構常需占用其他數據存儲空間(如幾何圖形和紋理數據),導致系統需大增內存負擔,且所需帶寬大。本文方法旨在緩解這一問題。
    的頭像 發表于 03-25 15:46 ?602次閱讀

    追蹤跳線都用哪些場景

    鷹眼追蹤跳線是一種用于機房管理的工具,可以查詢銅纜和光纜(包括超五類、六類、超六類屏蔽/非屏蔽,單模/多模光纖等)。其應用場景包括但不限于: 機房管理:機房是網絡設備的核心區域,鷹眼追蹤跳線可用
    的頭像 發表于 03-21 10:03 ?439次閱讀

    Linux中的軟、鏈接的區別

    /inittab /test/inittab.hard   發現鏈接與真實文件的大小和創建日期完全相同,類似于copy,同步更新。   3:鏈接與拷貝的區別:   發現拷貝與真實文件的創建日期
    發表于 02-04 16:34
    主站蜘蛛池模板: 欧美多人群p刺激交换电影| 亚洲人交性视频| 少妇的肉体AA片免费| 寻找最美乡村教师颁奖晚会| 一区二区视频在线观看高清视频在线| 91精品国产色综合久久不| 成人免费小视频| 精品欧美一区二区三区四区| 欧美人xxxxx| 亚洲精品国产精品精| 99久久香蕉| 国产中文视频无码成人精品| 免费看片A级毛片免费看| 亚洲 成人网| 99热精品一区| 国产一卡在线观看完整版 | 99国产在线视频有精品视频| 国产高清在线a视频大全| 美女脱内衣裸身尿口露出来| 偷柏自拍亚洲综合在线| 最新果冻传媒在线观看免费版| 国产成人一区免费观看| 老师给美女同学开嫩苞| 偷拍 拍自 欧美色区| 91传媒蜜桃香蕉在线观看| 国产亚洲精品久久久无码狼牙套| 欧美精品熟妇乱| 亚洲中文久久久久久国产精品| 成人1000部免费观看视频| 久久国产露脸老熟女熟69| 上原结衣快播| 99久久久久国产精品免费| 精品久久久久久综合网| 少妇第一次交换| 97精品一区二区视频在线观看| 果冻传媒在线观看高清完整免费| 日本内射精品一区二区视频| 511麻豆视传媒精品AV| 幻女FREE性俄罗斯学生| 沈阳熟女露脸对白视频| 99久久99|