for(int i=0; i<num_verts; i++) {
mesh->indices[i] = i;
}
- mesh->update_vertex_data();
+ mesh->invalidate();
}
// ------ heightfield ------
{
float x = u * xsz - xsz / 2.0;
float y = h * height;
- float z = -(v * ysz - ysz / 2.0);
+ float z = v * ysz - ysz / 2.0;
return Vec3(x, y, z);
}
float dv = 1.0 / (float)num_vvertices;
for(int i=0; i<num_vvertices; i++) {
- float v = (float)i / (float)num_vvertices;
+ float v = 1 - (float)i / (float)(num_vvertices - 1);
for(int j=0; j<num_uvertices; j++) {
- float u = (float)j / (float)num_uvertices;
+ float u = (float)j / (float)(num_uvertices - 1);
Vec3 vtx = hfield_vertex(u, v, calc_height(u, v, ptr), xsz, ysz, height);
/* calculating normal with forward differences:
Vec3 bitangent = hfield_vertex(u, v + dv, calc_height(u, v + dv, ptr),
xsz, ysz, height) - vtx;
- Vec3 normal = normalize(cross(tangent, bitangent));
+ Vec3 normal = normalize(cross(bitangent, tangent));
mesh->vertices[vidx] = vtx;
mesh->normals[vidx] = normal;
*iptr++ = a;
}
}
- mesh->update_vertex_data();
+ mesh->invalidate();
}