效果圖:
就是這種有點像彗星拖尾的效果,且這個方向是指向螢幕**的,當然也可以修改。
**著色器:
作者@oosmoxiecode,參考的也是 iq大神
這裡直接注釋iq的**了,都差不多。oos 就是寫的可讀性更高一些。
void mainimage( out
vec4 fragcolor, in
vec2 fragcoord )
col = col * 3.5 / 64.0;
fragcolor = vec4( col, 1.0 );
}
oos 則加了乙個限制條件,只有畫素顏色值高於某個閾值才拿來做顏色疊加,因此白色的部分會有更強的效果,暗色的就沒有:
uniforms: ,
"tmap": ,
"steps": ,
"strength": ,
"expo": ,
"threshold": ,
"center": ,
},
"uniform float steps;",
"uniform float strength;",
"uniform float expo;",
"uniform float threshold;",
"uniform sampler2d tdiffuse;",
"uniform sampler2d tmap;",
"uniform vec2 center;",
"varying vec2 vuv;",
"void main() else ",
"res = smoothstep(0.0,1.0,res);",
"total += w*res;",
"w *= strength;", // strength < 1, w 逐漸減小
"s += d;", // 沿放射方向,從vuv到螢幕中心
"}",
"total /= steps;",
//"gl_fragcolor = vec4( total*expo, 1.0);",
"vec3 dif = texture2d( tdiffuse, vuv).xyz;",
"gl_fragcolor = vec4( mix(total*expo, dif*2.0, 0.5), 1.0);",
//"gl_fragcolor = vec4( total*expo, 1.0);",
"}"
這個程式的思路可以想象為,每個畫素朝著螢幕中心看一段距離(由 for 的次數決定),如果看到的範圍內有符合
(res.x > threshold || res.y > threshold || res.z > threshold)
的畫素,就拿來作為當前著色畫素的乙個疊加的顏色。關鍵是要記住 gpu程式都是處理單個畫素的,每次只能為當前著色的畫素處理顏色。
很顯然center
不一定是中間位置。利用這個可以更靈活地做效果。
閱讀任務 閱讀筆記 4
功能驅動的設計 1 構造總體模型 2 構造功能列表 3 制定開發計畫 4 功能設計階段 5 實現具體功能 軟體測試按目的分類 1 功能測試 2 非功能測試 軟體測試的各種方法 1 單元測試和 覆蓋率測試 2 構建驗證測試 3 驗收測試 4 探索式的測試 5 回歸測試 6 場景 整合 系統測試 7 夥...
閱讀筆記 2006 01
請您尊重您的價值,因為它已經得到了社會的認可。當你貶低或破壞您的價值時,就等於貶低或破壞整個行業在這個社會的價值。無論在什麼時候,自己都應該尊重自己的價值,而不能因為一時的困境而貶低和破壞了自己的價值,因為你的破壞之舉,將傷害到整個行業的價值乃至社會的規則。因為,唯有懂得尊重自己的價值的人,才能真正...
25 211(840) 閱讀筆記
傳輸通道rach特點 存在衝突風險 使用開環功控。物理通道通過載頻 擾碼 通道化碼 起始時間定義,對於上行通道,還包括相對相位 0或p 2 上行dpch為i q碼復用。fbi bits提供從ue到網路的反饋資訊,以用於閉環傳送分集。上行dpch可以使用多碼,這種情況下,多個並行的dpdch使用不同的...