ShaderGraph實(shí)戰(zhàn):程序化生成動(dòng)態(tài)巖石行星材質(zhì)
1. 項(xiàng)目概述從ShaderGraph到一顆巖石星球最近在搗鼓Unity的ShaderGraph想做個(gè)不那么“玩具”的玩意兒于是就有了這個(gè)制作巖石行星的想法。這玩意兒聽起來(lái)挺唬人好像得是AAA大作里才有的東西但實(shí)際上用ShaderGraph這種可視化工具從零開始搭建一個(gè)帶地形、大氣、甚至云層效果的星球整個(gè)過程充滿了邏輯拆解的樂趣遠(yuǎn)沒有想象中那么復(fù)雜。它本質(zhì)上是一個(gè)基于球體的、通過多層噪聲疊加來(lái)模擬復(fù)雜地表形態(tài)并輔以光照和后期效果的著色器項(xiàng)目。如果你對(duì)Unity的ShaderGraph有基礎(chǔ)了解想深入理解程序化紋理生成、噪聲應(yīng)用以及復(fù)雜材質(zhì)效果的組合邏輯那么這個(gè)項(xiàng)目會(huì)是一個(gè)絕佳的實(shí)戰(zhàn)案例。它能幫你把那些分散的節(jié)點(diǎn)知識(shí)串聯(lián)成一個(gè)有明確視覺目標(biāo)的完整管線。最終你將得到的不是一個(gè)靜態(tài)的貼圖球而是一個(gè)動(dòng)態(tài)的、可實(shí)時(shí)調(diào)整參數(shù)的星球材質(zhì)。你可以隨時(shí)改變山脈的高度、海洋的深度、雪線的高度甚至大氣的厚度和顏色親眼看著星球地貌在你指尖演化。這對(duì)于獨(dú)立開發(fā)者制作太空游戲背景、科幻場(chǎng)景概念驗(yàn)證或者單純想做出一個(gè)炫酷的個(gè)人作品集展示都極具價(jià)值。整個(gè)過程我們會(huì)避開那些深?yuàn)W的數(shù)學(xué)公式專注于用ShaderGraph的節(jié)點(diǎn)去“畫”出我們想要的每一個(gè)細(xì)節(jié)。2. 核心思路與節(jié)點(diǎn)藍(lán)圖設(shè)計(jì)制作一個(gè)逼真的巖石行星不能靠蠻力堆貼圖得有一套清晰的“施工藍(lán)圖”。我的核心思路是分層構(gòu)建逐級(jí)細(xì)化。想象一下造物主創(chuàng)造星球先有個(gè)球體幾何基礎(chǔ)然后用地殼板塊運(yùn)動(dòng)弄出大陸和海洋的輪廓基礎(chǔ)噪聲層接著在陸地上雕刻出山脈、丘陵、峽谷多頻次噪聲疊加最后撒上植被、積雪、沙石基于高度的顏色/紋理混合。在ShaderGraph里我們完全可以用節(jié)點(diǎn)網(wǎng)絡(luò)來(lái)模擬這個(gè)過程。整個(gè)著色器的輸入是模型表面的UV坐標(biāo)和位置信息輸出是最終的顏色。藍(lán)圖可以分解為以下幾個(gè)關(guān)鍵階段基礎(chǔ)地形生成這是核心。我們將使用Simplex Noise在ShaderGraph里通常是Gradient Noise作為基礎(chǔ)。單一噪聲太平滑我們需要用“分形布朗運(yùn)動(dòng)”的思路即用多個(gè)不同頻率Frequency和振幅Amplitude的噪聲疊加。高頻噪聲決定細(xì)節(jié)小石頭、裂縫低頻噪聲決定大形貌大陸板塊、巨型山脈。通過調(diào)節(jié)這些層的權(quán)重我們可以得到從溫和丘陵到險(xiǎn)峻山峰的各種地形。高度圖與顏色映射上一步我們得到了一個(gè)代表地形高度的灰度值0到1。接下來(lái)我們需要一個(gè)“色卡”根據(jù)高度值來(lái)分配顏色。例如高度最低的區(qū)域比如值0-0.2是深海用深藍(lán)色。稍高一點(diǎn)0.2-0.25是淺海/大陸架用淺藍(lán)色。陸地部分0.25-0.6是巖石和土壤用棕色、灰色漸變。高海拔0.6-0.8可以考慮加入淺灰色模擬裸露巖石。最高處0.8-1.0用白色模擬積雪。 在ShaderGraph中這通常通過一個(gè)Color Ramp節(jié)點(diǎn)來(lái)實(shí)現(xiàn)你可以自由拖動(dòng)色標(biāo)來(lái)定義這個(gè)映射關(guān)系這是調(diào)整星球外觀最直觀、最有效的手段之一。光照與法線增強(qiáng)沒有光照的星球只是一個(gè)彩色球。我們需要讓地形有立體感。這里有兩個(gè)關(guān)鍵生成法線貼圖ShaderGraph提供了Normal From Height節(jié)點(diǎn)可以直接根據(jù)我們計(jì)算出的高度圖哪怕是程序化實(shí)時(shí)生成的來(lái)計(jì)算出對(duì)應(yīng)的法線貼圖。這能讓光照根據(jù)地形起伏產(chǎn)生正確的明暗變化瞬間讓星球“站”起來(lái)。大氣散射模擬這是讓星球看起來(lái)“真實(shí)”而非“塑料”的靈魂一筆。簡(jiǎn)單來(lái)說我們可以在星球邊緣視角方向與表面法線接近垂直的地方疊加上一層漸變的顏色通常是淡藍(lán)色或根據(jù)恒星顏色來(lái)定模擬光線穿過大氣層的效果。這可以通過計(jì)算視角方向與表面法線的點(diǎn)積來(lái)實(shí)現(xiàn)值越小邊緣大氣效果越強(qiáng)。云層效果可選但推薦一個(gè)靜止的星球略顯沉悶。加上一層緩慢飄動(dòng)的云層能極大增加生動(dòng)感。云層可以作為一個(gè)獨(dú)立的、半透明的層來(lái)處理使用另一套噪聲通常是更柔和、棉絮狀的噪聲比如Perlin Noise生成云圖并讓其根據(jù)時(shí)間緩慢平移和形變疊加在星球表面顏色之上。注意在開始連接節(jié)點(diǎn)前強(qiáng)烈建議先在紙上或繪圖軟件里畫出這個(gè)節(jié)點(diǎn)流程的草圖。明確數(shù)據(jù)如高度值、顏色、法線的流向這能幫你在大腦中理清邏輯避免在復(fù)雜的節(jié)點(diǎn)網(wǎng)絡(luò)中迷失。我的習(xí)慣是先搭建主干高度生成-顏色映射再添加分支法線、大氣最后做特效云層。每個(gè)階段完成后都預(yù)覽一下中間結(jié)果確保每一步都符合預(yù)期。3. 核心節(jié)點(diǎn)網(wǎng)絡(luò)搭建與參數(shù)詳解現(xiàn)在我們進(jìn)入ShaderGraph編輯器開始真正的“搭積木”。我會(huì)按照藍(lán)圖分模塊講解關(guān)鍵節(jié)點(diǎn)的連接和參數(shù)意義。3.1 構(gòu)建分形噪聲地形生成器這是最核心的模塊。我們創(chuàng)建一個(gè)Subgraph子圖是個(gè)好主意將其命名為“FractalTerrainHeight”這樣主圖會(huì)更清晰。輸入我們需要一個(gè)Vector2類型的UV輸入命名為“BaseUV”。通常我們會(huì)使用物體的Position節(jié)點(diǎn)輸出經(jīng)過轉(zhuǎn)換后得到球面UV但為了簡(jiǎn)單起見初期可以直接使用UV節(jié)點(diǎn)假設(shè)模型UV已展開。更高級(jí)的做法是使用Triplanar Mapping三平面映射來(lái)避免球體極點(diǎn)處的紋理拉伸但入門階段用UV即可。第一層噪聲添加一個(gè)Gradient Noise節(jié)點(diǎn)。將其UV端口連接到BaseUV。Scale這是頻率。設(shè)為較低的值如5。這決定了大陸板塊的尺度。輸出得到一個(gè)介于0-1之間的灰度值我們稱其為noise_low_freq。第二層噪聲細(xì)節(jié)層再添加一個(gè)Gradient Noise節(jié)點(diǎn)。UV同樣連接BaseUV。Scale設(shè)為較高的值如30。這用于生成中等規(guī)模的山脈丘陵。我們需要降低它的影響力所以將其輸出連接到一個(gè)Multiply節(jié)點(diǎn)另一個(gè)乘數(shù)輸入設(shè)為0.3這個(gè)值叫振幅。得到noise_mid_freq。第三層噪聲高頻細(xì)節(jié)復(fù)制第二個(gè)噪聲節(jié)點(diǎn)。Scale設(shè)為更高的值如100。用于模擬巖石表面的微小凹凸。用Multiply節(jié)點(diǎn)將其振幅降得更低比如0.1。得到noise_high_freq。疊加使用Add節(jié)點(diǎn)將noise_low_freq,noise_mid_freq,noise_high_freq依次相加。此時(shí)總和可能超過1我們需要用Clamp節(jié)點(diǎn)或Saturate節(jié)點(diǎn)將其限制在0-1范圍內(nèi)。這個(gè)最終輸出就是我們的“高度值”Height。實(shí)操心得噪聲的Scale和振幅參數(shù)需要反復(fù)調(diào)試。一個(gè)技巧是頻率翻倍振幅減半。例如如果你的基礎(chǔ)層Scale5振幅1那么下一層可以設(shè)為Scale10振幅0.5再下一層Scale20振幅0.25。這樣疊加出來(lái)的分形效果最自然。當(dāng)然藝術(shù)創(chuàng)作不必拘泥多調(diào)調(diào)滑塊觀察預(yù)覽球體的變化找到你覺得最像“行星”的那組參數(shù)。3.2 配置顏色漸變與表面紋理得到高度值后我們將其輸入到一個(gè)Color Ramp節(jié)點(diǎn)。創(chuàng)建色標(biāo)在Color Ramp的屬性欄里你會(huì)看到一個(gè)漸變條。點(diǎn)擊下方可以添加色標(biāo)。根據(jù)之前的設(shè)計(jì)從左0到右1大致添加5個(gè)色標(biāo)。位置0.0深藍(lán)色RGB約 0, 0.1, 0.3。位置0.2淺藍(lán)色RGB約 0.2, 0.5, 0.8。位置0.25沙灘黃/淺褐色RGB約 0.8, 0.7, 0.5。位置0.6巖石灰/深褐色RGB約 0.4, 0.35, 0.3。位置0.8淺灰色RGB約 0.7, 0.7, 0.7。位置1.0白色RGB 1,1,1。平滑過渡色標(biāo)之間默認(rèn)是線性過渡這有時(shí)會(huì)顯得生硬。你可以選擇色標(biāo)在屬性里將其模式改為“Smooth”讓顏色過渡更自然模擬不同地質(zhì)區(qū)域之間的交融。輸出Color Ramp節(jié)點(diǎn)的輸出直接連接到主輸出節(jié)點(diǎn)的Base Color。此時(shí)你應(yīng)該能看到一個(gè)有著基本海洋陸地分布的彩色球體了。3.3 生成動(dòng)態(tài)法線與光照集成僅有顏色是平的我們需要立體感。生成法線在ShaderGraph中搜索Normal From Height節(jié)點(diǎn)。將我們之前計(jì)算出的“高度值”即分形噪聲疊加并Clamp后的那個(gè)值連接到其Height輸入。Strength這是一個(gè)關(guān)鍵參數(shù)控制法線強(qiáng)度的“強(qiáng)度”。值越大地形起伏在光照下顯得越陡峭。對(duì)于行星尺度一個(gè)較小的值如0.02到0.1通常就夠了太大的話會(huì)顯得表面過于崎嶇像小行星。Sampling保持默認(rèn)的Central Difference即可。輸出法線將Normal From Height節(jié)點(diǎn)的輸出連接到主輸出節(jié)點(diǎn)的Normal端口。光照模型在Master Stack主堆棧的Graph Settings中確保你的Material設(shè)置為“Lit”。這樣它才會(huì)響應(yīng)場(chǎng)景中的燈光。你可以放一個(gè)Directional Light平行光來(lái)模擬太陽(yáng)調(diào)整光的角度觀察星球表面的明暗變化是否隨著地形起伏而自然。注意事項(xiàng)Normal From Height節(jié)點(diǎn)是根據(jù)高度差來(lái)計(jì)算法線的如果你的高度圖變化非常劇烈高頻噪聲權(quán)重過大生成的法線可能會(huì)很“碎”導(dǎo)致光照閃爍。如果遇到這種情況可以嘗試先對(duì)高度值進(jìn)行一次輕微的Blur模糊處理或者降低高頻噪聲的振幅再輸入給法線生成節(jié)點(diǎn)。3.4 實(shí)現(xiàn)簡(jiǎn)易大氣散射效果大氣效果是點(diǎn)睛之筆能讓星球瞬間融入太空環(huán)境。計(jì)算邊緣因子我們需要知道當(dāng)前像素位于星球的“邊緣”還是“正面”。獲取View Direction視圖方向和Normal我們剛生成的法線節(jié)點(diǎn)。使用Dot Product點(diǎn)積節(jié)點(diǎn)連接兩者。點(diǎn)積結(jié)果在1正面法線與視線同向到-1背面之間變化在邊緣區(qū)域接近0。為了得到一個(gè)0中心到1邊緣的值我們可以用公式(1 - dot(N, V)) * 0.5。更常用的一個(gè)技巧是使用Fresnel Effect節(jié)點(diǎn)它本質(zhì)上就是計(jì)算1 - dot(Normal, View Dir)并提供了指數(shù)Power參數(shù)來(lái)控制邊緣效果的衰減范圍。用Fresnel節(jié)點(diǎn)更方便將指數(shù)設(shè)為3-5值越大邊緣光暈越細(xì)。創(chuàng)建大氣顏色用一個(gè)Color節(jié)點(diǎn)定義大氣顏色通常是淡藍(lán)0.4, 0.6, 1.0或根據(jù)恒星顏色設(shè)定為橙紅色。混合將計(jì)算出的邊緣因子Fresnel輸出作為Alpha使用Lerp線性插值節(jié)點(diǎn)在A端口輸入星球原本的Base Color在B端口輸入大氣顏色。這樣在星球中心顯示原本顏色在邊緣逐漸混合進(jìn)大氣色。輸出將Lerp的結(jié)果連接到最終的Base Color取代之前直接連Color Ramp的線路。4. 云層動(dòng)畫與細(xì)節(jié)深化技巧一個(gè)靜態(tài)的星球已經(jīng)不錯(cuò)了但動(dòng)態(tài)的云層能讓它“活”過來(lái)。4.1 創(chuàng)建動(dòng)態(tài)云層遮罩云噪聲使用Simple Noise或Voronoi節(jié)點(diǎn)模式設(shè)為Cells來(lái)生成云朵狀圖案。Simple Noise的Scale調(diào)大如50看起來(lái)更綿軟Voronoi的Scale調(diào)小如10細(xì)胞狀結(jié)構(gòu)經(jīng)過處理可以模擬破碎的云層。動(dòng)畫要讓云動(dòng)起來(lái)關(guān)鍵是讓噪聲的UV隨時(shí)間偏移。創(chuàng)建一個(gè)Time節(jié)點(diǎn)輸出其Sine Time或直接使用Time乘以一個(gè)很小的速度系數(shù)如0.1得到一個(gè)二維的偏移向量Vector2。將這個(gè)偏移向量與BaseUV相加再輸入給噪聲節(jié)點(diǎn)的UV。這樣噪聲圖案就會(huì)緩慢移動(dòng)。閾值化原始的噪聲是平滑的灰度圖。我們需要把它變成“非黑即白”的云朵形狀。使用Remap節(jié)點(diǎn)或Step節(jié)點(diǎn)。例如將噪聲輸出連接到一個(gè)Step節(jié)點(diǎn)的Edge端口Step的In端口給一個(gè)固定值如0.5。這樣噪聲值大于0.5的地方輸出1白色云小于0.5的地方輸出0黑色透明。為了得到更柔和的云邊緣可以用Smoothstep代替Step并定義兩個(gè)閾值如0.4和0.6。多層云只使用一層云會(huì)顯得單調(diào)??梢詣?chuàng)建兩套不同的噪聲不同Scale不同移動(dòng)速度用Multiply或Screen混合模式疊加在一起這樣云層會(huì)更豐富有遠(yuǎn)近層次感。4.2 云層與星球表面的合成混合模式云層應(yīng)該是半透明且疊加在星球表面的。我們將處理好的云遮罩一個(gè)0-1的值作為Alpha連接到主輸出節(jié)點(diǎn)的Alpha端口如果你的渲染管線支持透明度。同時(shí)將云的顏色通常是白色或淺灰色與星球Base Color進(jìn)行混合。更真實(shí)的混合簡(jiǎn)單的Alpha混合可能讓云看起來(lái)像貼在表面。一個(gè)更高級(jí)的技巧是將云遮罩也作為一個(gè)輕微的高度擾動(dòng)加到星球本身的高度計(jì)算中在顏色映射之前這樣云層所在區(qū)域的地形會(huì)有微妙的起伏感模擬云層投射的陰影或體積感這需要更復(fù)雜的節(jié)點(diǎn)設(shè)計(jì)屬于進(jìn)階技巧。性能考量云層動(dòng)畫和額外的噪聲計(jì)算會(huì)增加著色器負(fù)擔(dān)。在移動(dòng)平臺(tái)或需要大量實(shí)例化的場(chǎng)景中可以考慮將云層效果作為一個(gè)可開關(guān)的選項(xiàng)使用Branch節(jié)點(diǎn)或Keyword或者使用更簡(jiǎn)化的云紋理平鋪。4.3 材質(zhì)參數(shù)化與實(shí)時(shí)調(diào)整ShaderGraph最大的優(yōu)勢(shì)之一就是可以輕松暴露參數(shù)到材質(zhì)面板。選中任何節(jié)點(diǎn)的參數(shù)如噪聲的Scale、Color Ramp的色標(biāo)位置、大氣顏色的RGB值右鍵選擇“Convert to Property”。這樣它就會(huì)出現(xiàn)在Blackboard黑板上并可以在材質(zhì)實(shí)例中進(jìn)行調(diào)節(jié)。我強(qiáng)烈建議暴露以下參數(shù)_TerrainFrequency(Vector1): 控制基礎(chǔ)噪聲頻率調(diào)節(jié)大陸板塊大小。_TerrainAmplitude(Vector1): 控制地形整體起伏強(qiáng)度。_SnowHeight(Vector1): 控制Color Ramp中白色積雪開始的閾值位置。_OceanDepth(Vector1): 控制深海顏色的范圍。_AtmosphereColor(Color): 大氣層顏色。_AtmospherePower(Vector1): 控制Fresnel效果的指數(shù)調(diào)節(jié)大氣邊緣的寬度。_CloudSpeed(Vector1): 云層移動(dòng)速度。_CloudCoverage(Vector1): 通過調(diào)節(jié)Step/Smoothstep的閾值來(lái)控制云的多少。這樣你無(wú)需修改著色器資源只需在場(chǎng)景中選中材質(zhì)球拖動(dòng)這些滑塊就能實(shí)時(shí)看到星球地貌、氣候的演變這個(gè)過程極具成就感也是進(jìn)行藝術(shù)導(dǎo)演的絕佳方式。5. 常見問題排查與性能優(yōu)化指南在實(shí)際操作中你肯定會(huì)遇到一些預(yù)期之外的效果。這里記錄了幾個(gè)我踩過的坑和解決方案。5.1 視覺問題排查表問題現(xiàn)象可能原因排查與解決思路星球表面全是條紋或規(guī)則圖案使用的噪聲Scale值過低或UV采樣出了問題。檢查噪聲節(jié)點(diǎn)的Scale值嘗試提高到10以上。確保UV輸入正確如果是用Position嘗試先歸一化??梢蕴砑右粋€(gè)Tiling And Offset節(jié)點(diǎn)在噪聲UV前打亂一下平鋪。地形看起來(lái)像“泡泡”或過于平滑噪聲層數(shù)不夠或高頻細(xì)節(jié)層的振幅太低。增加噪聲疊加層數(shù)4-5層。提高高頻噪聲層的振幅但不要超過低頻層。檢查Normal From Height的Strength是否過小。顏色過渡生硬有明顯的色圈Color Ramp的色標(biāo)之間是線性過渡且色標(biāo)位置過于集中。將Color Ramp中關(guān)鍵色標(biāo)如海洋到陸地的混合模式改為“Smooth”。適當(dāng)拉開色標(biāo)之間的距離給過渡留出空間。也可以考慮在高度值輸入Color Ramp前用Power節(jié)點(diǎn)對(duì)其進(jìn)行非線性重塑壓縮或拉伸某些高度區(qū)間的范圍。大氣效果在整個(gè)球體上都可見太假Fresnel節(jié)點(diǎn)的Power值太小或計(jì)算方式有誤。增大Fresnel的Power值嘗試5-8。確保計(jì)算Fresnel所用的Normal是經(jīng)過法線貼圖擾動(dòng)后的最終法線而不是頂點(diǎn)的原始法線。云層移動(dòng)時(shí)出現(xiàn)閃爍或抖動(dòng)用于云動(dòng)畫的Time節(jié)點(diǎn)增量過大或UV偏移計(jì)算精度問題。降低云層移動(dòng)速度系數(shù)。確保Time節(jié)點(diǎn)輸出的是平滑的時(shí)間如Sine Time。對(duì)于非常慢的移動(dòng)可以使用Time節(jié)點(diǎn)的Time輸出乘以一個(gè)極小的系數(shù)如0.01。極點(diǎn)處紋理嚴(yán)重拉伸或扭曲使用了標(biāo)準(zhǔn)的UV映射而球體模型在極點(diǎn)處的UV是匯聚的。這是球面映射的固有難題。解決方案是使用Triplanar Mapping。為你的噪聲計(jì)算創(chuàng)建三套基于世界坐標(biāo)X、Y、Z平面的投影然后根據(jù)頂點(diǎn)法線進(jìn)行混合。ShaderGraph有現(xiàn)成的Triplanar節(jié)點(diǎn)搜索并應(yīng)用它來(lái)代替簡(jiǎn)單的UV輸入能極大改善極地區(qū)域的質(zhì)量。5.2 性能優(yōu)化要點(diǎn)噪聲節(jié)點(diǎn)數(shù)量每一個(gè)Gradient/Simple Noise節(jié)點(diǎn)都有性能開銷。評(píng)估你的地形需要多少細(xì)節(jié)。對(duì)于遠(yuǎn)景星球3層噪聲可能就夠了對(duì)于需要拉近查看的星球可以考慮4-5層。過多的層數(shù)如7-8層收益遞減但開銷線性增長(zhǎng)。復(fù)雜的顏色漸變Color Ramp節(jié)點(diǎn)色標(biāo)數(shù)量過多也會(huì)增加計(jì)算量。通常5-7個(gè)色標(biāo)足以模擬豐富的地表。避免使用超過10個(gè)色標(biāo)。云層效果動(dòng)態(tài)云層尤其是多層混合的云是性能消耗大戶。如果目標(biāo)是移動(dòng)端考慮使用靜態(tài)的云層貼圖或者大幅簡(jiǎn)化云層噪聲的復(fù)雜度減少一層提高Step閾值減少云量。使用Subgraph將復(fù)雜的功能模塊如分形地形生成器、大氣計(jì)算封裝成Subgraph。這不僅使主圖整潔更重要的是Subgraph在內(nèi)部會(huì)被優(yōu)化和復(fù)用。如果同一套計(jì)算邏輯在主圖中被多次調(diào)用例如地形高度被用于顏色和法線將其放在Subgraph里能避免重復(fù)計(jì)算。精度選擇在Graph Settings中可以考慮將Precision從Full浮點(diǎn)切換到Half半精度。對(duì)于顏色、UV偏移等計(jì)算半精度通常足夠且能提升性能尤其是在移動(dòng)平臺(tái)上。但對(duì)于高度計(jì)算這種需要較高精度的可能仍需保持浮點(diǎn)。5.3 從星球到星系思路拓展完成一個(gè)基礎(chǔ)星球后你可以以此為模塊進(jìn)行更多拓展多星球系統(tǒng)創(chuàng)建材質(zhì)變體調(diào)整參數(shù)地形頻率、主色調(diào)、大氣顏色快速生成風(fēng)格迥異的巖石行星、冰巨星、沙漠星球。動(dòng)態(tài)地貌通過腳本控制材質(zhì)參數(shù)可以實(shí)現(xiàn)“星球 terraforming”的動(dòng)畫效果例如雪線緩緩下降、海洋面積擴(kuò)大。星環(huán)效果使用一個(gè)獨(dú)立的、帶有Alpha裁剪的平面著色器配合噪聲生成星環(huán)的顆粒感將其放置在星球周圍。背景星空使用一個(gè)簡(jiǎn)單的CubeMap或由程序化噪聲生成的星空球罩作為場(chǎng)景的背景。這個(gè)項(xiàng)目的魅力在于它像一套樂高。你掌握了基礎(chǔ)模塊噪聲、顏色映射、光照、混合的搭建方法后就可以自由組合創(chuàng)造出屬于你自己的浩瀚星海。每一次參數(shù)調(diào)整都是對(duì)虛擬世界的一次地質(zhì)改造這種即時(shí)的反饋和創(chuàng)造感正是圖形編程最吸引人的地方。

