Revision: 58811
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58811
Author:   jwilkins
Date:     2013-08-01 22:18:01 +0000 (Thu, 01 Aug 2013)
Log Message:
-----------
In progress applying GPU_simple_shader to implemented shading on ES/COre

Broken build because I ran out of steam while replacing calls to glShadeModel.
Will resume after I get some sleep :-)

Modified Paths:
--------------
    branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf.c
    branches/soc-2013-viewport_fx/source/blender/blenkernel/BKE_DerivedMesh.h
    
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/blenlib/BLI_math_matrix.h
    branches/soc-2013-viewport_fx/source/blender/blenlib/intern/math_matrix.c
    
branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_icons.c
    
branches/soc-2013-viewport_fx/source/blender/editors/interface/interface_widgets.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_view.c
    branches/soc-2013-viewport_fx/source/blender/gpu/CMakeLists.txt
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_compatibility.h
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_extensions.h
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_matrix.h
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_object.h
    branches/soc-2013-viewport_fx/source/blender/gpu/GPU_simple_shader.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_aspect.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_buffers.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_codegen.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_draw.c
    
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extension_wrapper.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_extensions.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_gl11.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_glsl.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_lighting.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_lighting.h
    
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_lighting_inline.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_matrix.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_object.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_object_gl11.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_object_gles.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_object_gles.h
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_safety.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_simple_shader.c
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_material.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_simple_frag.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_simple_vert.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_vertex.glsl

Added Paths:
-----------
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_known.c
    branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_known.h
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_font_frag.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_font_vert.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_known_attribs.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_known_constants.glsl
    
branches/soc-2013-viewport_fx/source/blender/gpu/shaders/gpu_shader_known_uniforms.glsl

Modified: branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf.c  
2013-08-01 18:33:35 UTC (rev 58810)
+++ branches/soc-2013-viewport_fx/source/blender/blenfont/intern/blf.c  
2013-08-01 22:18:01 UTC (rev 58811)
@@ -600,8 +600,6 @@
        /* always bind the texture for the first glyph */
        font->tex_bind_state = -1;
 
-       gpuMatrixCommit();
-
        draw_lock(font);
 }
 

Modified: 
branches/soc-2013-viewport_fx/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenkernel/BKE_DerivedMesh.h   
2013-08-01 18:33:35 UTC (rev 58810)
+++ branches/soc-2013-viewport_fx/source/blender/blenkernel/BKE_DerivedMesh.h   
2013-08-01 22:18:01 UTC (rev 58811)
@@ -385,6 +385,8 @@
         * gpuShadeModel called with GL_SMOOTH. Otherwise the face normal should
         * be set and gpuShadeModel called with GL_FLAT.
         *
+        * XXX jwilkins: the above comment needs to be reevaluated since 
shadeModel is going away
+        *
         * The setDrawOptions is allowed to not set drawSmooth (for example, 
when
         * lighting is disabled), in which case the implementation should draw 
as
         * smooth shaded.

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-01 18:33:35 UTC (rev 58810)
+++ 
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c  
    2013-08-01 22:18:01 UTC (rev 58811)
@@ -63,6 +63,7 @@
 #include "GPU_extensions.h"
 #include "GPU_material.h"
 #include "GPU_compatibility.h"
+#include "GPU_simple_shader.h"
 
 #include <string.h>
 #include <limits.h>
@@ -341,7 +342,7 @@
        }
        else {  /* use OpenGL VBOs or Vertex Arrays instead for better, faster 
rendering */
                GPU_vertex_setup(dm);
-               gpuMatrixCommit();
+               GPU_commit_matrixes();
                if (!GPU_buffer_legacy(dm)) {
                        if (dm->drawObject->tot_triangle_point)
                                glDrawArrays(GL_POINTS, 0, 
dm->drawObject->tot_triangle_point);
@@ -562,17 +563,17 @@
 
        if (cddm->pbvh && cddm->pbvh_draw) {
                if (dm->numTessFaceData) {
-                       float (*face_nors)[3] = 
CustomData_get_layer(&dm->faceData, CD_NORMAL);
+                       float (*face_nors)[3] = 
(float(*)[3])CustomData_get_layer(&dm->faceData, CD_NORMAL);
 
-                       BKE_pbvh_draw(cddm->pbvh, partial_redraw_planes, 
face_nors,
-                                     setMaterial, FALSE);
-                       gpuShadeModel(GL_FLAT);
+                       BKE_pbvh_draw(cddm->pbvh, partial_redraw_planes, 
face_nors, setMaterial, FALSE);
                }
 
                return;
        }
 
        if (GPU_buffer_legacy(dm)) {
+               uint32_t options = 0;
+
                DEBUG_VBO("Using legacy code. cdDM_drawFacesSolid\n");
                gpuImmediateFormat_N3_V3();
                gpuBegin(glmode = GL_QUADS);
@@ -588,7 +589,12 @@
 
                                drawCurrentMat = setMaterial(matnr = new_matnr, 
NULL);
 
-                               gpuShadeModel(shademodel = new_shademodel);
+                               if (shademodel != -1)
+                                       gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
+
+                               shademodel = new_shademodel;
+                               options    = shademodel == GL_SMOOTH ? 0 : 
GPU_SHADER_FLAT_SHADED;
+                               gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
                                gpuBegin(glmode = new_glmode);
                        }
                        
@@ -620,6 +626,10 @@
 
                        if (nors) nors += 3;
                }
+
+               if (dm->numTessFaceData > 0)
+                       gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
+
                gpuEnd();
                gpuImmediateUnformat();
        }
