3 years agoFix Cycles OSL image texture issue after recent refactor.
Brecht Van Lommel [Sun, 19 Jun 2016 15:54:01 +0000 (17:54 +0200)]
Fix Cycles OSL image texture issue after recent refactor.

3 years agoCycles: reduce CUDA stack memory access for Maxwell and up, increasing max registers.
Brecht Van Lommel [Sun, 19 Jun 2016 16:06:22 +0000 (18:06 +0200)]
Cycles: reduce CUDA stack memory access for Maxwell and up, increasing max registers.

For non-branched path tracing with a GTX 960 and CUDA 7.5, this gives a small reduction
in stack usage but mainly: 8% faster render on BMW, 5% on pabellon, 13% on classroom.

3 years agoCycles tests: raise failure threshold, copy failed image for comparison.
Brecht Van Lommel [Mon, 13 Jun 2016 22:39:49 +0000 (00:39 +0200)]
Cycles tests: raise failure threshold, copy failed image for comparison.

3 years agoFix Cycles assert after recent half changes.
Brecht Van Lommel [Sun, 19 Jun 2016 18:17:03 +0000 (20:17 +0200)]
Fix Cycles assert after recent half changes.

3 years agoFix return type in case of single channel half.
Thomas Dinges [Sun, 19 Jun 2016 15:38:39 +0000 (17:38 +0200)]
Fix return type in case of single channel half.

3 years agoCycles: Support half and half4 textures.
Thomas Dinges [Sun, 19 Jun 2016 15:31:16 +0000 (17:31 +0200)]
Cycles: Support half and half4 textures.

This is an initial commit for half texture support in Cycles.
It adds the basic infrastructure inside of the ImageManager and support for these textures on CPU.

* Half Float OpenEXR images (can be used for e.g HDRs or Normalmaps) now use 1/2 the memory, when loaded via disk (OIIO).

Various things like support for inbuilt half textures, GPU... will come later, step by step.

Part of my GSoC 2016.

3 years agoFix broken combine XYZ node after recent refactoring.
Brecht Van Lommel [Sat, 18 Jun 2016 20:36:42 +0000 (22:36 +0200)]
Fix broken combine XYZ node after recent refactoring.

3 years agoCleanup: style, whitespace, doxy filepaths
Campbell Barton [Sat, 18 Jun 2016 20:25:54 +0000 (06:25 +1000)]
Cleanup: style, whitespace, doxy filepaths

3 years agoFix T48671: Cycles crash with OSL nodes and bump after recent refactoring.
Brecht Van Lommel [Sat, 18 Jun 2016 10:30:59 +0000 (12:30 +0200)]
Fix T48671: Cycles crash with OSL nodes and bump after recent refactoring.

3 years agoFix T46492: GGX distribution produces black pixels
Sergey Sharybin [Fri, 17 Jun 2016 14:30:29 +0000 (16:30 +0200)]
Fix T46492: GGX distribution produces black pixels

The issue was caused by some numerical instability.

3 years agoFix T48667: Bisect-fill crash
Campbell Barton [Fri, 17 Jun 2016 11:45:56 +0000 (21:45 +1000)]
Fix T48667: Bisect-fill crash

BMO iterator would loop over removed faces.

Recent changes to mempool FREEWORD size exposed this bug.

3 years agoFix T48662: Blender crash using node groups connected with displacement output in...
Sergey Sharybin [Fri, 17 Jun 2016 10:14:36 +0000 (12:14 +0200)]
Fix T48662: Blender crash using node groups connected with displacement output in some situations

3 years agoFix T48657: Incorrect render with Cycles (CPU) using texture
Lukas Stockner [Fri, 17 Jun 2016 03:20:47 +0000 (05:20 +0200)]
Fix T48657: Incorrect render with Cycles (CPU) using texture

The sockets of the RGB to BW node were set to the wrong type after the recent node refactor.

3 years agoFix/cleanup BKE libquery's ID looper.
Bastien Montagne [Thu, 16 Jun 2016 19:09:01 +0000 (21:09 +0200)]
Fix/cleanup BKE libquery's ID looper.

Some area were still not in sync with readfile.c, now should be better.

Note that readfile.c has been used as référence here re us refcounting,
not sure how accurate it is, time will say :|

3 years agoreadfile.c: fix some wrong usages of newlibadr_us.
Bastien Montagne [Thu, 16 Jun 2016 18:31:11 +0000 (20:31 +0200)]
readfile.c: fix some wrong usages of newlibadr_us.

There are most likely some more still, but think this should now be inline with
libquery looper...

3 years agoReadfile cleanup: add new newlibadr_real_us helper.
Bastien Montagne [Thu, 16 Jun 2016 17:23:09 +0000 (19:23 +0200)]
Readfile cleanup: add new newlibadr_real_us helper.

3 years agoVertex paint color operations
Campbell Barton [Thu, 16 Jun 2016 15:45:40 +0000 (01:45 +1000)]
Vertex paint color operations

D2050 by @metaraptor with edits

Adds levels, brightness/contrast, hsv & invert operations.

3 years agoCorrect error in recent commit
Campbell Barton [Thu, 16 Jun 2016 12:11:36 +0000 (22:11 +1000)]
Correct error in recent commit

3 years agoFix some rare asserts with new simple/random particle distribution code.
Bastien Montagne [Thu, 16 Jun 2016 12:05:53 +0000 (14:05 +0200)]
Fix some rare asserts with new simple/random particle distribution code.

Optimization in binary search could lead to equality instead of expected strictly greater than value.
Harmless but noisy, and better be strict here.

reported by sergey on irc (with koro cycles benchmark file), thanks.

3 years agoBMesh Decimate: use doubles to calculate optimized position
Campbell Barton [Tue, 14 Jun 2016 06:47:05 +0000 (16:47 +1000)]
BMesh Decimate: use doubles to calculate optimized position

This allows the error threshold for calculating the optimized location to be much lower.

Resolves visible artifacts w/ 1m-tri happy-buddha example.

3 years agoBLI_math: Add double versions of functions
Campbell Barton [Tue, 14 Jun 2016 06:43:14 +0000 (16:43 +1000)]
BLI_math: Add double versions of functions

- mul_v3_m3v3_db
- mul_m3_v3_db
- negate_v3_db

3 years agoFix ruler crash using stale snap-context
Campbell Barton [Thu, 16 Jun 2016 08:47:16 +0000 (18:47 +1000)]
Fix ruler crash using stale snap-context

Since ruler allows other operators to run (such as mode-switching).
Only cache snap-context while dragging.

3 years agoBMesh Decimate: support ngons
Campbell Barton [Wed, 15 Jun 2016 18:27:48 +0000 (04:27 +1000)]
BMesh Decimate: support ngons

3 years agoFix error splitting convex faces
Campbell Barton [Wed, 15 Jun 2016 17:43:22 +0000 (03:43 +1000)]
Fix error splitting convex faces

Created double faces, leaked memory.

3 years agoFix T48654: outline text visible while renaming
Campbell Barton [Wed, 15 Jun 2016 11:46:32 +0000 (21:46 +1000)]
Fix T48654: outline text visible while renaming

Both button and rename text would draw while renaming,
caused issues with some themes.

3 years agoFix region_2d_to_origin_3d not working with ortho view
Dalai Felinto [Tue, 14 Jun 2016 20:59:25 +0000 (17:59 -0300)]
Fix region_2d_to_origin_3d not working with ortho view

In some cases when:
* the viewport was in the camera mode
* the camera was ortho
* the view was not fitting (as oppose to use HOME)

region_2d_to_origin_3d would misbehave (and consequently region_2d_to_location_3d).

Sample addon to test it:
import bpy

