GameDesign 板


LINE

這篇的圖片和範例出處是 GDQuest shader secret 的 BlurGlowDemo 連結 https://github.com/GDQuest/godot-shaders 算是讀書報告吧? 目標是用 shader language 在下面的圖片背後加上神秘的光芒 https://i.imgur.com/5RC7n1X.png [Step 1] 首先用下面的 shader 做個剪影 shader_type canvas_item; uniform vec4 glow_color : hint_color = vec4(1.0); void fragment() { vec4 color = texture(TEXTURE, UV); COLOR = vec4(glow_color.rgb, color.a); } 就把每個 UV 顏色 換成預計要的發光色 glow_color https://i.imgur.com/YG1EwuM.png [Step 2] 再來用高斯亂數雜訊 對 X 軸做模糊化 (ex: blur_scale = (4,0)) shader_type canvas_item; const float SAMPLES = 71.0; const float PI2 = 6.283185307179586476925286766559; uniform vec2 blur_scale = vec2(1, 0); float gaussian(float x) { float x_squared = x*x; float width = 1.0 / sqrt(PI2 * SAMPLES); return width * exp((x_squared / (2.0 * SAMPLES)) * -1.0); } void fragment() { vec2 scale = TEXTURE_PIXEL_SIZE * blur_scale; float weight = 0.0; float total_weight = 0.0; vec4 color = vec4(0.0); for(int i=-int(SAMPLES)/2; i < int(SAMPLES)/2; ++i) { weight = gaussian(float(i)); color += texture(TEXTURE, UV + scale * vec2(float(i))) * weight; total_weight += weight; } COLOR = color / total_weight; } https://i.imgur.com/HixMdyz.png [Step 3] 然後模糊化的圖形基礎上 用同樣的方法對 Y 軸做模糊化 (ex: blur_scale = (0,4)) https://i.imgur.com/66R0DyM.png 需注意的地方是, 這要分二個步驟做, 一次同時模糊化 X/Y 結果是如下的類 shear matrix 的效果 (ex: blur_scale = (4,4)) 這不是我們要的 https://i.imgur.com/tMR3shc.png [Step 4] 最後, 用下面的 shader 把 1. 一開始的剪影 (prepass_texture) 2. 模糊化的影像 (blur_texture) 3. 機器人的原圖 (TEXTURE) 三個合體,產生最後的圖 shader_type canvas_item; uniform sampler2D prepass_texture; uniform sampler2D blur_texture; uniform float glow_intensity; void fragment() { vec4 color = texture(TEXTURE, UV); vec4 prepass = texture(prepass_texture, UV); vec4 blurred = texture(blur_texture, UV); vec3 glow = max(vec3(0.0), blurred.rgb-prepass.rgb); vec3 out_color = color.rgb + glow.rgb * glow_intensity; COLOR = vec4(out_color, clamp(out_color.r + out_color.g + out_color.b, 0, 1)); } https://i.imgur.com/9TQmsVq.png 如果拿掉上面的機器人圖長這樣 https://i.imgur.com/39nwpiQ.png 完成了 更改剪影顏色可以改光的顏色 更改最後的 glow_intensity 或模糊化的 blur_scale 可以更改光暈或亮度 ================== 然後是 Godot 實作相關 當 shader 裡要取得前幾個步驟的圖片的像素, 需要用 ViewPort Texture。 所以範例裏做剪影用了一個 viewport, 模糊化X/Y各用一個 viewport, 最後合體也用了一個 viewport, 然後因為 shader 或 Godot 需要, 每個 ViewPortContainer 要改 size 然後 viewport 要改 1. size 2. transparent_bg = true 3. Usage = 2D 4. Update Mode = Always 然後 viewport 需要用 ViewPortContainer (VPC) 包起來 因此檔案架構像是這樣 +Blur_Y (VPC, 模糊圖) + viewport + Blur_X (VPC) + viewport + Prepass (VPC) + Sprite (機器人圖) +MainView (VPC, 合體) + viewport + Sprite (機器人圖) 範例看起來很複雜, 不過做的事就上面寫的那些 ================= 如果到 Youtube 上找 Godot 2D Glow Effect, 會找到好幾個用 WorldEnvironment -> Glow 來做發光的範例, viewport 裡面可以加獨立的 Environment 用裡面的 Glow 效果做出來的長相是 https://i.imgur.com/q9He3K3.png 你可以看出來 雖然都叫 Glow 但這是完全不同的效果 如果想要類似的效果 我預想是可以先用 shader 做剪影 再對剪影套用 WorldEnvironment Glow, 再蓋上原圖的作法 不過這部分是我猜想的 實驗部份我就不做了 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.97.136 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1625232088.A.011.html ※ 編輯: meowyih (36.231.97.136 臺灣), 07/02/2021 21:23:39 ※ 編輯: meowyih (36.231.97.136 臺灣), 07/03/2021 10:08:45
1F:推 tzouandy2818: 推認真 07/03 16:31
2F:推 MaxWei: 推,很清楚的步驟,感謝分享 07/04 11:03
3F:推 johnny94: 講學推 07/04 13:07







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP