[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59512] branches/soc-2013-viewport_fx/ source/blender: "raster" shader.
Jason Wilkins
Jason.A.Wilkins at gmail.com
Mon Aug 26 13:38:18 CEST 2013
Revision: 59512
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59512
Author: jwilkins
Date: 2013-08-26 11:38:18 +0000 (Mon, 26 Aug 2013)
Log Message:
-----------
"raster" shader. meaning a shading mode that handles stippling, anti-aliasing, and wire frame. Incomplete. Checking it so I can change locations.
Modified Paths:
--------------
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/editderivedmesh.c
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/subsurf_ccg.c
branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_icons.c
branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c
branches/soc-2013-viewport_fx/source/blender/editors/space_sequencer/sequencer_draw.c
branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawarmature.c
branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawmesh.c
branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/drawobject.c
branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/view3d_ruler.c
branches/soc-2013-viewport_fx/source/blender/editors/uvedit/uvedit_draw.c
branches/soc-2013-viewport_fx/source/blender/gpu/CMakeLists.txt
branches/soc-2013-viewport_fx/source/blender/gpu/GPU_basic_shader.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_aspectfuncs.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_aspectfuncs.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_basic_shader.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_common.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extensions.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_font_shader.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_gl.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_inline.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_pixels.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_pixels.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_raster.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_raster.h
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_basic_frag.glsl
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_font_vert.glsl
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_gesture.c
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_init_exit.c
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_operators.c
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_playanim.c
Added Paths:
-----------
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_raster_frag.glsl
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_raster_uniforms.glsl
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_raster_vert.glsl
Modified: branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -1002,14 +1002,14 @@
unsigned char *cp = NULL;
if (draw_option == DM_DRAW_OPTION_STIPPLE) {
- gpuEnablePolygonStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
gpuPolygonStipple(stipple_quarttone);
}
if (useColors && mcol)
cp = (unsigned char *)&mcol[i * 4];
- /* normals are used to change shading, so choose smooth so smooth shading will work (XXX jwilkins: rewrote to say what I think was meant */
+ /* normals are used to change shading, so choose smooth so smooth shading will work (XXX jwilkins: rewrote to say what I think was meant */
// SSS Enable Smooth
GPU_aspect_enable(GPU_ASPECT_BASIC, GPU_BASIC_SMOOTH);
@@ -1061,7 +1061,7 @@
gpuEnd();
if (draw_option == DM_DRAW_OPTION_STIPPLE)
- gpuDisablePolygonStipple();
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
}
if (nors) nors += 3;
Modified: branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/editderivedmesh.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/editderivedmesh.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/editderivedmesh.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -389,7 +389,7 @@
if (poly_prev != GL_NOOP) gpuEnd();
poly_prev = GL_NOOP; /* force gpuBegin */
- gpuEnablePolygonStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
gpuPolygonStipple(stipple_quarttone);
}
@@ -460,7 +460,7 @@
gpuEnd();
poly_prev = GL_NOOP; /* force gpuBegin */
- gpuDisablePolygonStipple();
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
}
}
}
Modified: branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/subsurf_ccg.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/subsurf_ccg.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -2510,7 +2510,7 @@
if (draw_option != DM_DRAW_OPTION_SKIP) {
if (draw_option == DM_DRAW_OPTION_STIPPLE) {
- gpuEnablePolygonStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
gpuPolygonStipple(stipple_quarttone);
}
@@ -2589,7 +2589,7 @@
GPU_aspect_disable(GPU_ASPECT_BASIC, GPU_BASIC_SMOOTH);
if (draw_option == DM_DRAW_OPTION_STIPPLE)
- gpuDisablePolygonStipple();
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
}
}
}
Modified: branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_icons.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_icons.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_icons.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -1052,10 +1052,10 @@
else {
GPUpixels pixels = { w, h, GL_RGBA, GL_UNSIGNED_BYTE, rect };
- gpuPixelsBegin();
+ GPU_pixels_begin();
gpuPixelPos2f(x, y);
gpuPixels(&pixels);
- gpuPixelsEnd();
+ GPU_pixels_end();
}
/* modulate color */
Modified: branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/editors/screen/glutil.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -144,59 +144,37 @@
0x3f, 0xc0, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0x80};
-//void fdrawbezier(float vec[4][3])
-//{
-// float dist;
-// float curve_res = 24, spline_step = 0.0f;
-//
-// dist = 0.5f * ABS(vec[0][0] - vec[3][0]);
-//
-// /* check direction later, for top sockets */
-// vec[1][0] = vec[0][0] + dist;
-// vec[1][1] = vec[0][1];
-//
-// vec[2][0] = vec[3][0] - dist;
-// vec[2][1] = vec[3][1];
-// /* we can reuse the dist variable here to increment the GL curve eval amount*/
-// dist = 1.0f / curve_res;
-//
-// gpuColor3P(CPACK_BLACK);
-// glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, vec[0]);
-// gpuBegin(GL_LINE_STRIP);
-// while (spline_step < 1.000001f) {
-//#if 0
-// if (do_shaded)
-// UI_ThemeColorBlend(th_col1, th_col2, spline_step);
-//#endif
-// glEvalCoord1f(spline_step);
-// spline_step += dist;
-// }
-// gpuEnd();
-//}
-
-
void fdrawcheckerboard(float x1, float y1, float x2, float y2)
{
- unsigned char col1[4] = {40, 40, 40}, col2[4] = {50, 50, 50};
+ static const unsigned char col1[4] = {40, 40, 40};
+ static const unsigned char col2[4] = {50, 50, 50};
- GLubyte checker_stipple[32 * 32 / 8] = {
- 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
- 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
- 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
- 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
- 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255};
-
+ static const GLubyte checker_stipple[32 * 32 / 8] = {
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
+ 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
+ 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
+ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,
+ 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
+ 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255
+ };
+
gpuColor3ubv(col1);
gpuSingleFilledRectf(x1, y1, x2, y2);
gpuColor3ubv(col2);
- gpuEnablePolygonStipple();
+ GPU_raster_begin();
+
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
+
gpuPolygonStipple(checker_stipple);
+
gpuSingleFilledRectf(x1, y1, x2, y2);
- gpuDisablePolygonStipple();
+
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
+
+ GPU_raster_end();
}
/*
@@ -238,11 +216,11 @@
void setlinestyle(int nr)
{
if (nr == 0) {
- gpuDisableLineStipple();
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_STIPPLE);
}
else {
-
- gpuEnableLineStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_STIPPLE);
+
if (U.pixelsize > 1.0f)
gpuLineStipple(nr, 0xCCCC);
else
@@ -626,10 +604,10 @@
{
GPUpixels pixels = { draw_w, draw_h, format, type, data };
- gpuPixelsBegin();
+ GPU_pixels_begin();
gpuPixelPos2f(rast_x, rast_y);
gpuPixels(&pixels);
- gpuPixelsEnd();
+ GPU_pixels_end();
}
}
}
Modified: branches/soc-2013-viewport_fx/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/editors/space_sequencer/sequencer_draw.c 2013-08-26 09:59:51 UTC (rev 59511)
+++ branches/soc-2013-viewport_fx/source/blender/editors/space_sequencer/sequencer_draw.c 2013-08-26 11:38:18 UTC (rev 59512)
@@ -256,18 +256,16 @@
}
}
-static void drawmeta_stipple(int value)
+static void drawmeta_stipple(bool value)
{
if (value) {
- gpuEnablePolygonStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_STIPPLE);
+
gpuPolygonStipple(stipple_halftone);
-
- gpuEnableLineStipple();
gpuLineStipple(1, 0x8888);
}
else {
- gpuDisablePolygonStipple();
- gpuDisableLineStipple();
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_STIPPLE);
}
}
@@ -288,8 +286,10 @@
glEnable(GL_BLEND);
+ GPU_raster_begin();
+
if (seqm->flag & SEQ_MUTE)
- drawmeta_stipple(1);
+ drawmeta_stipple(true);
for (seq = seqm->seqbase.first; seq; seq = seq->next) {
chan_min = min_ii(chan_min, seq->machine);
@@ -309,7 +309,7 @@
float y1_chan, y2_chan;
if ((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE))
- drawmeta_stipple(1);
+ drawmeta_stipple(true);
get_seq_color3ubv(scene, seq, col);
@@ -322,21 +322,25 @@
y1_chan = y1 + y_chan + (draw_height * SEQ_STRIP_OFSBOTTOM);
y2_chan = y1 + y_chan + (draw_height * SEQ_STRIP_OFSTOP);
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON);
gpuSingleFilledRectf(x1_chan, y1_chan, x2_chan, y2_chan);
+ GPU_aspect_disable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON);
UI_GetColorPtrShade3ubv(col, col, -30);
gpuColor4ubv(col);
gpuSingleWireRectf(x1_chan, y1_chan, x2_chan, y2_chan);
if ((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE))
- drawmeta_stipple(0);
+ drawmeta_stipple(false);
}
}
if (seqm->flag & SEQ_MUTE)
- drawmeta_stipple(0);
+ drawmeta_stipple(false);
glDisable(GL_BLEND);
+
+ GPU_raster_end();
}
/* clamp handles to defined size in pixel space */
@@ -649,17 +653,16 @@
{
float ymid1, ymid2;
+ GPU_raster_begin();
+
if (seq->flag & SEQ_MUTE) {
- gpuEnablePolygonStipple();
+ GPU_aspect_enable(GPU_ASPECT_RASTER, GPU_RASTER_POLYGON|GPU_RASTER_STIPPLE);
gpuPolygonStipple(stipple_halftone);
}
ymid1 = (y2 - y1) * 0.25f + y1;
ymid2 = (y2 - y1) * 0.65f + y1;
- // SSS Enable Smooth
- GPU_aspect_enable(GPU_ASPECT_BASIC, GPU_BASIC_SMOOTH);
-
gpuBegin(GL_QUADS);
if (seq->flag & SEQ_INVALID_EFFECT) { col[0] = 255; col[1] = 0; col[2] = 255; }
@@ -699,12 +702,11 @@
gpuEnd();
- // SSS Disable Smooth
- GPU_aspect_disable(GPU_ASPECT_BASIC, GPU_BASIC_SMOOTH);
-
if (seq->flag & SEQ_MUTE) {
- gpuDisablePolygonStipple();
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list