@@ -627,19 +637,20 @@
                GPU_vertex_setup(dm);
                GPU_normal_setup(dm);
                if (!GPU_buffer_legacy(dm)) {
-                       gpuShadeModel(GL_SMOOTH);
+                       uint32_t options = 0;
+                       gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options)); // gpuShadeModel(GL_SMOOTH);
                        for (a = 0; a < dm->drawObject->totmaterial; a++) {
                                if 
(setMaterial(dm->drawObject->materials[a].mat_nr + 1, NULL)) {
                                        glDrawArrays(GL_TRIANGLES, 
dm->drawObject->materials[a].start,
                                                     
dm->drawObject->materials[a].totpoint);
                                }
                        }
+                       gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options)); // gpuShadeModel(GL_FLAT);
                }
                GPU_buffer_unbind();
        }
 
 #undef PASSVERT
-       gpuShadeModel(GL_FLAT);
 }
 
 static void cdDM_drawFacesTex_common(DerivedMesh *dm,
@@ -656,6 +667,7 @@
        MCol *mcol;
        int i, orig;
        int colType, startFace = 0;
+       uint32_t options;
 
        /* double lookup */
        const int *index_mf_to_mpoly = dm->getTessFaceDataArray(dm, 
CD_ORIGINDEX);
@@ -693,7 +705,8 @@
 
        cdDM_update_normals_from_pbvh(dm);
 
-       gpuAspectBegin(GPU_ASPECT_TEXTURE, NULL);
+       options = GPU_SHADER_TEXTURE_2D|GPU_SHADER_FLAT_SHADED; // XXX 
jwilkins: not sure if in this context thingsa re suppose dto be flat shaded or 
not.
+       gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, SET_UINT_IN_POINTER(options));
 
        if (GPU_buffer_legacy(dm)) {
                DEBUG_VBO("Using legacy code. cdDM_drawFacesTex_common\n");
@@ -801,7 +814,10 @@
                        int tottri = dm->drawObject->tot_triangle_point / 3;
                        int next_actualFace = 
dm->drawObject->triangle_to_mface[0];
 
-                       gpuShadeModel(GL_SMOOTH);
+                       gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options)); // gpuShadeModel(GL_FLAT);
+                       options = GPU_SHADER_TEXTURE_2D;
+                       gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options)); // gpuShadeModel(GL_SMOOTH);
+
                        /* lastFlag = 0; */ /* UNUSED */
                        for (i = 0; i < tottri; i++) {
                                int actualFace = next_actualFace;
@@ -851,7 +867,7 @@
                                                        GPU_color_switch(1);
                                                else
                                                        GPU_color_switch(0);
-                                               gpuMatrixCommit();
+                                               GPU_commit_matrixes();
                                                glDrawArrays(GL_TRIANGLES, 
first, count);
                                        }
 
@@ -860,10 +876,9 @@
                        }
                }
 
-               gpuAspectEnd(GPU_ASPECT_TEXTURE, NULL);
+               gpuAspectEnd(GPU_ASPECT_TEXTURE, SET_UINT_IN_POINTER(options));
 
                GPU_buffer_unbind();
-               gpuShadeModel(GL_FLAT);
        }
 }
 

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-01 18:33:35 UTC (rev 58810)
+++ 
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/editderivedmesh.c
    2013-08-01 22:18:01 UTC (rev 58811)
@@ -58,6 +58,7 @@
 
 #include "GPU_extensions.h"
 #include "GPU_compatibility.h"
+#include "GPU_simple_shader.h"
 
 extern GLubyte stipple_quarttone[128]; /* glutil.c, bad level data */
 
@@ -321,7 +322,7 @@
        const int lasttri = tottri - 1; /* compare agasint this a lot */
        DMDrawOption draw_option;
        int i, flush;
