Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2012-10-29 20:26:18 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2012-10-29 20:26:18 +0400
commitf139377a1a096582e5a7367696f307b1de7b8026 (patch)
treedaeb9b0e6a55e8f65ec6accf8e1471ee61ab67f6 /source/blender/blenkernel/BKE_DerivedMesh.h
parentc75b6c854cd1c7c7a63e2bcd9fa48eeed7039a09 (diff)
Complete fix for [#33002] Wrong vertex color.
Appart from the color glitch, there was several problems with vpaint: * "fast_update" mode was never on, because of wrong testing code; * drawing refresh during stroke in "fast_update" (i.e. no dm rebuild) mode was broken in VBO mode, because updated (tess data) mcol wasn't moved to colors GPUBuffer. Solved the later point by adding a new DM_DIRTY_MCOL_UPDATE_DRAW flag to DerivedMesh dirty var, which is set each time vpaint stroke directly update me->mcol, and forces GPU_color_setup() to refresh the gpu's colors buffer. Also got rid of the uggly GPU_color3_upload(), which basically did the same thing, but with an additional intermediate buffer !
Diffstat (limited to 'source/blender/blenkernel/BKE_DerivedMesh.h')
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index fa9223ba6e2..738d9101e8e 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -148,6 +148,11 @@ typedef enum DMDrawFlag {
typedef enum DMDirtyFlag {
/* dm has valid tessellated faces, but tessellated CDDATA need to be updated. */
DM_DIRTY_TESS_CDLAYERS = 1 << 0,
+ /* One of the MCOL layers have been updated, force updating of GPUDrawObject's colors buffer.
+ * This is necessary with modern, VBO draw code, as e.g. in vpaint mode me->mcol may be updated
+ * without actually rebuilding dm (hence by defautl keeping same GPUDrawObject, and same colors
+ * buffer, which prevents update during a stroke!). */
+ DM_DIRTY_MCOL_UPDATE_DRAW = 1 << 1,
} DMDirtyFlag;
typedef struct DerivedMesh DerivedMesh;