from bpy_extras.view3d_utils import (

from mathutils import (

class MoveXYOperator(bpy.types.Operator):
    """Translate the view using mouse events"""
    bl_idname = "view3d.move_xy"
    bl_label = "Move XY"

    def poll(cls, context):
        return context.object

    def modal(self, context, event):
        if event.type == 'MOUSEMOVE':
            self.move(context, event)

        elif event.type in {'LEFTMOUSE', 'RIGHTMOUSE', 'ESC'}:
            return {'FINISHED'}

        return {'RUNNING_MODAL'}

    def invoke(self, context, event):
        if context.space_data.type == 'VIEW_3D':
            self.ob = context.object
            return {'RUNNING_MODAL'}
  {'WARNING'}, "Active space must be a View3d")
            return {'CANCELLED'}

    def move(self, context, event):
        xy = region_2d_to_location_3d(
                (event.mouse_region_x, event.mouse_region_y),

        self.ob.location.xy = xy

def register():

def unregister():

if __name__ == "__main__":

3 years agoText Editor: auto-complete removed entire word on undo
Campbell Barton [Tue, 14 Jun 2016 18:28:13 +0000 (04:28 +1000)]
Text Editor: auto-complete removed entire word on undo

3 years agoVSE: minor drawing glitch with meta's
Campbell Barton [Tue, 14 Jun 2016 16:51:34 +0000 (02:51 +1000)]
VSE: minor drawing glitch with meta's

Meta contents could obscure meta selection outline, draw after.

3 years agoCorrect update issue caused by recent commit
Campbell Barton [Tue, 14 Jun 2016 18:05:55 +0000 (04:05 +1000)]
Correct update issue caused by recent commit

VSE effects within a meta-strip could fail to update on cancel.

3 years agoFix VSE updating effects within metas
Campbell Barton [Tue, 14 Jun 2016 16:43:25 +0000 (02:43 +1000)]
Fix VSE updating effects within metas

Missing update caused internal lengths to be wrong.

3 years agoCleanup: Remove outdated comment, visibility layers in kernel have been removed.
Thomas Dinges [Tue, 14 Jun 2016 14:46:44 +0000 (16:46 +0200)]
Cleanup: Remove outdated comment, visibility layers in kernel have been removed.

3 years agoFileSpace cleanup: make ED_path_extension_type public.
Bastien Montagne [Tue, 14 Jun 2016 14:30:16 +0000 (16:30 +0200)]
FileSpace cleanup: make ED_path_extension_type public.

Maybe we should move it to BLI, but not sure how, and where (and its defines
are SpaceFile's ones, meh :| ).

3 years agoWrite .blend file: refactor & fixes re ID block itself.
Bastien Montagne [Tue, 14 Jun 2016 12:53:39 +0000 (14:53 +0200)]
Write .blend file: refactor & fixes re ID block itself.

Factorized writing of ID block's data (so far, only IDProps) into own helper func.
This also fixes missing IDProp (aka custom data) saving from GreasePencil and Library
datablocks (and add comment about why we do not save WM IDProps).

Finaly, it ensures all ID-related data are written immediately after the ID itself
(was not the case for all data types previously, some were writting their own data
before IDProps). This is not a fix (.blend file format does not enforce any order
on sub-data of datablocks, they only have to be after datablock struct itself in file),
but makes things more consistent.

3 years agoFix T48649: VSE meta-strip overlap shuffles recursively
Campbell Barton [Tue, 14 Jun 2016 11:55:39 +0000 (21:55 +1000)]
Fix T48649: VSE meta-strip overlap shuffles recursively

3 years agoCorrect sequencer transform check
Campbell Barton [Tue, 14 Jun 2016 11:46:39 +0000 (21:46 +1000)]
Correct sequencer transform check

Check to avoid operating on same strip multiple times wasn't working.

Harmless but better make it functional.

3 years agofix T48602: Changed The Collada validator to treat faces with < 3 verts as Warning...
Gaia Clary [Tue, 14 Jun 2016 11:08:42 +0000 (13:08 +0200)]
fix T48602: Changed The Collada validator to treat faces with < 3 verts as Warning and let the Mesh Validator take care of the cleanup

3 years agoFix T48613: Bump mapping in cycles is not shown on the viewport when the material...
Sergey Sharybin [Tue, 14 Jun 2016 09:31:00 +0000 (11:31 +0200)]
Fix T48613: Bump mapping in cycles is not shown on the viewport when the material use node groups

3 years agoFix T48154: Decimate topology changes with scale
Campbell Barton [Tue, 14 Jun 2016 07:12:29 +0000 (17:12 +1000)]
Fix T48154: Decimate topology changes with scale

This can't be avoided completely, however the threshold used can be much lower.

3 years agoUsual UI/i18n message fixes.
Bastien Montagne [Mon, 13 Jun 2016 22:16:39 +0000 (00:16 +0200)]
Usual UI/i18n message fixes.

3 years agoMade incremental snapping intervalls smaller for UV editor
Phil Gosch [Mon, 13 Jun 2016 16:34:46 +0000 (18:34 +0200)]
Made incremental snapping intervalls smaller for UV editor

Before the intervall was set to 0.125 which effectively resulted in 8 positions across the UV space (per axis).
I halved that value, holding shift enables an even finer movement.

This change was ported over from my soc-2016-uv_tools branch after talking with howardt, ideasman42 and hackerman-

3 years agoCurve Fitting: add high-quality flag
Campbell Barton [Mon, 13 Jun 2016 16:11:57 +0000 (02:11 +1000)]
Curve Fitting: add high-quality flag

When this flag is set - even when the curve error is under the threshold,
keep attempting a better fit.

Enable this for freehand drawing, since it gives nicer results and isn't noticeably slower.

3 years agoFix T48595: UI glitch with driver menu re-opening
Campbell Barton [Mon, 13 Jun 2016 15:36:27 +0000 (01:36 +1000)]
Fix T48595: UI glitch with driver menu re-opening

Holding Ctrl-D would keep opening driver menus.

3 years agoBevel segments also changeable with mouse (S toggle).
Howard Trickey [Mon, 13 Jun 2016 13:14:13 +0000 (09:14 -0400)]
Bevel segments also changeable with mouse (S toggle).

Also, can use numeric input to set segments and profile when
in those respective value-adjusting modes (as per S or P toggle).
Finally, fixed problem with previous bevel commit: when changing
value-adjusting mode, would like to start off resumed value adjustment
where it was before.

3 years agoKeymap: include 'Dopesheet Generic'
Campbell Barton [Mon, 13 Jun 2016 13:01:58 +0000 (23:01 +1000)]
Keymap: include 'Dopesheet Generic'

3 years agoFix misleading indentation in ImBuf
Sergey Sharybin [Mon, 13 Jun 2016 12:46:04 +0000 (14:46 +0200)]
Fix misleading indentation in ImBuf

3 years agoFix typo in variable name as well.
Thomas Dinges [Mon, 13 Jun 2016 12:08:06 +0000 (14:08 +0200)]
Fix typo in variable name as well.

3 years agoFix own error w/ undefined behavior
Campbell Barton [Mon, 13 Jun 2016 11:55:54 +0000 (21:55 +1000)]
Fix own error w/ undefined behavior

This happened to work for me but caused issues on OSX.

3 years agoCycles: fixed a typo that would crash shaders that use the "Is Diffuse Ray" output...
Stefan Werner [Mon, 13 Jun 2016 11:16:56 +0000 (13:16 +0200)]
Cycles: fixed a typo that would crash shaders that use the "Is Diffuse Ray" output of the LightPath node

3 years agoFix glShadeModel being left flat in edit-mode draw
Campbell Barton [Mon, 13 Jun 2016 09:21:46 +0000 (19:21 +1000)]
Fix glShadeModel being left flat in edit-mode draw

3 years agoCycles: Fix unhandled enumerator in OSL switch
Sergey Sharybin [Mon, 13 Jun 2016 08:14:18 +0000 (10:14 +0200)]
Cycles: Fix unhandled enumerator in OSL switch

Unsigned int is not supported by OSL as far as i concerned, so should not
really matter here. However, might be wrong and perhaps more proper idea
would be so set it as regular int?

3 years agoFix T48616: Auto-merge selects extra edges
Campbell Barton [Mon, 13 Jun 2016 07:35:59 +0000 (17:35 +1000)]
Fix T48616: Auto-merge selects extra edges

Auto-merge caused all edges between selected vertices to be selected.
This only makes sense in vertex-select-mode.

Correct edge-flag merging code, which now merges flags from multiple edges.

3 years agoFix build error with GCC 6.1.
Brecht Van Lommel [Sun, 12 Jun 2016 19:25:14 +0000 (21:25 +0200)]
Fix build error with GCC 6.1.

3 years agoFix Cycles debug build assert on some platforms, tighten checks to avoid this in...
Brecht Van Lommel [Sun, 12 Jun 2016 15:12:25 +0000 (17:12 +0200)]
Fix Cycles debug build assert on some platforms, tighten checks to avoid this in the future.

3 years agoFix T48604: Crash on undo due to bad drawing code.
Bastien Montagne [Sun, 12 Jun 2016 15:06:50 +0000 (17:06 +0200)]
Fix T48604: Crash on undo due to bad drawing code.

Short story: draw_lamp would add itself to delayed transp drawing list from 'xray' drawing step.
This was broken, since delayed transp drawing list is always handled **before** delayed xray one.

After undo it lead to segfault crash, v3d->afterdraw_transp still having reference to old freed scene's base.

Also added asserts that those afterdraw list are empty at end of drawing step, should help
avoiding that kind of issue in future.

3 years agoCurve Fitting: offset based fallback to calculate cubics
Campbell Barton [Sun, 12 Jun 2016 12:25:43 +0000 (22:25 +1000)]
Curve Fitting: offset based fallback to calculate cubics

Add a new fallback method that uses offset distance from the curve to the line between both points,
for freehand drawing it typically only fives minor improvements (1-3% fewer points),
for curve dissolve the improvements are more noticeable.

3 years agoBLI_math: cleanup arg names
Campbell Barton [Sun, 12 Jun 2016 05:37:09 +0000 (15:37 +1000)]
BLI_math: cleanup arg names

project functions arg naming made it hard to tell which vector was projected onto.

3 years agobmesh py api: expose BM_face_calc_tangent_*
Campbell Barton [Sun, 12 Jun 2016 02:22:38 +0000 (12:22 +1000)]
bmesh py api: expose BM_face_calc_tangent_*

D1988 by @wisaac, with own edits and improvements.

This improves on existing tangent calculation functions too.

- BM_face_calc_tangent_auto: Chooses method based on number of sides, used by manipulator (not exposed to Python).
- BM_face_calc_tangent_edge: from longest edge.
- BM_face_calc_tangent_edge_pair: from longest edge-pair (most useful with quads).
- BM_face_calc_tangent_edge_diagonal: edge farthest from any vertex.
- BM_face_calc_tangent_vert_diagonal: vert farthest from any vertex.

Also optimize BM_vert_tri_calc_tangent_edge* functions to avoid sqrt.

3 years agoDocs: Support out-of-source reference-API builds
Campbell Barton [Sun, 12 Jun 2016 01:20:13 +0000 (11:20 +1000)]
Docs: Support out-of-source reference-API builds

This was originally supported, however relative links to examples & templates made it fail.
Now files in the source tree are copied to the build-dir, with ".." replaced with "__"
to avoid having to mirror Blender's source-layout in the Sphinx build-dir.

Also skip uploading the built docs when an SSH user-name isn't passed to
instead of aborting (so people w/o SSH access to our servers can use the shell-script).

3 years agoCleanup: API docs (whitespace/line length)
Campbell Barton [Sun, 12 Jun 2016 00:05:35 +0000 (10:05 +1000)]
Cleanup: API docs (whitespace/line length)

3 years agoCleanup, remove unneeded variable.
Thomas Dinges [Sat, 11 Jun 2016 22:01:57 +0000 (00:01 +0200)]
Cleanup, remove unneeded variable.

3 years agoFix compiler warning for unused variables.
Thomas Dinges [Sat, 11 Jun 2016 21:58:12 +0000 (23:58 +0200)]
Fix compiler warning for unused variables.

3 years agoCycles: make shader node enums consistently lower case, update OSL shaders accordingly.
Brecht Van Lommel [Sat, 11 Jun 2016 19:56:47 +0000 (21:56 +0200)]
Cycles: make shader node enums consistently lower case, update OSL shaders accordingly.

3 years agoFix OS X build after Decklink changes, it is not supported yet so don't enable it.
Brecht Van Lommel [Sat, 11 Jun 2016 21:47:35 +0000 (23:47 +0200)]
Fix OS X build after Decklink changes, it is not supported yet so don't enable it.

3 years agoBGE: DeckLink card support for video capture and streaming.
Benoit Bolsee [Fri, 10 Jun 2016 08:09:26 +0000 (10:09 +0200)]
BGE: DeckLink card support for video capture and streaming.

   You can capture and stream video in the BGE using the DeckLink video
   cards from Black Magic Design. You need a card and Desktop Video software
   version 10.4 or above to use these features in the BGE.
   Many thanks to Nuno Estanquiero who tested the patch extensively
   on a variety of Decklink products, it wouldn't have been possible without
   his help.
   You can find a brief summary of the decklink features here:
   The full API details and samples are in the Python API documentation.

bge.texture.VideoDeckLink(format, capture=0):

   Use this object to capture a video stream. the format argument describes
   the video and pixel formats and the capture argument the card number.
   This object can be used as a source for bge.texture.Texture so that the frame
   is sent to the GPU, or by itself using the new refresh method to get the video
   frame in a buffer.
   The frames are usually not in RGB but in YUV format (8bit or 10bit); they
   require a shader to extract the RGB components in the GPU. Details and sample
   shaders in the documentation.
   3D video capture is supported: the frames are double height with left and right
   eyes in top-bottom order. The 'eye' uniform (see setUniformEyef) can be used to
   sample the 3D frame when the BGE is also in stereo mode. This allows to composite
   a 3D video stream with a 3D scene and render it in stereo.
   In Windows, and if you have a nVidia Quadro GPU, you can benefit of an additional
   performance boost by using 'GPUDirect': a method to send a video frame to the GPU
   without going through the OGL driver. The 'pinned memory' OGL extension is also
   supported (only on high-end AMD GPU) with the same effect.

bge.texture.DeckLink(cardIdx=0, format=""):

   Use this object to send video frame to a DeckLink card. Only the immediate mode
   is supported, the scheduled mode is not implemented.
   This object is similar to bge.texture.Texture: you need to attach a image source
   and call refresh() to compute and send the frame to the card.
   This object is best suited for video keying: a video stream (not captured) flows
   through the card and the frame you send to the card are displayed above it (the
   card does the compositing automatically based on the alpha channel).
   At the time of this commit, 3D video keying is supported in the BGE but not in the
   DeckLink card due to a color space issue.

3 years agoBL_Shader.setUniformEyef(name)
Benoit Bolsee [Thu, 9 Jun 2016 22:28:19 +0000 (00:28 +0200)]

    defines a uniform that reflects the eye being rendered in stereo mode:
    0.0 for the left eye, 0.5 for the right eye.
    In non stereo mode, the value of the uniform is fixed to 0.0.
    The typical use of this uniform is in stereo mode to sample stereo textures
    containing the left and right eye images in a top-bottom order.

      shader = obj.meshes[0].materials[mat].getShader()

      uniform float eye;
      uniform sampler2D tex;
      void main(void)
         vec4 color;
         float ty, tx;
         tx = gl_TexCoord[0].x;
         ty = eye+gl_TexCoord[0].y*0.5;
         // ty will be between 0 and 0.5 for the left eye render
         // and 0.5 and 1.0 for the right eye render.
         color = texture(tex, vec2(tx, ty));

3 years agoAtomic ops: Fix atomic_add_uint32 and atomic_sub_uint32 in Windows
Benoit Bolsee [Thu, 9 Jun 2016 22:00:33 +0000 (00:00 +0200)]
Atomic ops: Fix atomic_add_uint32 and atomic_sub_uint32 in Windows

    The assembler version in Windows used to return the previous value
    of the variable while all the other versions return the new value.
    This is now fixed for consistency.
    Note: this bug had no effect on blender because no part of the code
    use the return value of these functions, but the future BGE DeckLink
    module makes use of it to implement reference counter.

3 years agoBGE: Various render improvements.
Benoit Bolsee [Thu, 9 Jun 2016 21:56:45 +0000 (23:56 +0200)]
BGE: Various render improvements.

bge.logic.setRender(flag) to enable/disable render.
    The render pass is enabled by default but it can be disabled with
    Once disabled, the render pass is skipped and a new logic frame starts
    immediately. Note that VSync no longer limits the fps when render is off
    but the 'Use Frame Rate' option in the Render Properties still does.
    To run as many frames as possible, untick the option
    This function is useful when you don't need the default render, e.g.
    when doing offscreen render to an alternate device than the monitor.
    Note that without VSync, you must limit the frame rate by other means.

fbo = bge.render.offScreenCreate(width,height,[,samples=0][,target=bge.render.RAS_OFS_RENDER_BUFFER])
    Use this method to create an offscreen buffer of given size, with given MSAA
    samples and targetting either a render buffer (bge.render.RAS_OFS_RENDER_BUFFER)
    or a texture (bge.render.RAS_OFS_RENDER_TEXTURE). Use the former if you want to
    retrieve the frame buffer on the host and the latter if you want to pass the render
    to another context (texture are proper OGL object, render buffers aren't)
    The object created by this function can only be used as a parameter of the
    bge.texture.ImageRender() constructor to send the the render to the FBO rather
    than to the frame buffer. This is best suited when you want to create a render
    of specific size, or if you need an image with an alpha channel.

bge.texture.<imagetype>.refresh(buffer=None, format="RGBA", ts=-1.0)
    Without arg, the refresh method of the image objects is pretty much a no-op, it
    simply invalidates the image so that on next texture refresh, the image will
    be recalculated.
    It is now possible to pass an optional buffer object to transfer the image (and
    recalculate it if it was invalid) to an external object. The object must implement
    the 'buffer protocol'. The image will be transfered as "RGBA" or "BGRA" pixels
    depending on format argument (only those 2 formats are supported) and ts is an
    optional timestamp in the image depends on it (e.g. VideoFFmpeg playing a video file).
    With this function you don't need anymore to link the image object to a Texture
    object to use: the image object is self-sufficient.

bge.texture.ImageRender(scene, camera, fbo=None)
    Render to buffer is possible by passing a FBO object (see offScreenCreate).

    Allows asynchronous render: call this method to render the scene but without
    extracting the pixels yet. The function returns as soon as the render commands
    have been send to the GPU. The render will proceed asynchronously in the GPU
    while the host can perform other tasks.
    To complete the render, you can either call refresh() directly of refresh the texture
    to which this object is the source. Asynchronous render is useful to achieve optimal
    performance: call render() on frame N and refresh() on frame N+1 to give as much as
    time as possible to the GPU to render the frame while the game engine can perform other tasks.

Support negative scale on camera.
    Camera scale was previously ignored in the BGE.
    It is now injected in the modelview matrix as a vertical or horizontal flip
    of the scene (respectively if scaleY<0 and scaleX<0).
    Note that the actual value of the scale is not used, only the sign.
    This allows to flip the image produced by ImageRender() without any performance
    degradation: the flip is integrated in the render itself.

Optimized image transfer from ImageRender to buffer.
    Previously, images that were transferred to the host were always going through
    buffers in VideoTexture. It is now possible to transfer ImageRender
    images to external buffer without intermediate copy (i.e. directly from OGL to buffer)
    if the attributes of the ImageRender objects are set as follow:
       flip=False, alpha=True, scale=False, depth=False, zbuff=False.
       (if you need to flip the image, use camera negative scale)

3 years agoFix Gradient Texture and OSL after refactor.
Thomas Dinges [Sat, 11 Jun 2016 19:40:00 +0000 (21:40 +0200)]
Fix Gradient Texture and OSL after refactor.

3 years agoAttempted fix for T48625: tablet button configured to right click not working on...
Brecht Van Lommel [Sat, 11 Jun 2016 18:28:41 +0000 (20:28 +0200)]
Attempted fix for T48625: tablet button configured to right click not working on OS X.

3 years agoCycles: nodify shader nodes
Brecht Van Lommel [Sat, 7 May 2016 17:48:28 +0000 (19:48 +0200)]
Cycles: nodify shader nodes

Differential Revision:

3 years agoFix T48617: VSE: Do not draw backdrop in Seq + Preview mode, only makes sense when...
Bastien Montagne [Sat, 11 Jun 2016 15:27:20 +0000 (17:27 +0200)]
Fix T48617: VSE: Do not draw backdrop in Seq + Preview mode, only makes sense when no preview is available...

3 years agoBLI_rand: add BLI_rng_get_char_n
Campbell Barton [Sat, 11 Jun 2016 14:38:49 +0000 (00:38 +1000)]
BLI_rand: add BLI_rng_get_char_n

Use to fill an array of bytes to random values.

3 years agoFix T48634: Interpolation and distribution of Children Particles breaks.
Bastien Montagne [Sat, 11 Jun 2016 12:37:47 +0000 (14:37 +0200)]
Fix T48634: Interpolation and distribution of Children Particles breaks.

Own stupid off-by-one regression in rB019ce363b01bba0afe1 and later...

3 years agoUI Font: Fix bad kerning of Thai font.
Bastien Montagne [Sat, 11 Jun 2016 08:47:53 +0000 (10:47 +0200)]
UI Font: Fix bad kerning of Thai font.

Thai font is a complex script that assumes full featured unicode layout engine,
while Blender only knows about basic kerning (offset of a char based on the previous one).

So this commit edits Thai part of our i18n font to fix the very bad spacing of thai chars
we had in Blender so far.

Work done by Hồ Châu, many thanks!

3 years agoVSE: select by group: add option to select by group on same channel only.
Bastien Montagne [Fri, 10 Jun 2016 16:40:31 +0000 (18:40 +0200)]
VSE: select by group: add option to select by group on same channel only.

3 years agoInstall_deps: add '--no-build' option to prevent compiling anything.
Bastien Montagne [Fri, 10 Jun 2016 16:09:34 +0000 (18:09 +0200)]
Install_deps: add '--no-build' option to prevent compiling anything.

3 years agoGPU: use basic-shader for line-stipple
Campbell Barton [Thu, 9 Jun 2016 21:39:12 +0000 (07:39 +1000)]
GPU: use basic-shader for line-stipple

3 years agoRemove redundant GL attribute push/pop
Campbell Barton [Thu, 9 Jun 2016 20:48:43 +0000 (06:48 +1000)]
Remove redundant GL attribute push/pop

Stipple isnt left on during object drawing

3 years agoFix GPU logical error changing stipple
Campbell Barton [Thu, 9 Jun 2016 20:21:34 +0000 (06:21 +1000)]
Fix GPU logical error changing stipple

3 years agoCleanup: brace-placement
Campbell Barton [Thu, 9 Jun 2016 21:45:39 +0000 (07:45 +1000)]
Cleanup: brace-placement

3 years agoBGE: alpha on frame buffer and precedence of MSAA over swap.
Benoit Bolsee [Thu, 9 Jun 2016 19:07:58 +0000 (21:07 +0200)]
BGE: alpha on frame buffer and precedence of MSAA over swap.

A new option '-a' can be passed to the blenderplayer. It forces the
framebuffer to have an alpha channel.
This can be used in VideoTexture to return a image with alpha channel
with ImageViewport (provided alpha is set to True on the ImageViewport
object and that the background color alpha channel is 0, which is the
Without the -a option, the frame buffer has no alpha channel and
ImageViewport always returns an opaque image, no matter what.
In Linux, the player window will be rendered transparently over
the desktop.
In Windows, the player window is still rendered opaque because
transparency of the window is only possible using the 'compositing'
functions of Windows. The code is there but not enabled  (look for
WIN32_COMPOSITING) because 1) it doesn't work so well 2) it requires
a DLL that is only available on Vista and up.

give precedence to AA over Swap copy:

Certain GPU (intel) will not allow MSAA together with swap copy.
Previously, swap copy had priority over MSAA: fewer AA samples would be
chosen if it was the condition to get swap copy. This patch reverse the
logic: swap copy will be abandonned if another swap method (undefined or
exchange) will provide the number of AA samples requested. If no AA
samples is requested, swap copy still has the priority of course.

3 years agoGPU: only call glShadeModel when needed
Campbell Barton [Thu, 9 Jun 2016 20:11:14 +0000 (06:11 +1000)]
GPU: only call glShadeModel when needed

3 years agoGPU: avoid multiple bind calls in GPU_draw_pbvh_buffers
Campbell Barton [Thu, 9 Jun 2016 20:08:39 +0000 (06:08 +1000)]
GPU: avoid multiple bind calls in GPU_draw_pbvh_buffers

Also add utility functions: GPU_basic_shader_bind_enable/disable
so we don't have to get the previous state every time and manipulate it

3 years agoFlat shading for basic shader
Alexander Romanov [Mon, 16 May 2016 08:13:21 +0000 (11:13 +0300)]
Flat shading for basic shader

The purpose of the patch is to replace deprecated  glShadeModel.

To decrease glShadeModel calls I've set GL_SMOOTH by default

Reviewers: merwin, brecht

Reviewed By: brecht

Subscribers: blueprintrandom, Evgeny_Rodygin, AlexKowel, yurikovelenov

Differential Revision:

3 years agoFix T48614: Blender from buildbot crash when Separate selection in this particular...
Bastien Montagne [Thu, 9 Jun 2016 15:53:51 +0000 (17:53 +0200)]
Fix T48614: Blender from buildbot crash when Separate selection in this particular scene.

Regression from recent rB2c5dc66d5effd4072f438afb, if last item of last chunk of a mempool was valid,
it would not be returned by mempool iterator step, which would always return NULL in that case.

3 years agoCompilation error fix after recent cleanup
Sergey Sharybin [Thu, 9 Jun 2016 07:52:41 +0000 (09:52 +0200)]
Compilation error fix after recent cleanup

Please do not do cleanups in minimal configuration, doing that has been
proven to only cause issues without solving anything meaningful ;)

3 years agoCleanup: GPU arg wrapping
Campbell Barton [Wed, 8 Jun 2016 19:44:25 +0000 (05:44 +1000)]
Cleanup: GPU arg wrapping

3 years agoCleanup: GPU headers
Campbell Barton [Wed, 8 Jun 2016 19:37:46 +0000 (05:37 +1000)]
Cleanup: GPU headers

3 years agoGPU: avoid disabling basic-shader for lasso
Campbell Barton [Wed, 8 Jun 2016 19:02:52 +0000 (05:02 +1000)]
GPU: avoid disabling basic-shader for lasso

Replace glDrawPixels w/ glaDrawPixelsTex

3 years agoFix armature stick draw, unpack-alignment was set but never restored
Campbell Barton [Wed, 8 Jun 2016 18:53:04 +0000 (04:53 +1000)]
Fix armature stick draw, unpack-alignment was set but never restored

Drawing a single stick bone set the alignment to 1, applying this setting to the rest of Blender.

3 years agoglutil: add glaGetOneInt helper
Campbell Barton [Wed, 8 Jun 2016 19:12:42 +0000 (05:12 +1000)]
glutil: add glaGetOneInt helper

3 years agoDepsgraph: Avoid redundant connection from IK solver to chain
Sergey Sharybin [Wed, 8 Jun 2016 15:32:09 +0000 (17:32 +0200)]
Depsgraph: Avoid redundant connection from IK solver to chain

Could give barely measurable speedup on a complex rigs.

3 years agoDepsgraph: Remove unused code
Sergey Sharybin [Wed, 8 Jun 2016 14:56:23 +0000 (16:56 +0200)]
Depsgraph: Remove unused code

Became obsolete after recent changes.

3 years agoDepsgraph: Optimize flush update when there's few objects and fewzillions of bones
Sergey Sharybin [Wed, 8 Jun 2016 14:53:39 +0000 (16:53 +0200)]
Depsgraph: Optimize flush update when there's few objects and fewzillions of bones

Avoid annoying checks form inside operations loop, gives few percent speedup in
files like army_of_blenrigs.

3 years agoGPU: fix texface image w/ basic-shader
Campbell Barton [Wed, 8 Jun 2016 14:43:26 +0000 (00:43 +1000)]
GPU: fix texface image w/ basic-shader

3 years agoMake uiLists placed in popups usable
Julian Eisel [Wed, 8 Jun 2016 13:51:01 +0000 (15:51 +0200)]
Make uiLists placed in popups usable

It's still not completely working - there are still some glitches - but far better than before.
To make buttons of the uiList work, you have to add a 'check' callback to the operator that invokes the menu. Only if it returns True, the uiList gets refreshed. To avoid this we have to make the region refresh tagging in the entire button handling a bit smarter.

Changes I had to do:
* Call uiList handling from menu/popup handling if needed.
* Make uiList handling use special popup refresh tag if placed in menu.
* Allow popups invoked from py operator to tag for refresh by using operator 'check' callback.
* Tag popup for refresh when resizing uiList.

Mostly fixes T48612.

3 years agoFix FPE exception happening when converting linear<->srgb using SIMD
Sergey Sharybin [Wed, 8 Jun 2016 13:59:55 +0000 (15:59 +0200)]
Fix FPE exception happening when converting linear<->srgb using SIMD

3 years agoCleanup: typo
Campbell Barton [Wed, 8 Jun 2016 12:30:53 +0000 (22:30 +1000)]
Cleanup: typo

3 years agoCleanup: typos
Campbell Barton [Wed, 8 Jun 2016 12:25:23 +0000 (22:25 +1000)]
Cleanup: typos

3 years agoFix edit-mesh draw not disabling stipple
Campbell Barton [Wed, 8 Jun 2016 11:35:02 +0000 (21:35 +1000)]
Fix edit-mesh draw not disabling stipple

Caused problem w/ basic-shader