svn merge ^/trunk/blender -r43995:44024
authorCampbell Barton <ideasman42@gmail.com>
Sat, 11 Feb 2012 04:10:50 +0000 (04:10 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 11 Feb 2012 04:10:50 +0000 (04:10 +0000)
27 files changed:
CMakeLists.txt
doc/python_api/rst/gpu.rst
doc/python_api/sphinx_doc_gen.py
doc/python_api/sphinx_doc_gen.sh
extern/CMakeLists.txt
extern/binreloc/CMakeLists.txt
extern/bullet2/CMakeLists.txt
extern/carve/CMakeLists.txt
extern/colamd/CMakeLists.txt
extern/glew/CMakeLists.txt
extern/libmv/CMakeLists.txt
extern/libopenjpeg/CMakeLists.txt
extern/libredcode/CMakeLists.txt
extern/lzma/CMakeLists.txt
extern/lzo/CMakeLists.txt
extern/recastnavigation/CMakeLists.txt
intern/elbeem/intern/ntl_vector3dim.h
intern/elbeem/intern/utilities.h
release/scripts/startup/bl_operators/clip.py
release/scripts/startup/bl_operators/presets.py
source/blender/blenfont/BLF_api.h
source/blender/blenfont/intern/blf_glyph.c
source/blender/gpu/intern/gpu_extensions.c
source/blender/modifiers/CMakeLists.txt
source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
source/gameengine/Ketsji/KX_FontObject.cpp

index 4cd52245fefe2f4613eed2a9e90f95d1ad921f9c..f684c81cec2450feba8ab3d1c76636e54b259ba2 100644 (file)
@@ -1490,10 +1490,9 @@ if(MSVC10)
 endif()
 
 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-       if(WITH_IK_ITASC OR WITH_MOD_FLUID)
+       if(WITH_IK_ITASC)
                message(WARNING "Using Clang as CXX compiler: disabling WITH_IK_ITASC and WITH_MOD_FLUID, these features will be missing.")
                set(WITH_IK_ITASC OFF)
-               set(WITH_MOD_FLUID OFF)
        endif()
 endif()
 
index 2400e0476b3b85aad2f1b9939d864076f7da0cd3..68dc30b61438a2f4208564f69a0a51b84b884cf8 100644 (file)
@@ -1,13 +1,14 @@
+*******************
 GPU functions (gpu)
-===================
+*******************
 
 .. module:: gpu
 
 This module provides access to materials GLSL shaders.
 
-*****
+
 Intro
-*****
+=====
 
 Module to provide functions concerning the GPU implementation in Blender, in particular
 the GLSL shaders that blender generates automatically to render materials in the 3D view
@@ -15,16 +16,15 @@ and in the game engine.
 
 .. warning::
 
-    The API provided by this module should be consider unstable. The data exposed by the API 
-    are are closely related to Blender's internal GLSL code and may change if the GLSL code 
-    is modified (e.g. new uniform type). 
+   The API provided by this module should be consider unstable. The data exposed by the API
+   are are closely related to Blender's internal GLSL code and may change if the GLSL code
+   is modified (e.g. new uniform type).
 
 
-*********
 Constants
-*********
+=========
+
 
---------------
 GLSL data type
 --------------
 
@@ -59,15 +59,15 @@ See export_shader_
 .. data:: GPU_DATA_3F
 
    three floats
-   
+
    :value: 4
-   
+
 .. data:: GPU_DATA_4F
 
    four floats
-   
+
    :value: 5
-   
+
 .. data:: GPU_DATA_9F
 
    matrix 3x3 in column-major order
@@ -86,448 +86,450 @@ See export_shader_
 
    :value: 8
 
------------------
+
 GLSL uniform type
 -----------------
 
 .. _uniform-type:
 
-Constants that specify the type of uniform used in a GLSL shader. 
+Constants that specify the type of uniform used in a GLSL shader.
 The uniform type determines the data type, origin and method
-of calculation used by Blender to compute the uniform value. 
+of calculation used by Blender to compute the uniform value.
 
 The calculation of some of the uniforms is based on matrices available in the scene:
 
-    .. _mat4_cam_to_world:
-    .. _mat4_world_to_cam:
-
-    *mat4_cam_to_world*
-      Model matrix of the camera. OpenGL 4x4 matrix that converts 
-      camera local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the camera object.
-
-      Some uniform will need the *mat4_world_to_cam*
-      matrix computed as the inverse of this matrix.
-
-    .. _mat4_object_to_world:
-    .. _mat4_world_to_object:
-
-    *mat4_object_to_world*
-      Model matrix of the object that is being rendered. OpenGL 4x4 matric that converts
-      object local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the object.
-  
-      Some uniform will need the *mat4_world_to_object* matrix, computed as the inverse of this matrix.
-  
-    .. _mat4_lamp_to_world:
-    .. _mat4_world_to_lamp:
-
-    *mat4_lamp_to_world*
-      Model matrix of the lamp lighting the object. OpenGL 4x4 matrix that converts lamp
-      local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the lamp object.
-      
-      Some uniform will need the *mat4_world_to_lamp* matrix
-      computed as the inverse of this matrix.
+   .. _mat4_cam_to_world:
+   .. _mat4_world_to_cam:
+
+   *mat4_cam_to_world*
+     Model matrix of the camera. OpenGL 4x4 matrix that converts
+     camera local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the camera object.
+
+     Some uniform will need the *mat4_world_to_cam*
+     matrix computed as the inverse of this matrix.
+
+   .. _mat4_object_to_world:
+   .. _mat4_world_to_object:
+
+   *mat4_object_to_world*
+     Model matrix of the object that is being rendered. OpenGL 4x4 matric that converts
+     object local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the object.
+
+     Some uniform will need the *mat4_world_to_object* matrix, computed as the inverse of this matrix.
+
+   .. _mat4_lamp_to_world:
+   .. _mat4_world_to_lamp:
+
+   *mat4_lamp_to_world*
+     Model matrix of the lamp lighting the object. OpenGL 4x4 matrix that converts lamp
+     local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the lamp object.
+
+     Some uniform will need the *mat4_world_to_lamp* matrix
+     computed as the inverse of this matrix.
 
 .. data:: GPU_DYNAMIC_OBJECT_VIEWMAT
 
-    The uniform is a 4x4 GL matrix that converts world coordinates to 
-    camera coordinates (see mat4_world_to_cam_). Can be set once per frame.
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts world coordinates to
+   camera coordinates (see mat4_world_to_cam_). Can be set once per frame.
+   There is at most one uniform of that type per shader.
 
-    :value: 1
+   :value: 1
 
 .. data:: GPU_DYNAMIC_OBJECT_MAT
 
-    The uniform is a 4x4 GL matrix that converts object coordinates 
-    to world coordinates (see mat4_object_to_world_). Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts object coordinates
+   to world coordinates (see mat4_object_to_world_). Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
 
-    :value: 2
+   :value: 2
 
 .. data:: GPU_DYNAMIC_OBJECT_VIEWIMAT
 
-    The uniform is a 4x4 GL matrix that converts coordinates
-    in camera space to world coordinates (see mat4_cam_to_world_).
-    Can be set once per frame. 
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts coordinates
+   in camera space to world coordinates (see mat4_cam_to_world_).
+   Can be set once per frame.
+   There is at most one uniform of that type per shader.
 
-    :value: 3
+   :value: 3
 
 .. data:: GPU_DYNAMIC_OBJECT_IMAT
 
-    The uniform is a 4x4 GL matrix that converts world coodinates
-    to object coordinates (see mat4_world_to_object_).
-    Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
-   
-    :value: 4
-   
+   The uniform is a 4x4 GL matrix that converts world coodinates
+   to object coordinates (see mat4_world_to_object_).
+   Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
+
+   :value: 4
+
 .. data:: GPU_DYNAMIC_OBJECT_COLOR
 
-    The uniform is a vector of 4 float representing a RGB color + alpha defined at object level.
-    Each values between 0.0 and 1.0. In blender it corresponds to the 'color' attribute of the object.
-    Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
-   
-    :value: 5
-   
+   The uniform is a vector of 4 float representing a RGB color + alpha defined at object level.
+   Each values between 0.0 and 1.0. In blender it corresponds to the 'color' attribute of the object.
+   Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
+
+   :value: 5
+
 .. data:: GPU_DYNAMIC_LAMP_DYNVEC
 
-    The uniform is a vector of 3 float representing the direction of light in camera space.
-    In Blender, this is computed by 
+   The uniform is a vector of 3 float representing the direction of light in camera space.
+   In Blender, this is computed by
+
+   mat4_world_to_cam_ * (-vec3_lamp_Z_axis)
 
-    mat4_world_to_cam_ * (-vec3_lamp_Z_axis) 
+   as the lamp Z axis points to the opposite direction of light.
+   The norm of the vector should be unity. Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
 
-    as the lamp Z axis points to the opposite direction of light.
-    The norm of the vector should be unity. Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
+   :value: 6
 
-    :value: 6
-   
 .. data:: GPU_DYNAMIC_LAMP_DYNCO
 
-    The uniform is a vector of 3 float representing the position of the light in camera space.
-    Computed as 
-    
-    mat4_world_to_cam_ * vec3_lamp_pos
+   The uniform is a vector of 3 float representing the position of the light in camera space.
+   Computed as
+
+   mat4_world_to_cam_ * vec3_lamp_pos
+
+   Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
+
+   :value: 7
 
-    Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
-   
-    :value: 7
-   
 .. data:: GPU_DYNAMIC_LAMP_DYNIMAT
 
-    The uniform is a 4x4 GL matrix that converts vector in camera space to lamp space.
-    Computed as 
+   The uniform is a 4x4 GL matrix that converts vector in camera space to lamp space.
+   Computed as
 
-    mat4_world_to_lamp_ * mat4_cam_to_world_
+   mat4_world_to_lamp_ * mat4_cam_to_world_
 
-    Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
+   Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 8
+   :value: 8
 
 .. data:: GPU_DYNAMIC_LAMP_DYNPERSMAT
 
-    The uniform is a 4x4 GL matrix that converts a vector in camera space to shadow buffer depth space.
-    Computed as 
+   The uniform is a 4x4 GL matrix that converts a vector in camera space to shadow buffer depth space.
+   Computed as
 
-    mat4_perspective_to_depth_ * mat4_lamp_to_perspective_ * mat4_world_to_lamp_ * mat4_cam_to_world_.
+   mat4_perspective_to_depth_ * mat4_lamp_to_perspective_ * mat4_world_to_lamp_ * mat4_cam_to_world_.
 
-    .. _mat4_perspective_to_depth:
+   .. _mat4_perspective_to_depth:
 
-    *mat4_perspective_to_depth* is a fixed matrix defined as follow::
+   *mat4_perspective_to_depth* is a fixed matrix defined as follow::
 
-        0.5 0.0 0.0 0.5
-        0.0 0.5 0.0 0.5
-        0.0 0.0 0.5 0.5
-        0.0 0.0 0.0 1.0
+      0.5 0.0 0.0 0.5
+      0.0 0.5 0.0 0.5
+      0.0 0.0 0.5 0.5
+      0.0 0.0 0.0 1.0
 
-    This uniform can be set once per frame. There is one uniform of that type per lamp casting shadow in the scene.
+   This uniform can be set once per frame. There is one uniform of that type per lamp casting shadow in the scene.
 
-    :value: 9
+   :value: 9
 
 .. data:: GPU_DYNAMIC_LAMP_DYNENERGY
 
-    The uniform is a single float representing the lamp energy. In blender it corresponds
-    to the 'energy' attribute of the lamp data block.
-    There is one uniform of that type per lamp lighting the material.
+   The uniform is a single float representing the lamp energy. In blender it corresponds
+   to the 'energy' attribute of the lamp data block.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 10
+   :value: 10
 
 .. data:: GPU_DYNAMIC_LAMP_DYNCOL
 
-    The uniform is a vector of 3 float representing the lamp color. 
-    Color elements are between 0.0 and 1.0. In blender it corresponds
-    to the 'color' attribute of the lamp data block.
-    There is one uniform of that type per lamp lighting the material.
+   The uniform is a vector of 3 float representing the lamp color.
+   Color elements are between 0.0 and 1.0. In blender it corresponds
+   to the 'color' attribute of the lamp data block.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 11
+   :value: 11
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DBUFFER
 
-    The uniform is an integer representing an internal texture used for certain effect
-    (color band, etc). 
-       
-    :value: 12
+   The uniform is an integer representing an internal texture used for certain effect
+   (color band, etc).
+
+   :value: 12
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DIMAGE
 
-    The uniform is an integer representing a texture loaded from an image file. 
+   The uniform is an integer representing a texture loaded from an image file.
 
-    :value: 13
+   :value: 13
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DSHADOW
 
-    The uniform is an integer representing a shadow buffer corresponding to a lamp
-    casting shadow.
+   The uniform is an integer representing a shadow buffer corresponding to a lamp
+   casting shadow.
+
+   :value: 14
 
-    :value: 14
 
--------------------
 GLSL attribute type
 -------------------
 
 .. _attribute-type:
 
 Type of the vertex attribute used in the GLSL shader. Determines the mesh custom data
-layer that contains the vertex attribute. 
+layer that contains the vertex attribute.
 
 .. data:: CD_MTFACE
 
-    Vertex attribute is a UV Map. Data type is vector of 2 float.
+   Vertex attribute is a UV Map. Data type is vector of 2 float.
 
-    There can be more than one attribute of that type, they are differenciated by name.
-    In blender, you can retrieve the attribute data with:
+   There can be more than one attribute of that type, they are differenciated by name.
+   In blender, you can retrieve the attribute data with:
 
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.uv_textures[attribute['name']]
+      mesh.uv_textures[attribute["name"]]
 
-    :value: 5
+   :value: 5
 
 .. data:: CD_MCOL
 
-    Vertex attribute is color layer. Data type is vector 4 unsigned byte (RGBA).
+   Vertex attribute is color layer. Data type is vector 4 unsigned byte (RGBA).
 
-    There can be more than one attribute of that type, they are differenciated by name.
-    In blender you can retrieve the attribute data with:
+   There can be more than one attribute of that type, they are differenciated by name.
+   In blender you can retrieve the attribute data with:
 
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.vertex_colors[attribute['name']]
+      mesh.vertex_colors[attribute["name"]]
 
-    :value: 6
+   :value: 6
 
 .. data:: CD_ORCO
 
-    Vertex attribute is original coordinates. Data type is vector 3 float.
+   Vertex attribute is original coordinates. Data type is vector 3 float.
+
+   There can be only 1 attribute of that type per shader.
+   In blender you can retrieve the attribute data with:
 
-    There can be only 1 attribute of that type per shader.     
-    In blender you can retrieve the attribute data with:
-  
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.vertices
+      mesh.vertices
 
-    :value: 14
+   :value: 14
 
 .. data:: CD_TANGENT
 
-    Vertex attribute is the tangent vector. Data type is vector 4 float.
+   Vertex attribute is the tangent vector. Data type is vector 4 float.
 
-    There can be only 1 attribute of that type per shader.
-    There is currently no way to retrieve this attribute data via the RNA API but a standalone 
-    C function to compute the tangent layer from the other layers can be obtained from
-    blender.org.
+   There can be only 1 attribute of that type per shader.
+   There is currently no way to retrieve this attribute data via the RNA API but a standalone
+   C function to compute the tangent layer from the other layers can be obtained from
+   blender.org.
+
+   :value: 18
 
-    :value: 18
 
-*********
 Functions
-*********
+=========
 
 .. _export_shader:
 
 .. function:: export_shader(scene,material)
 
-    Extracts the GLSL shader producing the visual effect of material in scene for the purpose of 
-    reusing the shader in an external engine. This function is meant to be used in material exporter 
-    so that the GLSL shader can be exported entirely. The return value is a dictionary containing the
-    shader source code and all associated data. 
+   Extracts the GLSL shader producing the visual effect of material in scene for the purpose of
+   reusing the shader in an external engine. This function is meant to be used in material exporter
+   so that the GLSL shader can be exported entirely. The return value is a dictionary containing the
+   shader source code and all associated data.
 
-    :arg scene: the scene in which the material in rendered.
-    :type scene: :class:`bpy.types.Scene`
-    :arg material: the material that you want to export the GLSL shader
-    :type material: :class:`bpy.types.Material`
-    :return: the shader source code and all associated data in a dictionary
-    :rtype: dictionary
+   :arg scene: the scene in which the material in rendered.
+   :type scene: :class:`bpy.types.Scene`
+   :arg material: the material that you want to export the GLSL shader
+   :type material: :class:`bpy.types.Material`
+   :return: the shader source code and all associated data in a dictionary
+   :rtype: dictionary
 
-    The dictionary contains the following elements:
+   The dictionary contains the following elements:
 
-    * ['fragment'] : string
-        fragment shader source code.
-    
-    * ['vertex'] : string
-        vertex shader source code.
+   * ["fragment"] : string
+      fragment shader source code.
 
-    * ['uniforms'] : sequence
-        list of uniforms used in fragment shader, can be empty list. Each element of the
-        sequence is a dictionary with the following elements:
+   * ["vertex"] : string
+      vertex shader source code.
 
-        * ['varname'] : string
-            name of the uniform in the fragment shader. Always of the form 'unf<number>'.
+   * ["uniforms"] : sequence
+      list of uniforms used in fragment shader, can be empty list. Each element of the
+      sequence is a dictionary with the following elements:
 
-        * ['datatype'] : integer
-            data type of the uniform variable. Can be one of the following:
+      * ["varname"] : string
+         name of the uniform in the fragment shader. Always of the form 'unf<number>'.
 
-            * :data:`gpu.GPU_DATA_1I` : use glUniform1i
-            * :data:`gpu.GPU_DATA_1F` : use glUniform1fv
-            * :data:`gpu.GPU_DATA_2F` : use glUniform2fv
-            * :data:`gpu.GPU_DATA_3F` : use glUniform3fv
-            * :data:`gpu.GPU_DATA_4F` : use glUniform4fv
-            * :data:`gpu.GPU_DATA_9F` : use glUniformMatrix3fv
-            * :data:`gpu.GPU_DATA_16F` : use glUniformMatrix4fv
+      * ["datatype"] : integer
+         data type of the uniform variable. Can be one of the following:
 
-        * ['type'] : integer
-            type of uniform, determines the origin and method of calculation. See uniform-type_.
-            Depending on the type, more elements will be be present.
+         * :data:`gpu.GPU_DATA_1I` : use glUniform1i
+         * :data:`gpu.GPU_DATA_1F` : use glUniform1fv
+         * :data:`gpu.GPU_DATA_2F` : use glUniform2fv
+         * :data:`gpu.GPU_DATA_3F` : use glUniform3fv
+         * :data:`gpu.GPU_DATA_4F` : use glUniform4fv
+         * :data:`gpu.GPU_DATA_9F` : use glUniformMatrix3fv
+         * :data:`gpu.GPU_DATA_16F` : use glUniformMatrix4fv
 
-        * ['lamp'] : :class:`bpy.types.Object`
-            Reference to the lamp object from which the uniforms value are extracted. Set for the following uniforms types:
+      * ["type"] : integer
+         type of uniform, determines the origin and method of calculation. See uniform-type_.
+         Depending on the type, more elements will be be present.
 
-            .. hlist::
-               :columns: 3
+      * ["lamp"] : :class:`bpy.types.Object`
+         Reference to the lamp object from which the uniforms value are extracted. Set for the following uniforms types:
 
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL`
-               * :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`
+         .. hlist::
+            :columns: 3
 
-            Notes:
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL`
+            * :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`
 
-            * The uniforms :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
-              refer to the lamp object position and orientation, both of can be derived from the object world matrix:
+         Notes:
 
-              .. code-block:: python
+         * The uniforms :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
+            refer to the lamp object position and orientation, both of can be derived from the object world matrix:
 
-                obmat = uniform['lamp'].matrix_world
+            .. code-block:: python
 
-              where obmat is the mat4_lamp_to_world_ matrix of the lamp as a 2 dimensional array,
-              the lamp world location location is in obmat[3].
+               obmat = uniform["lamp"].matrix_world
 
-            * The uniform types :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL` refer to the lamp data bloc that you get from:
+            where obmat is the mat4_lamp_to_world_ matrix of the lamp as a 2 dimensional array,
+            the lamp world location location is in obmat[3].
 
-              .. code-block:: python
+         * The uniform types :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL` refer to the lamp data bloc that you get from:
 
-                la = uniform['lamp'].data
-          
-              from which you get la.energy and la.color
+            .. code-block:: python
 
-            * Lamp duplication is not supported: if you have duplicated lamps in your scene
-              (i.e. lamp that are instantiated by dupligroup, etc), this element will only 
-              give you a reference to the orignal lamp and you will not know which instance
-              of the lamp it is refering too. You can still handle that case in the exporter
-              by distributing the uniforms amongst the duplicated lamps.
-              
-        * ['image'] : :class:`bpy.types.Image`
-            Reference to the image databloc. Set for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE`. You can get the image data from:
+               la = uniform["lamp"].data
+
+            from which you get la.energy and la.color
+
+         * Lamp duplication is not supported: if you have duplicated lamps in your scene
+            (i.e. lamp that are instantiated by dupligroup, etc), this element will only
+            give you a reference to the orignal lamp and you will not know which instance
+            of the lamp it is refering too. You can still handle that case in the exporter
+            by distributing the uniforms amongst the duplicated lamps.
+
+      * ["image"] : :class:`bpy.types.Image`
+         Reference to the image databloc. Set for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE`. You can get the image data from:
+
+         .. code-block:: python
+
+            # full path to image file
+            uniform["image"].filepath
+            # image size as a 2-dimensional array of int
+            uniform["image"].size
+
+      * ["texnumber"] : integer
+         Channel number to which the texture is bound when drawing the object.
+         Set for uniform types :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`, :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE` and :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`.
+
+         This is provided for information only: when reusing the shader outside blencer,
+         you are free to assign the textures to the channel of your choice and to pass
+         that number channel to the GPU in the uniform.
+
+      * ["texpixels"] : byte array
+         texture data for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. Although
+         the corresponding uniform is a 2D sampler, the texture is always a 1D texture
+         of n x 1 pixel. The texture size n is provided in ["texsize"] element.
+         These texture are only used for computer generated texture (colorband, etc).
+         The texture data is provided so that you can make a real image out of it in the
+         exporter.
+
+      * ["texsize"] : integer
+         horizontal size of texture for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`.
+         The texture data is in ["texpixels"].
+
+   * ["attributes"] : sequence
+      list of attributes used in vertex shader, can be empty. Blender doesn't use
+      standard attributes except for vertex position and normal. All other vertex
+      attributes must be passed using the generic glVertexAttrib functions.
+      The attribute data can be found in the derived mesh custom data using RNA.
+      Each element of the sequence is a dictionary containing the following elements:
+
+      * ["varname"] : string
+         name of the uniform in the vertex shader. Always of the form 'att<number>'.
+
+      * ["datatype"] : integer
+         data type of vertex attribute, can be one of the following:
+
+         * :data:`gpu.GPU_DATA_2F` : use glVertexAttrib2fv
+         * :data:`gpu.GPU_DATA_3F` : use glVertexAttrib3fv
+         * :data:`gpu.GPU_DATA_4F` : use glVertexAttrib4fv
+         * :data:`gpu.GPU_DATA_4UB` : use glVertexAttrib4ubv
+
+      * ["number"] : integer
+         generic attribute number. This is provided for information only. Blender
+         doesn't use glBindAttribLocation to place generic attributes at specific location,
+         it lets the shader compiler place the attributes automatically and query the
+         placement with glGetAttribLocation. The result of this placement is returned in
+         this element.
+
+         When using this shader in a render engine, you should either use
+         glBindAttribLocation to force the attribute at this location or use
+         glGetAttribLocation to get the placement chosen by the compiler of your GPU.
+
+      * ["type"] : integer
+         type of the mesh custom data from which the vertex attribute is loaded.
+         See attribute-type_.
+
+      * ["name"] : string or integer
+         custom data layer name, used for attribute type :data:`gpu.CD_MTFACE` and :data:`gpu.CD_MCOL`.
+
+   Example:
+
+   .. code-block:: python
+
+      import gpu
+      # get GLSL shader of material Mat.001 in scene Scene.001
+      scene = bpy.data.scenes["Scene.001"]
+      material = bpy.data.materials["Mat.001"]
+      shader = gpu.export_shader(scene,material)
+      # scan the uniform list and find the images used in the shader
+      for uniform in shader["uniforms"]:
+          if uniform["type"] == gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE:
+              print("uniform {0} is using image {1}".format(uniform["varname"], uniform["image"].filepath))
+      # scan the attribute list and find the UV Map used in the shader
+      for attribute in shader["attributes"]:
+          if attribute["type"] == gpu.CD_MTFACE:
+              print("attribute {0} is using UV Map {1}".format(attribute["varname"], attribute["name"]))
 
-            .. code-block:: python
 
-               # full path to image file
-               uniform['image'].filepath
-               # image size as a 2-dimensional array of int
-               uniform['image'].size
-
-        * ['texnumber'] : integer
-            Channel number to which the texture is bound when drawing the object.
-            Set for uniform types :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`, :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE` and :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`.
-
-            This is provided for information only: when reusing the shader outside blencer, 
-            you are free to assign the textures to the channel of your choice and to pass
-            that number channel to the GPU in the uniform.
-
-        * ['texpixels'] : byte array
-            texture data for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. Although
-            the corresponding uniform is a 2D sampler, the texture is always a 1D texture
-            of n x 1 pixel. The texture size n is provided in ['texsize'] element. 
-            These texture are only used for computer generated texture (colorband, etc).
-            The texture data is provided so that you can make a real image out of it in the
-            exporter.
-               
-        * ['texsize'] : integer
-            horizontal size of texture for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. 
-            The texture data is in ['texpixels'].
-
-    * ['attributes'] : sequence
-        list of attributes used in vertex shader, can be empty. Blender doesn't use
-        standard attributes except for vertex position and normal. All other vertex
-        attributes must be passed using the generic glVertexAttrib functions.
-        The attribute data can be found in the derived mesh custom data using RNA.
-        Each element of the sequence is a dictionary containing the following elements:
-
-        * ['varname'] : string
-            name of the uniform in the vertex shader. Always of the form 'att<number>'.
-
-        * ['datatype'] : integer
-            data type of vertex attribute, can be one of the following:
-
-            * :data:`gpu.GPU_DATA_2F` : use glVertexAttrib2fv
-            * :data:`gpu.GPU_DATA_3F` : use glVertexAttrib3fv
-            * :data:`gpu.GPU_DATA_4F` : use glVertexAttrib4fv
-            * :data:`gpu.GPU_DATA_4UB` : use glVertexAttrib4ubv
-
-        * ['number'] : integer
-            generic attribute number. This is provided for information only. Blender 
-            doesn't use glBindAttribLocation to place generic attributes at specific location,
-            it lets the shader compiler place the attributes automatically and query the 
-            placement with glGetAttribLocation. The result of this placement is returned in 
-            this element. 
-
-            When using this shader in a render engine, you should either use
-            glBindAttribLocation to force the attribute at this location or use 
-            glGetAttribLocation to get the placement chosen by the compiler of your GPU.
-
-        * ['type'] : integer
-            type of the mesh custom data from which the vertex attribute is loaded. 
-            See attribute-type_.
-
-        * ['name'] : string or integer
-            custom data layer name, used for attribute type :data:`gpu.CD_MTFACE` and :data:`gpu.CD_MCOL`.
-
-    Example:
-
-    .. code-block:: python
-
-        import gpu
-        # get GLSL shader of material Mat.001 in scene Scene.001
-        scene = bpy.data.scenes['Scene.001']
-        material = bpy.data.materials['Mat.001']
-        shader = gpu.export_shader(scene,material)
-        # scan the uniform list and find the images used in the shader
-        for uniform in shader['uniforms']:
-            if uniform['type'] == gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE:
-                print("uniform {0} is using image {1}".format(uniform['varname'], uniform['image'].filepath))
-        # scan the attribute list and find the UV Map used in the shader
-        for attribute in shader['attributes']:
-            if attribute['type'] == gpu.CD_MTFACE:
-                print("attribute {0} is using UV Map {1}".format(attribute['varname'], attribute['name']))
-
-*****
 Notes
-*****
+=====
 
 .. _mat4_lamp_to_perspective:
 
 1. Calculation of the *mat4_lamp_to_perspective* matrix for a spot lamp.
 
-   The following pseudo code shows how the *mat4_lamp_to_perspective* matrix is computed 
+   The following pseudo code shows how the *mat4_lamp_to_perspective* matrix is computed
    in blender for uniforms of :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT` type::
 
-     #Get the lamp datablock with:
-     lamp=bpy.data.objects[uniform['lamp']].data
+   .. code-block:: python
+
+      #Get the lamp datablock with:
+      lamp = bpy.data.objects[uniform["lamp"]].data
 
-     #Compute the projection matrix:
-     #  You will need these lamp attributes:
-     #  lamp.clipsta : near clip plane in world unit
-     #  lamp.clipend : far clip plane in world unit
-     #  lamp.spotsize : angle in degree of the spot light
+      # Compute the projection matrix:
+      #  You will need these lamp attributes:
+      #  lamp.clipsta : near clip plane in world unit
+      #  lamp.clipend : far clip plane in world unit
+      #  lamp.spotsize : angle in degree of the spot light
 
-     #The size of the projection plane is computed with the usual formula:
-     wsize = lamp.clista * tan(lamp.spotsize/2)
+      # The size of the projection plane is computed with the usual formula:
+      wsize = lamp.clista * tan(lamp.spotsize/2)
 
-     #And the projection matrix:
-     mat4_lamp_to_perspective = glFrustum(-wsize,wsize,-wsize,wsize,lamp.clista,lamp.clipend)
+      #And the projection matrix:
+      mat4_lamp_to_perspective = glFrustum(-wsize, wsize, -wsize, wsize, lamp.clista, lamp.clipend)
 
 2. Creation of the shadow map for a spot lamp.
 
    The shadow map is the depth buffer of a render performed by placing the camera at the
-   spot light position. The size of the shadow map is given by the attribute lamp.bufsize : 
+   spot light position. The size of the shadow map is given by the attribute lamp.bufsize :
    shadow map size in pixel, same size in both dimensions.
index 29fcec58ae8c16e68fc9a9e326f3aac108f96314..9540039882e89df759e393fba873e3a7c3624b4b 100644 (file)
@@ -1135,7 +1135,9 @@ def rna2sphinx(BASEPATH):
     fw("\n")
     fw("Welcome, this document is an API reference for Blender %s. built %s.\n" % (version_string, bpy.app.build_date))
     fw("\n")
-    fw("`A PDF version of this document is also available <blender_python_reference_%s.pdf>`_\n" % version_string_pdf)
+
+    # fw("`A PDF version of this document is also available <blender_python_reference_%s.pdf>`_\n" % version_string_pdf)
+    fw("`A compressed ZIP file of this site is available <blender_python_reference_%s.zip>`_\n" % version_string_pdf)
 
     fw("\n")
 
index fad9bfbbf902a5627c4feccf5815fde2be8135c0..1698e9892bc79df52199369441a05f655927d10b 100755 (executable)
@@ -11,7 +11,8 @@
 DO_UPLOAD=true
 DO_EXE_BLENDER=true
 DO_OUT_HTML=true
-DO_OUT_PDF=true
+DO_OUT_HTML_ZIP=true
+DO_OUT_PDF=false
 
 
 BLENDER="./blender.bin"
@@ -61,6 +62,17 @@ if $DO_OUT_HTML ; then
        # annoying bug in sphinx makes it very slow unless we do this. should report.
        cd $SPHINXBASE
        sphinx-build -n -b html sphinx-in sphinx-out
+
+       # ------------------------------------------------------------------------
+       # ZIP the HTML dir for upload
+
+       if $DO_OUT_HTML_ZIP ; then
+               # lame, temp rename dir
+               mv sphinx-out blender_python_reference_$BLENDER_VERSION
+               zip -r -9 blender_python_reference_$BLENDER_VERSION.zip blender_python_reference_$BLENDER_VERSION
+               mv blender_python_reference_$BLENDER_VERSION sphinx-out
+       fi
+
        cd -
 fi
 
@@ -74,6 +86,7 @@ if $DO_OUT_PDF ; then
        mv $SPHINXBASE/sphinx-out/contents.pdf $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf
 fi
 
+
 # ----------------------------------------------------------------------------
 # Upload to blender servers, comment this section for testing
 
@@ -89,8 +102,14 @@ if $DO_UPLOAD ; then
        # better redirect
        ssh $SSH_USER@emo.blender.org 'echo "<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\" content=\"0;url=../blender_python_api_'$BLENDER_VERSION'/\"></head><body>Redirecting...</body></html>" > '$SSH_UPLOAD'/250PythonDoc/index.html'
 
-       # rename so local PDF has matching name.
-       rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
+       if $DO_OUT_PDF ; then
+               # rename so local PDF has matching name.
+               rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
+       fi
+
+       if $DO_OUT_HTML_ZIP ; then
+               rsync --progress -avze "ssh -p 22" $SPHINXBASE/blender_python_reference_$BLENDER_VERSION.zip $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.zip
+       fi
 
 fi
 
index 6215673eb44b39af85d50484243410412382a1f1..8442e5d0c712939164db0f3a0cad74e69db4d871 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 753e28091d33ea44556648bac73938737de5e735..524b884450ce391ba00b64aa10797e94f12acfd9 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2008 by The Blender Foundation
 # All rights reserved.
index 58841d606cff24ad08a8f3a66e78da6b29f0131c..51b295e897f9dba9cbae43b35c5614f8a1a4af2f 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index abd35d33c1cd9e89dfe6dce62dc4ef4f17497d89..cbf92ee293ef9dadc488935f1d72903183ff4071 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 5b565518e4f8d77abb4b3c2301acd2f0f1adaca5..3019ee5904e8f0d116c73283aef955e137f03202 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
index 9704c137f8bb7636ab17f8e6ae37df37e08f1d29..34f6707398dfdc083abf45806f8d08f974e3e3bb 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 1e370e5f31b6a57c455853226349129445729322..075ff15a798971abf9b7646be358b5e107293258 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
index 8b79394c05342f03d13fc831f71439ee657cf490..6967048ac83362e9d34b8072d9c4dac8c0960cb1 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 02e219fa8713a79880136147547b39dac9dc9e53..c9d2bfc8fd623f9352859835b47233aa6cb676d2 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 89993d61491bb46f1b8d9d727390fa1863c3b677..31670f595f6575c5ca750624524e8a30763e2330 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 75b3605f75b98c4c732ea29f2d36f4b0b07cda56..5172a96e599d2b5bc9a319e4bb5f2c5878f3d7d8 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 05c62936dc0fb76f77b8b6393ac9f9f373d7d918..d6c7fd357b1b230957b18f0e69dcd59a2081f890 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 02d54dd5e0134449596704b568172cc75d6a4e62..1e9728d7658ccaf46726ef01fd341a1aa70bd887 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 
+/* absolute value */
+template < class T >
+inline T
+ABS( T a )
+{ return (0 < a) ? a : -a ; }
+
 // hack for MSVC6.0 compiler
 #ifdef _MSC_VER
 #if _MSC_VER < 1300
index dd3940059883cfad8854aafec5f506305c19da09..2b33c142e32c36139972c26aa6c7f3cae1c19af7 100644 (file)
@@ -177,12 +177,6 @@ inline T
 MAX( T a, T b )
 { return (a < b) ? b : a ; }
 
-/* absolute value */
-template < class T >
-inline T
-ABS( T a )
-{ return (0 < a) ? a : -a ; }
-
 /* sign of the value */
 template < class T >
 inline T
index 9e4a5819961194c882c1db3d9952d2cd769e460f..7a80b432c3a74148f975ba12de50a39e14d264ba 100644 (file)
@@ -143,6 +143,7 @@ class CLIP_OT_track_to_empty(Operator):
         if constraint is None:
             constraint = ob.constraints.new(type='FOLLOW_TRACK')
 
+        constraint.use_active_clip = False
         constraint.clip = sc.clip
         constraint.track = track.name
         constraint.use_3d_position = False
index 946543cc864f75dd660ca7cbc7d7af214dec69b8..f317295d2e5805483b5a16e2060bf08f2d54231d 100644 (file)
@@ -35,10 +35,11 @@ class AddPresetBase():
             name="Name",
             description="Name of the preset, used to make the path name",
             maxlen=64,
+            options={'SKIP_SAVE'},
             )
     remove_active = bpy.props.BoolProperty(
             default=False,
-            options={'HIDDEN'},
+            options={'HIDDEN', 'SKIP_SAVE'},
             )
 
     @staticmethod