-       const int useNormals = (flag & DM_DRAW_USE_NORMALS) && 
!gpuIsLightingEnabled(); /* could be passed as an arg */
+       const int useNormals = (flag & DM_DRAW_USE_NORMALS) && 
GPU_simple_shader_needs_normals(); /* could be passed as an arg */
 
        MLoopCol *lcol[3] = {NULL} /* , dummylcol = {0} */;
        unsigned char(*color_vert_array)[4] = em->derivedVertColor;

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-01 18:33:35 UTC (rev 58810)
+++ 
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/subsurf_ccg.c    
    2013-08-01 22:18:01 UTC (rev 58811)
@@ -77,6 +77,7 @@
 #include "GPU_draw.h"
 #include "GPU_extensions.h"
 #include "GPU_material.h"
+#include "GPU_simple_shader.h"
 
 #include "CCGSubSurf.h"
 
@@ -1749,9 +1750,7 @@
 
        if (ccgdm->pbvh && ccgdm->multires.mmd && !fast) {
                if (dm->numTessFaceData) {
-                       BKE_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL,
-                                     setMaterial, FALSE);
-                       //gpuShadeModel(GL_FLAT); // XXX jwilkins: pbvh draw 
should probably return ShadeModel to FLAT, but this function doesn't even do 
that for itself in other cases.
+                       BKE_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL, 
setMaterial, FALSE);
                }
 
                return;
@@ -1765,6 +1764,7 @@
                int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
                int index = 
GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f));
                int new_matnr, new_shademodel;
+               uint32_t options = 0;
 
                if (faceFlags) {
                        new_shademodel = (faceFlags[index].flag & ME_SMOOTH) ? 
GL_SMOOTH : GL_FLAT;
@@ -1776,10 +1776,14 @@
                }
                
                if (shademodel != new_shademodel) {
+                       if (shademodel != -1)
+                               gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
+
                        shademodel = new_shademodel;
-                       gpuShadeModel(shademodel);
+                       options    = shademodel == GL_FLAT ? 
GPU_SHADER_FLAT_SHADED : 0;
+                       gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
                }
-               
+
                if (matnr != new_matnr) {
                        matnr = new_matnr;
                        drawcurrent = setMaterial(matnr + 1, NULL);
@@ -1789,7 +1793,7 @@
                        continue;
 
                for (S = 0; S < numVerts; S++) {
-                       CCGElem *faceGridData = 
ccgSubSurf_getFaceGridDataArray(ss, f, S);
+                       CCGElem *faceGridData = 
(CCGElem*)ccgSubSurf_getFaceGridDataArray(ss, f, S);
 
                        if (shademodel == GL_SMOOTH) {
                                for (y = 0; y < gridSize - 1; y += step) {
@@ -1828,6 +1832,9 @@
                                }
                        }
                }
+
+               if (numVerts > 0)
+                       gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
        }
 
        gpuEnd();
@@ -1944,7 +1951,8 @@
                int S, x, y, drawSmooth;
                int index = 
GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f));
                int origIndex = ccgDM_getFaceMapIndex(ss, f);
-               
+               uint32_t options;
+
                numVerts = ccgSubSurf_getFaceNumVerts(f);
 
                if (faceFlags) {
@@ -1971,9 +1979,11 @@
                        continue;
                }
 
-               gpuShadeModel(drawSmooth ? GL_SMOOTH : GL_FLAT);
+               options = drawSmooth ? 0 : GPU_SHADER_FLAT_SHADED;
+               gpuAspectBegin(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options)); //gpuShadeModel(drawSmooth ? GL_SMOOTH : 
GL_FLAT);
+
                for (S = 0; S < numVerts; S++) {
-                       CCGElem *faceGridData = 
ccgSubSurf_getFaceGridDataArray(ss, f, S);
+                       CCGElem *faceGridData = 
(CCGElem*)ccgSubSurf_getFaceGridDataArray(ss, f, S);
                        CCGElem *vda, *vdb;
 
                        if (drawSmooth) {
@@ -2038,6 +2048,8 @@
                        }
                }
 
+               gpuAspectEnd(GPU_ASPECT_SIMPLE_SHADER, 
SET_UINT_IN_POINTER(options));
+
                ccg_unformat_attrib_vertex();
        }
 
@@ -2104,7 +2116,8 @@
                int S, x, y, drawSmooth;
                int index = 
GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f));
                int origIndex = ccgDM_getFaceMapIndex(ss, f);
-               
+               uint32_t options;
+
                numVerts = ccgSubSurf_getFaceNumVerts(f);
 
                /* get flags */
@@ -2130,9 +2143,12 @@
                }
 
                /* draw face*/

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to