相關(guān)新聞

FGO-py終極指南:如何用Python自動(dòng)化你的Fate/Grand Order游戲體驗(yàn)

FGO-py終極指南:如何用Python自動(dòng)化你的Fate/Grand Order游戲體驗(yàn)

FGO-py終極指南:如何用Python自動(dòng)化你的Fate/Grand Order游戲體驗(yàn) 【免費(fèi)下載鏈接】FGO-py 自動(dòng)爬塔! 自動(dòng)每周任務(wù)! 全自動(dòng)免配置跨平臺(tái)的Fate/Grand Order助手.啟動(dòng)腳本,上床睡覺,養(yǎng)肝護(hù)發(fā),滿加成圣誕了解一下? 項(xiàng)目地址: https://gitcode.com/GitHub_Trending…

2026/8/2 19:47:03 閱讀更多
Unity TileMap 2D地圖開發(fā)全解析:從基礎(chǔ)到Rule Tile實(shí)戰(zhàn)

Unity TileMap 2D地圖開發(fā)全解析:從基礎(chǔ)到Rule Tile實(shí)戰(zhàn)

1. 項(xiàng)目概述:為什么TileMap是2D地圖的基石 如果你正在用Unity做2D游戲,無(wú)論是橫版過關(guān)、RPG、策略戰(zhàn)棋還是模擬經(jīng)營(yíng),地圖構(gòu)建都是繞不開的第一道坎。幾年前,你可能還在手動(dòng)擺放Sprite,或者寫腳本動(dòng)態(tài)生成,費(fèi)…

