24 個著色器,以及與它們配套的滑桿
本週,效果畫廊大了不少。著色器層是位於 13 個基準測試場景下方的全螢幕片段著色器,原本只有 5 個場景,現在增加到 24 個,而且每個場景都有一兩個滑桿,可以拖曳它們改變你看到的畫面。
新增內容
新增了 21 個場景。低懸的太陽照著開闊海面。月光下的海幾乎一動不動,因此在 OLED 上長時間執行時,它反而是這裡最溫和的選擇。還有陰雲、布滿隕坑的異星,地平線上懸著一顆帶環巨星;粉紅色異星峽谷;向觀者傾斜的螺旋星系;星軌;曲速隧道;圍繞繩結旋轉的綠色代碼雨;攝影棚燈光下的鍍鉻分形球體;黑白萬花筒;被活躍電流環繞的玻璃心;以及其他幾個場景。
為了騰出位置,兩個舊場景 Synthwave Horizon 和 Neonwave Sunrise 退役了。
磁磚也變了。在此之前,每塊著色器磁磚都顯示一張手繪的場景草圖,而草圖並不總是準確。現在磁磚就是場景本身:著色器會在畫面第一次靠近螢幕時把一格畫進去,游標停留後則會即時播放。
滑桿
開啟任意著色器,控制列裡就能看到以前沒有的一兩個滑桿,它們位於負載、速度和畫質旁邊。
如果場景作者留下了一個決定整體形狀的數字,滑桿就控制那個數字。海面有浪高和破浪,陰雲有雲量和光照,星系有旋臂扭轉,星軌有星軌數量,曲速有光帶數量。融色保留了作者自己的種子——程式碼註解鼓勵你修改它,而任何數值都會產生不同的一組形狀。Demoparty 的滑桿則以每分鐘節拍數表示節奏。
有些場景內部沒有任何東西能移動而不破壞其他部分。對於這些場景,我們改為在場景外部套用色相和縮放。每個滑桿都從作者設定的位置開始,因此第一次看到的始終是作者製作出來的那個場景。
三個場景播放前會先詢問
我們讓每個著色器都通過閃爍測試。測試會測量螢幕不同區域隨時間發生的亮度波動,採用光敏性癲癇指導中計算閃爍的方式,而不是憑場景看起來有多忙來判斷。兩個場景未通過:Flux Core 和 Demoparty。基準測試中的爆炸恆星 Hypernova 一直被標為閃爍場景,因此也加入了它們。
現在這三個場景都會先詢問;在你同意之前,兩個著色器的磁磚在游標停留時也會保持靜止。勾選「在此裝置上不再詢問」,之後就不會再看到這個問題。選擇返回,則不會記住任何內容,下次仍會詢問。其他場景都會直接開啟,包括 Static Field。它看起來可能是頁面上最激烈的一個,但因為雜訊在任何足夠大的螢幕區域上都會平均掉,所以測試輕鬆通過。
它們是怎樣選出來的
這些著色器由其他人編寫,所以我們先看授權。Shadertoy 的預設條款不允許商業使用,而本站帶有廣告,因此只有明確授予公有領域或 MIT 權利的作品才算符合條件。新場景中有 19 個屬於公有領域,2 個採用 MIT。我們閱讀作者程式碼中的授權聲明,然後逐個檢查著色器是否借用了其他地方的程式碼,因為混合作品的自由授權並不能讓被借用的部分也變得自由。幾款外觀很好的候選者沒有通過這一步。所有作者都列在效果頁面的表格中。
還有一個場景因為另一個原因被排除:一片漂亮的日落海面,在我們的參考 Mac 上以 1080p 執行時只有 29 fps。放到手機上,它會更像幻燈片。
在手機上
最重的著色器在高密度螢幕上會以較低解析度開啟,因此能以更平滑的狀態開始。它們不會低於每個 CSS 像素對應一個裝置像素;如果硬體跟得上,畫質控制可以把解析度調回去,fps 讀數也是即時的,你會知道目前狀態。所有這些都不會影響基準測試:著色器從不計分,而計分工作負載自 2.2.0 起一直凍結。
所有內容免費,直接在瀏覽器中執行,無需帳號。只有你主動開啟時,著色器才會載入和播放。完整更新說明見更新記錄。