0001: //
0002: // This program is to calculate the collision between bullet with ground.
0003: // This calculation is the same as a shadow volume's one.
0004: //
0005:
0006: // ----------------------------------------------------------------------------
0007: // Input datas
0008: // ----------------------------------------------------------------------------
0009: struct appdata {
0010: float4 position : POSITION;
0011: float4 texcoord0 : TEXCOORD0;
0012: };
0013: // ----------------------------------------------------------------------------
0014: // Vertex shader program
0015: // ----------------------------------------------------------------------------
0016: vf20 main(appdata I
0017: , uniform float4x4 viewproj_matrix
0018: , uniform float4 trans
0019: , uniform float4 velocity
0020: , uniform float4 color
0021: ) {
0022: vf20 O;
0023:
0024: // Coordinate transformation
0025: float4 v = (0<=dot(I.position, velocity))
0026: ? I.position
0027: : (I.position-velocity);
0028: v=v+trans;
0029: O.HPOS = mul(viewproj_matrix, v);
0030:
0031: // I copy a constant to the vertex color
0032: O.COL0 = color;
0033:
0034: return O;
0035: }
0036:
0037:
0038: