[Bf-blender-cvs] [a5f7e43] opensubdiv-modifier: OpenSubdiv: Matcap GLSL shading works fine again
Sergey Sharybin
noreply at git.blender.org
Sat Jul 11 20:02:17 CEST 2015
Commit: a5f7e430d23cf128587b7575972e7318c312d074
Author: Sergey Sharybin
Date: Fri Jul 10 14:35:11 2015 +0200
Branches: opensubdiv-modifier
https://developer.blender.org/rBa5f7e430d23cf128587b7575972e7318c312d074
OpenSubdiv: Matcap GLSL shading works fine again
===================================================================
M source/blender/gpu/intern/gpu_extensions.c
M source/blender/gpu/intern/gpu_material.c
===================================================================
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c
index 09d7da2..c271fb2 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -61,8 +61,9 @@
# include "BLI_winstuff.h"
#endif
-#define MAX_DEFINE_LENGTH 72
-#define MAX_EXT_DEFINE_LENGTH 280
+/* TODO(sergey): Find better default values for this constants. */
+#define MAX_DEFINE_LENGTH 1024
+#define MAX_EXT_DEFINE_LENGTH 1024
/* Extensions support */
@@ -1545,7 +1546,6 @@ static void gpu_shader_standard_extensions(char defines[MAX_EXT_DEFINE_LENGTH])
{
#ifdef WITH_OPENSUBDIV
strcat(defines, "#extension GL_ARB_texture_query_lod: enable\n"
- "#extension GL_EXT_geometry_shader4 : enable\n"
"#extension GL_ARB_gpu_shader5 : enable\n"
"#extension GL_ARB_explicit_attrib_location : require\n");
#else
@@ -1556,6 +1556,7 @@ static void gpu_shader_standard_extensions(char defines[MAX_EXT_DEFINE_LENGTH])
if (GPU_geometry_shader_support())
strcat(defines, "#extension GL_EXT_geometry_shader4: enable\n");
+
if (GPU_instanced_drawing_support()) {
strcat(defines, "#extension GL_EXT_gpu_shader4: enable\n");
strcat(defines, "#extension GL_ARB_draw_instanced: enable\n");
@@ -1683,8 +1684,6 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
if (vertexcode)
shader->vertex = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
- if (geocode)
- shader->geometry = glCreateShaderObjectARB(GL_GEOMETRY_SHADER_ARB);
if (fragcode)
shader->fragment = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
if (geocode)
@@ -1732,35 +1731,6 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
}
}
- if (geocode) {
- const char *source[5];
- /* custom limit, may be too small, beware */
- int num_source = 0;
-
- source[num_source++] = gpu_shader_version();
- source[num_source++] = standard_extensions;
- source[num_source++] = standard_defines;
-
- if (defines) source[num_source++] = defines;
- source[num_source++] = geocode;
-
- glAttachObjectARB(shader->object, shader->geometry);
- glShaderSourceARB(shader->geometry, num_source, source, NULL);
-
- glCompileShaderARB(shader->geometry);
- glGetObjectParameterivARB(shader->geometry,
- GL_OBJECT_COMPILE_STATUS_ARB,
- &status);
-
- if (!status) {
- glGetInfoLogARB(shader->geometry, sizeof(log), &length, log);
- shader_print_errors("compile", log, source, num_source);
-
- GPU_shader_free(shader);
- return NULL;
- }
- }
-
if (fragcode) {
const char *source[7];
int num_source = 0;
@@ -1824,7 +1794,9 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
return NULL;
}
- GPU_shader_geometry_stage_primitive_io(shader, input, output, number);
+ if (!use_opensubdiv) {
+ GPU_shader_geometry_stage_primitive_io(shader, input, output, number);
+ }
}
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index bc37424..1627c87 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -2416,8 +2416,8 @@ void GPU_material_update_fvar_offset(GPUMaterial *gpu_material,
DerivedMesh *dm)
{
GPUPass *pass = gpu_material->pass;
- GPUShader *shader = pass->shader;
- ListBase *inputs = &pass->inputs;
+ GPUShader *shader = (pass != NULL ? pass->shader : NULL);
+ ListBase *inputs = (pass != NULL ? &pass->inputs : NULL);
GPUInput *input;
if (shader == NULL) {
More information about the Bf-blender-cvs
mailing list