ctx->arrindices = (u32*)(((u8*)buffer) + vertex_length);
}
-static void scene_vert_pack_norm( scene_vert *vert, v3f norm )
-{
+static void scene_vert_pack_norm( scene_vert *vert, v3f norm, f32 blend ){
v3f n;
v3_muls( norm, 127.0f, n );
v3_minv( n, (v3f){ 127.0f, 127.0f, 127.0f }, n );
vert->norm[0] = n[0];
vert->norm[1] = n[1];
vert->norm[2] = n[2];
- vert->norm[3] = 0; /* free byte :D */
+ vert->norm[3] = blend * 127.0f;
}
/*
v3f normal;
m3x3_mulv( normal_matrix, src->norm, normal );
- scene_vert_pack_norm( pvert, normal );
+ scene_vert_pack_norm( pvert, normal, src->colour[0]*(1.0f/255.0f) );
v2_copy( src->uv, pvert->uv );
}
" vec4 rgarbage = texture( uTexGarbage, uvdiffuse );\n"
"\n"
" // Colour blending\n"
-" float fblendclip = step(0.380,aNorm.w + (rgarbage.r-0.5)*-1.740)*0.320;\n"
+" float fblendclip = step(0.380,aNorm.w + (rgarbage.r-0.5)*-1.740)*0.380;\n"
" vec2 uvgradients = aUv + vec2( fblendclip, 0.0 );\n"
"\n"
" vfrag = texture( uTexGradients, uvgradients ).rgb;\n"
" }\n"
"\n"
" vfrag = scene_compute_lighting( vfrag, qnorm, aWorldCo );\n"
-" oColour = vec4(vfrag, 1.0);\n"
+" oColour = vec4(vec3(aNorm.w), 1.0);\n"
"}\n"
""},
};
scene_vert *ref = &world->scene_geo.arrvertices[ hit->tri[0] ];
- for( u32 i=0; i<vg_list_size(verts); i++ )
- {
+ for( u32 i=0; i<vg_list_size(verts); i++ ){
scene_vert *pvert = &dst_verts[ i ],
*src = &verts[ i ];
m4x3_mulv( transform, src->co, pvert->co );
- scene_vert_pack_norm( pvert, transform[1] );
+ scene_vert_pack_norm( pvert, transform[1], 0.0f );
v2_copy( ref->uv, pvert->uv );
}
v3_muladds( ha.pos, up, 0.06f+gap, va.co );
v3_muladds( hb.pos, up, 0.06f+gap, vb.co );
- scene_vert_pack_norm( &va, up );
- scene_vert_pack_norm( &vb, up );
+ scene_vert_pack_norm( &va, up, 0.0f );
+ scene_vert_pack_norm( &vb, up, 0.0f );
float t1 = (travel_length / total_length) * patch_count;
va.uv[0] = t1;