[Bf-blender-cvs] [1e9f922c9e3] blender2.8: Merge branch 'master' into blender2.8
Campbell Barton
noreply at git.blender.org
Wed May 10 23:52:16 CEST 2017
Commit: 1e9f922c9e310eda225ca2cb9d72f6b86be0348c
Author: Campbell Barton
Date: Thu May 11 07:51:27 2017 +1000
Branches: blender2.8
https://developer.blender.org/rB1e9f922c9e310eda225ca2cb9d72f6b86be0348c
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/gpu/intern/gpu_buffers.c
index 7a5ed4784d4,6a2aa106f6a..707bdf7d829
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@@ -1104,41 -1057,40 +1104,44 @@@ void GPU_update_mesh_pbvh_buffers
copy_v4_v4(buffers->diffuse_color, diffuse_color);
+ uchar diffuse_color_ub[4];
+ rgba_float_to_uchar(diffuse_color_ub, diffuse_color);
+
/* Build VBO */
- if (buffers->vert_buf)
- GPU_buffer_free(buffers->vert_buf);
- buffers->vert_buf = GPU_buffer_alloc(sizeof(VertexBufferFormat) * totelem);
- vert_data = GPU_buffer_lock(buffers->vert_buf, GPU_BINDING_ARRAY);
+ VERTEXBUFFER_DISCARD_SAFE(buffers->vert_buf);
- if (vert_data) {
+ /* match 'VertexBufferFormat' */
+ VertexFormat format = {0};
+ VertexBufferAttrID vbo_id;
+ gpu_pbvh_vert_format_init__gwn(&format, &vbo_id);
+
+ buffers->vert_buf = VertexBuffer_create_with_format(&format);
+ VertexBuffer_allocate_data(buffers->vert_buf, totelem);
+
+ if (buffers->vert_buf->data) {
/* Vertex data is shared if smooth-shaded, but separate
* copies are made for flat shading because normals
* shouldn't be shared. */
if (buffers->smooth) {
- for (i = 0; i < totvert; ++i) {
+ for (uint i = 0; i < totvert; ++i) {
const MVert *v = &mvert[vert_indices[i]];
- VertexBufferFormat *out = vert_data + i;
-
- copy_v3_v3(out->co, v->co);
- memcpy(out->no, v->no, sizeof(short) * 3);
+ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.pos, i, v->co);
+ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.nor, i, v->no);
}
- for (i = 0; i < buffers->face_indices_len; i++) {
+ for (uint i = 0; i < buffers->face_indices_len; i++) {
const MLoopTri *lt = &buffers->looptri[buffers->face_indices[i]];
for (uint j = 0; j < 3; j++) {
- int v_orig = buffers->mloop[lt->tri[j]].v;
- int v_index = face_vert_indices[i][j];
- uchar color_ub[3];
- VertexBufferFormat *out = vert_data + face_vert_indices[i][j];
-
++ int vidx = face_vert_indices[i][j];
if (vmask) {
- gpu_color_from_mask_copy(vmask[v_orig], diffuse_color, color_ub);
- uint v_index = buffers->mloop[lt->tri[j]].v;
- gpu_color_from_mask_copy(vmask[v_index], diffuse_color, out->color);
++ int v_index = buffers->mloop[lt->tri[j]].v;
++ uchar color_ub[3];
++ gpu_color_from_mask_copy(vmask[v_index], diffuse_color, color_ub);
++ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.col, vidx, color_ub);
}
else {
- rgb_float_to_uchar(color_ub, diffuse_color);
- copy_v3_v3_uchar(out->color, diffuse_color_ub);
++ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.col, vidx, diffuse_color_ub);
}
- VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.col, v_index, color_ub);
}
}
}
@@@ -1178,19 -1130,13 +1182,12 @@@
for (uint j = 0; j < 3; j++) {
const MVert *v = &mvert[vtri[j]];
- VertexBufferFormat *out = vert_data;
- copy_v3_v3(out->co, v->co);
- copy_v3_v3_short(out->no, no);
- copy_v3_v3_uchar(out->color, color_ub);
+ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.pos, vbo_index, v->co);
+ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.nor, vbo_index, no);
-
- uchar color_ub[3]; \
- if (vmask)
- gpu_color_from_mask_copy(fmask, diffuse_color, color_ub);
- else
- rgb_float_to_uchar(color_ub, diffuse_color);
-
+ VertexBuffer_set_attrib(buffers->vert_buf, vbo_id.col, vbo_index, color_ub);
- vert_data++;
+ vbo_index++;
}
}
}
More information about the Bf-blender-cvs
mailing list