0

GLSLまたは同様のシェーダーで雨を作成する方法に関する優れたチュートリアルはありますか?残念ながら、Mayaの場合は簡単に見つけることができますが、これの場合は見つかりません。ありがとう!

4

1 に答える 1

3

「雨」とはどういう意味ですか。雨を表現する方法はたくさんあります

このサンプルには、雨の効果と波紋の効果があります

https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/google/particles/index.html

ただし、チュートリアルはありません。一連の単位正方形を作成し、それぞれにランダムな値を与え、そのランダムな値を時間値に追加し、シェーダー内の位置を次のように計算することによって機能します。

uniform float u_time;          // a time value passed in by JavaScript
uniform mat4 u_view_inverse;   // view inverse (camera world matrix)
uniform mat4 u_view_projection;// view projection matrix

attribute vec4 a_vertex;       // the unit quad values
attribute vec4 a_position;     // the base position of this particle repeated for
                               // each vertex
attribute vec4 a_velocity;     // velocity for this quad, repeated for each vertex
attribute float a_time_offset; // a time offset for this particle 
                               // repeated for each vertex

// compute a position
float localTime = u_time + a_time_offset;
vec4 base_position = a_position + a_velocity * localTime;

// rotate quad so it's perpendicular to the view
vec4 quadX = viewInverse[0] * a_vertex.x;
vec4 quadZ = viewInverse[1] * a_vertex.y;

// compute the real world position for this vertex
vec4 position = base_position + quadX + quadZ;

// at this point position is the same as any other 'standard' 3d shader
// do with it whatever. Example:
gl_Position = viewProjectionMatrix * position;

簡潔すぎる場合は申し訳ありません。

于 2012-06-18T16:42:59.447 に答える