2016-11-09 18 views
0

私は長方形で、グロー効果を作成したいと思います:グロー効果

フラグメントシェーダを開始する場所を私は本当に知りません。

..

実は、私は図形(円、多角形、長方形)にこの効果を実現したいと思います。実際の境界色はありません。ほんのりしているだけです。

+0

は、同様のポスト http://stackoverflow.com/questions/36263404/webgl-glow-effect/36290626#36290626に私の答えをチェック – stonexjr

答えて

0

方法の一つ:あなたは4行(4点)で定義された矩形を有し、モデル行列を使用している場合

は、モデル行列と4点を乗算し、フラグメントシェーダに均一にそれらを送信。頂点シェーダでは、入力位置にモデル行列のみを掛けた位置に異なる値を作成します。また、いくつかの半径は、統一として送信する必要があります。

フラグメントシェーダで、線を表すポイントペアのそれぞれにコードを作成し、距離を計算します。距離が小さい場合、半径は境界のカラースケールを作成します。すべての4の合計が境界色の結果として使用されます。

scale += 1.0-(clamp(currentDistanceToLeftBorder/radius, .0, 1.0)); 
scale += 1.0-(clamp(currentDistanceToTopBorder/radius, .0, 1.0)); 
scale += 1.0-(clamp(currentDistanceToRightBorder/radius, .0, 1.0)); 
scale += 1.0-(clamp(currentDistanceToBottomBorder/radius, .0, 1.0)); 

その後、色を混ぜる:

color = mix(defaultColor, borderColor, clamp(scale, .0, 1.0)); 
関連する問題