优化汽车仪表板以实现高效渲染
優化汽車儀表板以實現高效渲染
Optimizing automotive dashboards for efficient rendering
數字顯示屏似乎已經占領了全世界,最早出現在20世紀80年代。如今,駕駛者希望進入一輛新車,發現一個設計良好、功能完善的數字儀表盤就在方向盤旁邊。與傳統的表盤相比,數字儀表盤以前所未有的視覺深度和廣泛的顏色閃耀著美麗的光芒。可以根據駕駛員的個人喜好進行定制,并且還具有自適應性和動態性,精確顯示駕駛員在任何給定時刻需要查看的信息。
就像其數字顯示一樣,汽車儀表板需要圖形處理單元(gpu)來驅動。然而,現實情況是,汽車儀表盤通常在幾何方面設計得很差,而表盤——速度表或轉速表——通常是最嚴重的違規者。不是優化其發展的精度,準確性和清晰度,表盤經常開發使用難以置信的密集網格,以產生所需的水平的圓度。這種圓度——雖然在美學上對任何儀表盤都很重要——卻是值得關注的一個重要原因。這是由于難以置信的稠密網格導致汽車中使用的嵌入式gpu性能不佳。
無論是開轎車、豪華SUV還是在路上跑得最快,大家最不希望的就是性能不佳。即使是儀表板也無法擺脫黯淡的結果。為了解決這個問題,GPU很可能是過度指定的,需要的馬力遠遠超過了如果撥號盤在一開始就設計合理的話所需要的馬力。這就引出了一個至關重要的問題:對此能做些什么?工程師如何優化汽車儀表板來開發高效的渲染?
解決圓度難題
許多工程師從增加幾何密度開始,在網格中添加越來越小的三角形,因為這是提高表盤圓度的最簡單方法,消除難看的鋸齒狀邊緣。
Figure 1: The round dials dilemma: efficiency or quality?
這聽起來像是個好主意。然而,通過將大量的三角形填充到只有幾個像素寬的區域中,就會出現性能低下的情況。這是因為gpu的設計方式。gpu被用來加速繪制跨越大量像素的相對較少的三角形。在這種情況下,有相反的情況,造成巨大的性能損失,這是無法克服的暴力。
更糟糕的是,表盤——在數千個三角形的重量下渲染速度會很慢——也會出現嚴重的鋸齒。因此,每個邊、縮進和斜角都將最終顯示“階梯式”像素偽影。多采樣消除混疊(MSAA)可以用來清理,但這樣做是有代價的:渲染速度比以前慢得多。其原因是使用MSAA時,必須對三角形邊界上的每個像素進行額外處理:首先,必須計算邊緣兩側的顏色,然后測試像素內的多個點(通常為兩個或四個),以查看三角形內實際有多少個點,最后,這個比例是用來把兩種顏色混合在一起的。考慮到圖像質量的提高,這種成本通常是可以接受的,但是當屏幕的某些部分看到幾乎每個像素都被三角形邊緣交叉時,很容易想象處理時間會增加多少。
為了克服這些障礙——包括對MSAA的需要——表盤可以很容易地用一個簡單的透明紋理四邊形來近似。這基本上是預先計算所有的幾何圖形和照明到GPU可以輕松處理的東西。更好的是,紋理可以很容易地調整到羽毛邊緣,以獲得額外的平滑度。
這個過程從一個非常重要的步驟開始:通過使表盤形狀更圓來減少浪費的像素數。現在有了一個簡單的透明四邊形,這減少了幾何處理單元的壓力。然而,不幸的是,也為每個像素增加了許多不必要的工作:渲染的工作方式,即使是完全透明的對象部分(對最終圖像沒有絲毫貢獻)仍需要作為正常像素進行處理。更糟糕的是,標記為透明的對象必須在已經渲染的背景上進行渲染,這實際上是其像素成本的兩倍。因此,減少屏幕上透明區域的數量至關重要。
用一個非常粗糙的圓盤代替四邊形,怎么樣?添加一些三角形來節省數百或數千像素看起來是一個不錯的折衷方案。然后只有表盤的外緣需要透明度,這樣就可以將對象一分為二。中心圓盤是不透明的(因此可以有效地渲染),而外圈保持透明。這保留了完美圓盤的圓度和邊緣的軟羽化以避免混疊,代價是必須提交兩個三角形略多于一個的對象。
左側優化的表盤看起來和運行都比右側的天真表盤要好。
汽車儀表盤的未來
自從第一個汽車數字儀表盤問世以來,gpu在性能方面取得了長足的進步。雖然還沒有達到完全依靠暴力的地步,但已經展示了如何以更微妙和更聰明的方式進行設計,才能真正發揮作用。同樣重要的是,工程師和藝術家能夠而且應該更緊密地合作,以實現這些實質性的好處。通過更巧妙和巧妙的設計,可以在不犧牲每個人想要的完美圓形刻度盤的情況下,以比設備顯示更快的速度呈現更清晰的圖像。
Figure 2: A texture projected onto an approximation of a disk. Highlighted areas are drawn transparently.
現在可以有效地渲染表盤了,但有一個問題:到目前為止,所做的只是將精度方面的工作從幾何體轉移到紋理上。紋理中需要編碼的細節越多,就需要越大,這在小型嵌入式系統中通常是不受歡迎的。
值得慶幸的是,刻度盤往往是徑向對稱的,這意味著紋理中存儲的大量數據實際上是冗余的。為什么不儲存一個小楔子,在中心復制,而不是整個刻度盤呢?這意味著對于相同的紋理大小,實際的細節密度可以高得多。
如果需要動態照明環境,可以使用法線貼圖而不是實際幾何體模擬小的曲面細節。法線貼圖的工作原理是使用表示曲面方向上的小變化的紋理,當與標準照明技術結合時,將給人一種非常詳細的曲面的印象。除了額外的紋理要求,還增加了數學運算:對于一個簡單的表盤和簡單的照明,可以高達兩倍的指令量每像素。
為什么要這么麻煩?從一個易于編寫并集成到應用程序中的撥號盤開始,更復雜,需要昂貴和先進的技術,當然,只是在每個方面都讓事情變得更糟?
乍一看,這聽起來有悖常理,但這些技術實際上帶來了極大的優越性能:從每秒渲染52幀到超過120幀!實際情況是,使用幼稚的渲染技術,絕大多數的渲染都發生在一個過度工作的GPU單元中,盡其所能地處理大量的幾何圖形,而通過一些簡單的優化技巧,基本上將此成本分攤到GPU的其部分,即紋理處理單元和算術邏輯單元(ALU)。此外,使用透明的羽毛表盤和針的邊緣意味著不再需要MSAA,這進一步降低了性能成本。
總結
以上是生活随笔為你收集整理的优化汽车仪表板以实现高效渲染的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADAS处理器集成功能安全单片机MCU
- 下一篇: 车载网络处理器带来多功能能力