index 8752defcc15f50b284f7af6ab4690c8023d6e535..a045f47cb40293717d15c478173f91fd1a874252 100644 (file)
@@ -197,7 +197,6 @@ void BLF_dir_free(char **dirs, int count);
 #define BLF_KERNING_DEFAULT (1<<3)
 #define BLF_MATRIX (1<<4)
 #define BLF_ASPECT (1<<5)
-#define BLF_TEXFILTER (1<<6)
 
 #define BLF_DRAW_STR_DUMMY_MAX 1024
 
index ab7ef8072a9808741fe34db50ec78f2065ab3bdb..f0cfcdc97b9a1d4f3de36359b68d03a5ce73d76e 100644 (file)
@@ -54,8 +54,6 @@
 #include "blf_internal_types.h"
 #include "blf_internal.h"
 
-#define _BLF_PADDING 3
-#define _BLF_MIPMAP_LEVELS 3
 
 GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, int size, int dpi)
 {
@@ -89,11 +87,7 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
        gc->cur_tex= -1;
        gc->x_offs= 0;
        gc->y_offs= 0;
-       /* Increase padding for each mipmap level: 0->3, 1->4, 2->6, 3->10, ... */
-       if (font->flags & BLF_TEXFILTER)
-               gc->pad= pow(2, _BLF_MIPMAP_LEVELS) + 2;
-       else
-               gc->pad= _BLF_PADDING;
+       gc->pad= 3;
 
        gc->num_glyphs= font->face->num_glyphs;
        gc->rem_glyphs= font->face->num_glyphs;
@@ -302,17 +296,13 @@ void blf_glyph_free(GlyphBLF *g)
 
 static void blf_texture_draw(float uv[2][2], float dx, float y1, float dx1, float y2)
 {
-       /* When a string is being rendered as individual glyphs (as in the game
-        * engine), the leading edge needs to be raised a fraction to prevent
-        * z-fighting for kerned characters. - z0r */
-       const float twist = (dx1 - dx) * 0.0002f;
-
+       
        glBegin(GL_QUADS);
        glTexCoord2f(uv[0][0], uv[0][1]);
-       glVertex3f(dx, y1, twist);
+       glVertex2f(dx, y1);
        
        glTexCoord2f(uv[0][0], uv[1][1]);
-       glVertex3f(dx, y2, twist);
+       glVertex2f(dx, y2);
        
        glTexCoord2f(uv[1][0], uv[1][1]);
        glVertex2f(dx1, y2);
@@ -415,15 +405,6 @@ int blf_glyph_render(FontBLF *font, GlyphBLF *g, float x, float y)
 
                glBindTexture(GL_TEXTURE_2D, g->tex);
                glTexSubImage2D(GL_TEXTURE_2D, 0, g->xoff, g->yoff, g->width, g->height, GL_ALPHA, GL_UNSIGNED_BYTE, g->bitmap);
-               if (font->flags & BLF_TEXFILTER) {
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL,
-                                       _BLF_MIPMAP_LEVELS);
-                       glGenerateMipmap(GL_TEXTURE_2D);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
-                                       GL_LINEAR_MIPMAP_LINEAR);
-               }
                glPopClientAttrib();
 
                g->uv[0][0]= ((float)g->xoff) / ((float)gc->p2_width);
