[Bf-blender-cvs] [7517cf6bbb9] blender2.8: Getting rid of setlinestyle: 3DView ruler.

Bastien Montagne noreply at git.blender.org
Wed Apr 26 15:25:32 CEST 2017


Commit: 7517cf6bbb989286f9a65b70ceae2e277e111e58
Author: Bastien Montagne
Date:   Wed Apr 26 15:16:15 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB7517cf6bbb989286f9a65b70ceae2e277e111e58

Getting rid of setlinestyle: 3DView ruler.

===================================================================

M	source/blender/editors/space_view3d/view3d_ruler.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_ruler.c b/source/blender/editors/space_view3d/view3d_ruler.c
index b3ecc2419a6..11579e6a670 100644
--- a/source/blender/editors/space_view3d/view3d_ruler.c
+++ b/source/blender/editors/space_view3d/view3d_ruler.c
@@ -429,9 +429,8 @@ static void ruler_info_draw_pixel(const struct bContext *C, ARegion *ar, void *a
 #define ARC_STEPS 24
 	const int arc_steps = ARC_STEPS;
 	int i;
-	//unsigned int color_act = 0x666600;
-	unsigned int color_act = 0xffffff;
-	unsigned int color_base = 0x0;
+	const float color_act[4] = {1.0f, 1.0f, 1.0f, 1.0f};
+	const float color_base[4] = {0.0f, 0.0f, 0.0f, 1.0f};
 	unsigned char color_text[3];
 	unsigned char color_wire[3];
 	float color_back[4] = {1.0f, 1.0f, 1.0f, 0.5f};
@@ -460,31 +459,35 @@ static void ruler_info_draw_pixel(const struct bContext *C, ARegion *ar, void *a
 		glEnable(GL_BLEND);
 
 		if (ruler_item->flag & RULERITEM_USE_ANGLE) {
-			unsigned int pos = VertexFormat_add_attrib(immVertexFormat(), "pos", COMP_F32, 2, KEEP_FLOAT);
+			VertexFormat *format = immVertexFormat();
+			uint pos = VertexFormat_add_attrib(format, "pos", COMP_F32, 2, KEEP_FLOAT);
+			uint line_origin = VertexFormat_add_attrib(format, "line_origin", COMP_F32, 2, KEEP_FLOAT);
 
-			immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
-			imm_cpack(is_act ? color_act : color_base);
+			immBindBuiltinProgram(GPU_SHADER_2D_LINE_DASHED_COLOR);
 
-			immBegin(PRIM_LINE_STRIP, 3);
+			immUniform1f("view_scale", 1.0f);
+			immUniform4f("color1", 0.67f, 0.67f, 0.67f, 1.0f);
+			immUniform4fv("color2", is_act ? color_act : color_base);
+			immUniform1f("dash_width", 8.0f);
+			immUniform1f("dash_width_on", 4.0f);
 
-			for (j = 0; j < 3; j++) {
-				immVertex2fv(pos, co_ss[j]);
-			}
+			immBegin(PRIM_LINES, 4);
 
-			immEnd();
+			immAttrib2fv(line_origin, co_ss[0]);
+			immVertex2fv(pos, co_ss[0]);
+			immVertex2fv(pos, co_ss[1]);
 
-			imm_cpack(0xaaaaaa);
-			setlinestyle(3);
+			immAttrib2fv(line_origin, co_ss[1]);
+			immVertex2fv(pos, co_ss[1]);
+			immVertex2fv(pos, co_ss[2]);
 
-			immBegin(PRIM_LINE_STRIP, 3);
+			immEnd();
 
-			for (j = 0; j < 3; j++) {
-				immVertex2fv(pos, co_ss[j]);
-			}
+			immUnbindProgram();
 
-			immEnd();
+			pos = VertexFormat_add_attrib(immVertexFormat(), "pos", COMP_F32, 2, KEEP_FLOAT);
 
-			setlinestyle(0);
+			immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
 
 			/* arc */
 			{
@@ -602,31 +605,31 @@ static void ruler_info_draw_pixel(const struct bContext *C, ARegion *ar, void *a
 			}
 		}
 		else {
-			unsigned int pos = VertexFormat_add_attrib(immVertexFormat(), "pos", COMP_F32, 2, KEEP_FLOAT);
+			VertexFormat *format = immVertexFormat();
+			uint pos = VertexFormat_add_attrib(format, "pos", COMP_F32, 2, KEEP_FLOAT);
+			uint line_origin = VertexFormat_add_attrib(format, "line_origin", COMP_F32, 2, KEEP_FLOAT);
 
-			immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
-			imm_cpack(is_act ? color_act : color_base);
-
-			immBegin(PRIM_LINE_STRIP, 2);
+			immBindBuiltinProgram(GPU_SHADER_2D_LINE_DASHED_COLOR);
 
-			for (j = 0; j < 3; j += 2) {
-				immVertex2fv(pos, co_ss[j]);
-			}
+			immUniform1f("view_scale", 1.0f);
+			immUniform4f("color1", 0.67f, 0.67f, 0.67f, 1.0f);
+			immUniform4fv("color2", is_act ? color_act : color_base);
+			immUniform1f("dash_width", 8.0f);
+			immUniform1f("dash_width_on", 4.0f);
 
-			immEnd();
+			immBegin(PRIM_LINES, 2);
 
-			imm_cpack(0xaaaaaa);
-			setlinestyle(3);
+			immAttrib2fv(line_origin, co_ss[0]);
+			immVertex2fv(pos, co_ss[0]);
+			immVertex2fv(pos, co_ss[2]);
 
-			immBegin(PRIM_LINE_STRIP, 2);
+			immEnd();
 
-			for (j = 0; j < 3; j += 2) {
-				immVertex2fv(pos, co_ss[j]);
-			}
+			immUnbindProgram();
 
-			immEnd();
+			pos = VertexFormat_add_attrib(immVertexFormat(), "pos", COMP_F32, 2, KEEP_FLOAT);
 
-			setlinestyle(0);
+			immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
 
 			sub_v2_v2v2(dir_ruler, co_ss[0], co_ss[2]);
 
@@ -709,7 +712,7 @@ static void ruler_info_draw_pixel(const struct bContext *C, ARegion *ar, void *a
 			unsigned int pos = VertexFormat_add_attrib(immVertexFormat(), "pos", COMP_F32, 2, KEEP_FLOAT);
 
 			immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
-			imm_cpack(color_act);
+			immUniformColor4fv(color_act);
 
 			imm_draw_circle_wire(pos, co_ss[0], co_ss[1], size * U.pixelsize, 32);




More information about the Bf-blender-cvs mailing list