2026/8/2 19:47:03 閱讀更多
GPT-5.6技術(shù)前瞻:雙向理解、長(zhǎng)上下文與代碼生成革命

GPT-5.6技術(shù)前瞻:雙向理解、長(zhǎng)上下文與代碼生成革命

1. 項(xiàng)目概述:GPT-5.6傳聞的深度拆解最近幾天,AI圈子里關(guān)于GPT-5.6的討論熱度突然飆升,各種“實(shí)測(cè)截圖”、“內(nèi)部消息”和“本周四發(fā)布”的傳聞滿天飛。作為一名長(zhǎng)期關(guān)注大模型動(dòng)態(tài)的從業(yè)者,我第一反應(yīng)是保持審慎。OpenAI的發(fā)布節(jié)奏…

2026/8/2 23:47:47 閱讀更多
單片機(jī)計(jì)算機(jī)畢設(shè)之基于藍(lán)牙模塊與 S8550 驅(qū)動(dòng)的多路輸出控制硬件系統(tǒng)開發(fā) 基于單片機(jī)藍(lán)牙通信的小型電氣設(shè)備無(wú)線分路控制器設(shè)計(jì)(020801)

單片機(jī)計(jì)算機(jī)畢設(shè)之基于藍(lán)牙模塊與 S8550 驅(qū)動(dòng)的多路輸出控制硬件系統(tǒng)開發(fā) 基于單片機(jī)藍(lán)牙通信的小型電氣設(shè)備無(wú)線分路控制器設(shè)計(jì)(020801)