index a6672130dc304b3725e44b9608c1782bb3d27ea1..a3e3eb19a5b2cd89afe9b656a7078e1975eeb894 100644 (file)
@@ -174,7 +174,8 @@ void GPU_extensions_init(void)
                   strstr(renderer, "R5") || strstr(renderer, "RV5") ||
                   strstr(renderer, "RS600") || strstr(renderer, "RS690") ||
                   strstr(renderer, "RS740") || strstr(renderer, "X1") ||
-                  strstr(renderer, "X2"))
+                  strstr(renderer, "X2") || strstr(renderer, "Radeon 9") ||
+                  strstr(renderer, "RADEON 9"))
                        GG.npotdisabled = 1;
        }
 
index 6ccd71dd6a733c7c171fb98c8a12f22fed10e145..8170481cfd6560d8d594c139758d4c7bd690a990 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 78dcfc8edd9120bc3f8aff5d92b9b515839772dd..7a99a4a1419877ffb903bc034dd5eee12fea4eec 100644 (file)
@@ -136,8 +136,8 @@ void BL_print_game_line(int fontid, const char* text, int size, int dpi, float*
        /* the actual drawing */
        glColor4fv(color);
 
-       BLF_enable(fontid, BLF_MATRIX|BLF_ASPECT|BLF_TEXFILTER);
        /* multiply the text matrix by the object matrix */
+       BLF_enable(fontid, BLF_MATRIX|BLF_ASPECT);
        BLF_matrix(fontid, mat);
 
        /* aspect is the inverse scale that allows you to increase */
@@ -149,7 +149,7 @@ void BL_print_game_line(int fontid, const char* text, int size, int dpi, float*
        BLF_position(fontid, 0, 0, 0);
        BLF_draw(fontid, (char *)text, 65535);
 
-       BLF_disable(fontid, BLF_MATRIX|BLF_ASPECT|BLF_TEXFILTER);
+       BLF_disable(fontid, BLF_MATRIX|BLF_ASPECT);
 }
 
 void BL_print_gamedebug_line(const char* text, int xco, int yco, int width, int height)
index b06a9783b5071eea09c777f754420399eca2470d..55e3220c08caafff3a0b5b2bf81347eeea690369 100644 (file)
@@ -292,10 +292,10 @@ void GPC_RenderTools::RenderText3D(       int fontid,
                                                                        float aspect)
 {
        /* the actual drawing */
-       glColor3fv(color);
+       glColor4fv(color);
  
-       BLF_enable(fontid, BLF_MATRIX|BLF_ASPECT|BLF_TEXFILTER);
        /* multiply the text matrix by the object matrix */
+       BLF_enable(fontid, BLF_MATRIX|BLF_ASPECT);
        BLF_matrix(fontid, mat);
 
        /* aspect is the inverse scale that allows you to increase */
@@ -307,7 +307,7 @@ void GPC_RenderTools::RenderText3D( int fontid,
        BLF_position(fontid, 0, 0, 0);
        BLF_draw(fontid, text, 65535);
 
-       BLF_disable(fontid, BLF_MATRIX|BLF_ASPECT|BLF_TEXFILTER);
+       BLF_disable(fontid, BLF_MATRIX|BLF_ASPECT);
        glEnable(GL_DEPTH_TEST);
 }
 
index 8cce9471587222eda1cb64083706d617b0dd7f5b..519ff97a2a244102e8a1f7885595324e312fc3d9 100644 (file)
@@ -173,10 +173,10 @@ void KX_FontObject::DrawText()
        this->GetObjectColor().getValue(m_color);
 
        /* HARDCODED MULTIPLICATION FACTOR - this will affect the render resolution directly */
-       float RES = BGE_FONT_RES * m_resolution;
+       const float RES = BGE_FONT_RES * m_resolution;
 
-       float size = m_fsize * m_object->size[0] * RES;
-       float aspect = 1.f / (m_object->size[0] * RES);
+       const float size = m_fsize * this->NodeGetWorldScaling()[0] * RES;
+       const float aspect = m_fsize / size;
 
        /* Get a working copy of the OpenGLMatrix to use */
        double mat[16];