Revision 324bed3 by Thomas Dinges June 11, 2016, 21:58 (GMT) |
Fix compiler warning for unused variables. |
Revision ebdd2e0 by Brecht Van Lommel June 11, 2016, 21:50 (GMT) |
Cycles: make shader node enums consistently lower case, update OSL shaders accordingly. |
Revision b8112a8 by Brecht Van Lommel June 11, 2016, 21:50 (GMT) |
Fix OS X build after Decklink changes, it is not supported yet so don't enable it. |
Revision eea8941 by Benoit Bolsee June 11, 2016, 20:26 (GMT) |
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: https://wiki.blender.org/index.php/Dev:Source/GameEngine/Decklink 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. |
Revision c0bf881 by Benoit Bolsee June 11, 2016, 20:24 (GMT) |
BL_Shader.setUniformEyef(name) 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. python: shader = obj.meshes[0].materials[mat].getShader() shader.setUniformEyef("eye") shader: 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)); ... } |
Revision fa9bb2f by Benoit Bolsee June 11, 2016, 20:15 (GMT) |
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. |
Revision 40f1c4f by Benoit Bolsee June 11, 2016, 20:05 (GMT) |
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 bge.logic.setRender(False). 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). bge.texture.ImageRender.render() 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) |
Revision 5b061dd by Thomas Dinges June 11, 2016, 19:40 (GMT) |
Fix Gradient Texture and OSL after refactor. |
Revision 0b41570 by Brecht Van Lommel June 11, 2016, 18:32 (GMT) |
Attempted fix for T48625: tablet button configured to right click not working on OS X. |
Revision 42aec3b by Brecht Van Lommel June 11, 2016, 18:32 (GMT) |
Revision 4df6474 by Bastien Montagne June 11, 2016, 15:28 (GMT) |
Fix T48617: VSE: Do not draw backdrop in Seq + Preview mode, only makes sense when no preview is available... |
Revision dccf5af by Campbell Barton June 11, 2016, 14:41 (GMT) |
BLI_rand: add BLI_rng_get_char_n Use to fill an array of bytes to random values. |
Revision 4ec1c76 by Bastien Montagne June 11, 2016, 12:37 (GMT) |
Fix T48634: Interpolation and distribution of Children Particles breaks. Own stupid off-by-one regression in rB019ce363b01bba0afe1 and later... |
Revision 07925b6 by Bastien Montagne June 11, 2016, 08:47 (GMT) |
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! |
Revision a99c03a by Bastien Montagne June 10, 2016, 16:40 (GMT) |
VSE: select by group: add option to select by group on same channel only. |
Revision 25f3c0a by Bastien Montagne June 10, 2016, 16:09 (GMT) |
Install_deps: add '--no-build' option to prevent compiling anything. |
Revision 54343b8 by Campbell Barton June 9, 2016, 21:50 (GMT) |
GPU: use basic-shader for line-stipple |
Revision af07770 by Campbell Barton June 9, 2016, 21:50 (GMT) |
Remove redundant GL attribute push/pop Stipple isnt left on during object drawing |
Revision b07508a by Campbell Barton June 9, 2016, 21:50 (GMT) |
Fix GPU logical error changing stipple |
Revision a5788a9 by Campbell Barton June 9, 2016, 21:50 (GMT) |
Cleanup: brace-placement |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021