/* Runtime */
double time,
+ time_real,
time_delta,
time_rate,
vg.samples,
vg.fixed_iterations,
(vg.time_fixed_accumulator/VG_TIMESTEP_FIXED)*100.0f,
- vg.time, vg.time_delta, vg.time_rate,
+ vg.time_real, vg.time_delta, vg.time_rate,
vg.time_fixed_extrapolate, vg.time_frame_delta,
vg.time_spinning );
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);
glBlendEquation(GL_FUNC_ADD);
- glClearColor( 0.15f + sinf(vg.time)*0.1f, 0.0f, 0.0f,1.0f );
+ glClearColor( 0.15f + sinf(vg.time_real)*0.1f, 0.0f, 0.0f,1.0f );
glClear( GL_COLOR_BUFFER_BIT );
glViewport( 0,0, vg.window_x, vg.window_y );
enum engine_status status = _vg_engine_status();
+ vg.time_real += vg.time_frame_delta;
vg.time_delta = vg.time_frame_delta * vg.time_rate;
vg.time += vg.time_delta;
if( read_samples != length_samples )
vg_fatal_error( "Decode error" );
+#if 0
float mb = (float)(data_size) / (1024.0f*1024.0f);
vg_info( "Loaded audio clip '%s' (%.1fmb) %u samples\n", clip->path, mb,
length_samples );
+#endif
}
}
types[] =
{
{ "float", "float f", "glUniform1f(%s,f);" },
- { "bool", "int b", "glUniform1f(%s,b);" },
+ { "bool", "int b", "glUniform1i(%s,b);" },
{ "vec2", "v2f v", "glUniform2fv(%s,1,v);" },
{ "vec3", "v3f v", "glUniform3fv(%s,1,v);" },
a[1][1] = c;
}
+static inline void m2x2_mulv( m2x2f m, v2f v, v2f d )
+{
+ v2f res;
+
+ res[0] = m[0][0]*v[0] + m[1][0]*v[1];
+ res[1] = m[0][1]*v[0] + m[1][1]*v[1];
+
+ v2_copy( res, d );
+}
+
/*
* -----------------------------------------------------------------------------
* Section 4.b 3x3 matrices
static int plane_segment( v4f plane, v3f a, v3f b, v3f co )
{
f32 d0 = v3_dot( a, plane ) - plane[3],
- d1 = v3_dot( b, plane ) - plane[3];
+ d1 = v3_dot( b, plane ) - plane[3];
if( d0*d1 < 0.0f )
{
;
}
+static f32 ray_plane( v4f plane, v3f co, v3f dir ){
+ f32 d = v3_dot( plane, dir );
+ if( fabsf(d) > 1e-6f ){
+ v3f v0;
+ v3_muls( plane, plane[3], v0 );
+ v3_sub( v0, co, v0 );
+ return v3_dot( v0, plane ) / d;
+ }
+ else return INFINITY;
+}
+
/*
* -----------------------------------------------------------------------------
* Section 5.c Closest point functions