實時全方向非平面反射

2021-09-06 07:06:35 字數 1121 閱讀 7628

klayge 4.1支援由王清源提供的螢幕空間反射,但由於只是螢幕空間,反射方向就被侷限到跟視線相同的方向。在即將發布的klayge 4.2中,這個功能被擴充套件到了支援多個方向,成為了實時的全方向非平面反射。(雖然7月底就已經實現了這個功能,但到現在才有時間整理出demo…)

多方向反射必然需要往不同方向渲染多次場景,而且每一次都必須是帶lighting和shading的效果。因此,deferred rendering layer引入了multi-viewport的功能,只要定義幾個不同的viewport,就能同時得到不同視點的場景渲染結果,包括當前幀的rgb/depth,和上一幀的rgb/depth。這個功能不但能用在反射,還能用於分屏顯示、多視角顯示、縮圖等遊戲常見的情景。這樣相當於把deferred rendering流水線延展了好幾倍,好在一般來說解析度可以降下來,最終的開銷並沒有太大。

在這裡,理論上可以和傳統做實時多方向反射的方法一樣,從物體中心渲6次,建立乙個cubemap,並索引反射顏色。但因為有了ssr,順著視線方向的部分就不需要渲染了。同時因為對最終效果貢獻最大的是逆著實現的方向,所以這裡只需要從物體中心,沿著視線相反的方向渲一次(稱為back side camera,從視點出發的稱為front side camera)。接著用ssr的跟蹤方法,就能得到相當不錯的效果。有了multi-viewport的幫助,這個過程變得相當簡單靈活。至於沒有跟蹤到的pixel,就直接取環境cubemap的顏色。示意圖如下:

至於back side camera的選擇,偏球形的物體可以選擇從物體中心,沿著視線相反的方向。對於偏平面的物體,可以像傳統做反射的方法那樣,把視點和視線方向求乙個鏡面反射生成新camera。在實際中,這個方法足夠對付大量的室外場景了。

因為是ssr跟蹤得到的pixel,而不是簡單的cubemap對映,恐龍在茶壺上的反射形變更接近真實。同時注意壺嘴和蓋子的把還能在茶壺上產生self-reflection。有了這麼一套框架,大多數形狀的物體反射都能得到較好的解決。

android P 平板預設方向修改 MTK平台

現象 驅動除錯好基本功能後,由系統調整方向。目前機器預設為豎屏模式。但是開機logo 動畫,顯示介面都是倒置180度。1.首先修改預設的方向 kernel 4.4 arch arm configs defconfig kernel 4.4 arch arm configs debug defconf...

linux 非實時性

linux是非實時作業系統,雖然支援rt排程策略,但是並非是硬實時系統。linux非實時性主要表現在下面幾個方面 1.虛擬記憶體管理,導致實際物理記憶體分配的滯後性 2.排程策略問題,實時排程策略不能立即搶占,一般要在中斷返回,系統呼叫返回使用者空間時 通過檢查need resched標記,進行重新...

實時系統和非實時系統的區別

嵌入式作業系統分為實時系統和非實時系統兩類,常見的實時系統有 threadx freertos ucos 常見的非實時系統有 windows linux android。兩類作業系統的主要區別在於任務排程處理方式不同,常用的任務排程方式有兩種 基於任務優先順序的任務排程方式和基於時間片的任務排程方式...