[Bf-blender-cvs] [9d85470] temp_viewport_fx_merge: Merge branch 'master' into temp_viewport_fx_merge
Antony Riakiotakis
noreply at git.blender.org
Wed Apr 1 11:34:40 CEST 2015
Commit: 9d854700d613210e26e9693bfde78afc566e07a9
Author: Antony Riakiotakis
Date: Wed Apr 1 11:34:30 2015 +0200
Branches: temp_viewport_fx_merge
https://developer.blender.org/rB9d854700d613210e26e9693bfde78afc566e07a9
Merge branch 'master' into temp_viewport_fx_merge
Conflicts:
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/gpu/GPU_extensions.h
source/blender/gpu/intern/gpu_draw.c
source/blender/gpu/intern/gpu_extensions.c
===================================================================
===================================================================
diff --cc source/blender/editors/space_view3d/drawobject.c
index a80f708,f14c19d..53b3514
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@@ -6420,19 -6428,20 +6421,16 @@@ static void draw_empty_sphere(float siz
/* draw a cone for use as an empty drawtype */
static void draw_empty_cone(float size)
{
- const float radius = size;
+ struct GPUprim3 prim = GPU_PRIM_LOFI_WIRE;
- float cent = 0;
+ float radius;
- GLUquadricObj *qobj = gluNewQuadric();
- gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
-
glPushMatrix();
- radius = size;
- glTranslatef(cent, cent, cent);
glScalef(radius, size * 2.0f, radius);
glRotatef(-90.0, 1.0, 0.0, 0.0);
- gluCylinder(qobj, 1.0, 0.0, 1.0, 8, 1);
+ gpuDrawCylinder(&prim, 1.0f, 0.0f, 1.0f);
glPopMatrix();
-
- gluDeleteQuadric(qobj);
}
static void drawspiral(const float cent[3], float rad, float tmat[4][4], int start)
diff --cc source/blender/editors/space_view3d/view3d_edit.c
index 634cea3,671fc68..1951bdb
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@@ -83,9 -80,7 +80,10 @@@
#include "view3d_intern.h" /* own include */
++<<<<<<< HEAD
+#include "GPU_matrix.h"
+
- bool ED_view3d_offset_lock_check(struct View3D *v3d, struct RegionView3D *rv3d)
+ bool ED_view3d_offset_lock_check(const View3D *v3d, const RegionView3D *rv3d)
{
return (rv3d->persp != RV3D_CAMOB) && (v3d->ob_centre_cursor || v3d->ob_centre);
}
diff --cc source/blender/gpu/CMakeLists.txt
index 1d3d341,97b0e7e..5eb5b38
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@@ -138,21 -102,11 +141,24 @@@ data_to_c_simple(shaders/gpu_shader_fx_
data_to_c_simple(shaders/gpu_shader_fx_ssao_frag.glsl SRC)
data_to_c_simple(shaders/gpu_shader_fx_dof_frag.glsl SRC)
data_to_c_simple(shaders/gpu_shader_fx_dof_vert.glsl SRC)
+ data_to_c_simple(shaders/gpu_shader_fx_dof_hq_frag.glsl SRC)
+ data_to_c_simple(shaders/gpu_shader_fx_dof_hq_vert.glsl SRC)
+ data_to_c_simple(shaders/gpu_shader_fx_dof_hq_geo.glsl SRC)
data_to_c_simple(shaders/gpu_shader_fx_depth_resolve.glsl SRC)
data_to_c_simple(shaders/gpu_shader_fx_lib.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_common_uniforms.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_common_constants.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_common_attribs.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_pixels_uniforms.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_pixels_vert.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_pixels_frag.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_raster_uniforms.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_raster_vert.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_raster_frag.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_font_vert.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_font_frag.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_basic_vert.glsl SRC)
+data_to_c_simple(shaders/gpu_shader_basic_frag.glsl SRC)
if(WITH_GAMEENGINE)
add_definitions(-DWITH_GAMEENGINE)
diff --cc source/blender/gpu/GPU_extensions.h
index 76a66cd,de0af81..d400c31
--- a/source/blender/gpu/GPU_extensions.h
+++ b/source/blender/gpu/GPU_extensions.h
@@@ -64,7 -66,7 +66,8 @@@ bool GPU_instanced_drawing_support(void
int GPU_max_texture_size(void);
int GPU_color_depth(void);
+int GPU_max_textures(void);
+ void GPU_get_dfdy_factors(float fac[2]);
void GPU_code_generate_glsl_lib(void);
diff --cc source/blender/gpu/intern/gpu_draw.c
index ce78e736,7f3a998..c70a671
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@@ -729,10 -723,13 +728,10 @@@ void GPU_create_gl_tex(unsigned int *bi
glBindTexture(GL_TEXTURE_2D, *bind);
if (use_high_bit_depth) {
- if (GLEW_ARB_texture_float)
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, rectw, recth, 0, GL_RGBA, GL_FLOAT, frect);
- else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16, rectw, recth, 0, GL_RGBA, GL_FLOAT, frect);
+ glTexImage2D(GL_TEXTURE_2D, 0, internal_format, rectw, recth, 0, GL_RGBA, GL_FLOAT, frect);
}
else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rectw, recth, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rectw, recth, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter(1));
diff --cc source/blender/gpu/intern/gpu_extensions.c
index 9f7ab6e,363e199..26910e1
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@@ -140,56 -148,11 +148,61 @@@ int GPU_max_texture_size(void
return GG.maxtexsize;
}
+/* Computes the maximum number of textures 'n' that
+ * can be referenced by ActiveTexture(TEXTURE0+n-1)
+ *
+ * This is for any use of ActiveTexture.
+ *
+ * Individual limits, such as for the multitexture extension, gl_TexCoord,
+ * vertex shaders, fragment shader, etc. will each have different limits.
+ */
+static GLint get_max_textures(void)
+ {
+ GLint maxTextureUnits;
+ GLint maxTextureCoords;
+ GLint maxCombinedTextureImageUnits;
+
+ /* There has to be at least one texture so count that here */
+ maxTextureUnits = 1;
+
+#if !defined(GLEW_ES_ONLY)
+ if (GPU_PROFILE_COMPAT && (GLEW_VERSION_1_3 || GLEW_ARB_multitexture)) {
+ /* Multitexture typically supports only 2 or 4 texture stages even on modern hardware. */
+ glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxTextureUnits);
+ }
+#endif
+
+ /* Set to zero here in case they do not get set later */
+ maxTextureCoords = 0;
+ maxCombinedTextureImageUnits = 0;
+
+ if (GLEW_VERSION_2_0 || GLEW_ARB_fragment_program) {
+#if !defined(GLEW_ES_ONLY)
+ if (GPU_PROFILE_COMPAT) {
+ /* size of gl_TexCoord array in GLSL */
+ glGetIntegerv(GL_MAX_TEXTURE_COORDS, &maxTextureCoords);
+ }
+#endif
+
+ /* Number of textures accessible by vertex, fragment, and geometry shaders combined.
+ * Individually the limits for each of those programmable units may be smaller. */
+ glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxCombinedTextureImageUnits);
+ }
+
+ return MAX3(maxTextureUnits, maxTextureCoords, maxCombinedTextureImageUnits);
+}
+
+int GPU_max_textures(void)
+{
+ return GG.maxtextures;
+}
+
+
+ void GPU_get_dfdy_factors(float fac[2])
+ {
+ copy_v2_v2(fac, GG.dfdyfactors);
+ }
+
void gpu_extensions_init(void)
{
GLint r, g, b;
@@@ -289,9 -253,22 +303,23 @@@
GG.os = GPU_OS_UNIX;
#endif
-
+ GG.maxtextures = get_max_textures();
+ /* df/dy calculation factors, those are dependent on driver */
+ if ((strstr(vendor, "ATI") && strstr(version, "3.3.10750"))) {
+ GG.dfdyfactors[0] = 1.0;
+ GG.dfdyfactors[1] = -1.0;
+ }
+ else if (GG.device == GPU_DEVICE_INTEL && GG.os == GPU_OS_WIN) {
+ GG.dfdyfactors[0] = -1.0;
+ GG.dfdyfactors[1] = 1.0;
+ }
+ else {
+ GG.dfdyfactors[0] = 1.0;
+ GG.dfdyfactors[1] = 1.0;
+ }
+
+
GPU_invalid_tex_init();
GPU_simple_shaders_init();
}
More information about the Bf-blender-cvs
mailing list