博主介紹:??碼農(nóng)一枚 ,專注于大學(xué)生項(xiàng)目實(shí)戰(zhàn)開發(fā)、講解和畢業(yè)🚢文撰寫修改等。全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于嵌入式單片機(jī),Java、小程序技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn) ??…

2026/8/2 23:47:47 閱讀更多
【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)傳感器的水體溫濁實(shí)時(shí)檢測(cè)裝置開發(fā) 基于 STC89C52 的水質(zhì)閾值可調(diào)報(bào)警控制系統(tǒng)設(shè)計(jì)(018101)

【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)傳感器的水體溫濁實(shí)時(shí)檢測(cè)裝置開發(fā) 基于 STC89C52 的水質(zhì)閾值可調(diào)報(bào)警控制系統(tǒng)設(shè)計(jì)(018101)

博主介紹:??碼農(nóng)一枚 ,專注于大學(xué)生項(xiàng)目實(shí)戰(zhàn)開發(fā)、講解和畢業(yè)🚢文撰寫修改等。全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于嵌入式單片機(jī),Java、小程序技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn) ??…

2026/8/2 23:47:47 閱讀更多
Obsidian CSS定制化架構(gòu):構(gòu)建企業(yè)級(jí)知識(shí)管理系統(tǒng)界面

Obsidian CSS定制化架構(gòu):構(gòu)建企業(yè)級(jí)知識(shí)管理系統(tǒng)界面

Obsidian CSS定制化架構(gòu):構(gòu)建企業(yè)級(jí)知識(shí)管理系統(tǒng)界面 【免費(fèi)下載鏈接】awesome-obsidian 🕶? Awesome stuff for Obsidian 項(xiàng)目地址: https://gitcode.com/gh_mirrors/aw/awesome-obsidian Obsidian作為現(xiàn)代知識(shí)管理工具的核心優(yōu)勢(shì)在于其高度可擴(kuò)…

2026/8/2 23:47:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒有這么容易過! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒有這么容易過! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多