Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-21Cleanup: styleCampbell Barton
2018-04-20Workbench: Face orientation blendingJeroen Bakker
2018-04-20Merge branch 'blender2.8' into blender2.8-workbenchJeroen Bakker
2018-04-20Workbench: Face orientation overlayJeroen Bakker
- Removed the depth pass as it will reuse the depth pass of the render engine - Used gl_FrontFacing to determine the facing - Blender the result with the render engine result
2018-04-20Workbench: Added the basics for the OverlayModeJeroen Bakker
Implemented the face orientation overlay for testing. Overlay mode is only drawn when there are overlays to be rendered. The overlay mode is rendered before the object mode.
2018-04-19Remove Blender Internal and legacy viewport from Blender 2.8.Ton Roosendaal
Brecht authored this commit, but he gave me the honours to actually do it. Here it goes; Blender Internal. Bye bye, you did great! * Point density, voxel data, ocean, environment map textures were removed, as these only worked within BI rendering. Note that the ocean modifier and the Cycles point density shader node continue to work. * Dynamic paint using material shading was removed, as this only worked with BI. If we ever wanted to support this again probably it should go through the baking API. * GPU shader export through the Python API was removed. This only worked for the old BI GLSL shaders, which no longer exists. Doing something similar for Eevee would be significantly more complicated because it uses a lot of multiplass rendering and logic outside the shader, it's probably impractical. * Collada material import / export code is mostly gone, as it only worked for BI materials. We need to add Cycles / Eevee material support at some point. * The mesh noise operator was removed since it only worked with BI material texture slots. A displacement modifier can be used instead. * The delete texture paint slot operator was removed since it only worked for BI material texture slots. Could be added back with node support. * Not all legacy viewport features are supported in the new viewport, but their code was removed. If we need to bring anything back we can look at older git revisions. * There is some legacy viewport code that I could not remove yet, and some that I probably missed. * Shader node execution code was left mostly intact, even though it is not used anywhere now. We may eventually use this to replace the texture nodes with Cycles / Eevee shader nodes. * The Cycles Bake panel now includes settings for baking multires normal and displacement maps. The underlying code needs to be merged properly, and we plan to add back support for multires AO baking and add support to Cycles baking for features like vertex color, displacement, and other missing baking features. * This commit removes DNA and the Python API for BI material, lamp, world and scene settings. This breaks a lot of addons. * There is more DNA that can be removed or renamed, where Cycles or Eevee are reusing some old BI properties but the names are not really correct anymore. * Texture slots for materials, lamps and world were removed. They remain for brushes, particles and freestyle linestyles. * 'BLENDER_RENDER' remains in the COMPAT_ENGINES of UI panels. Cycles and other renderers use this to find all panels to show, minus a few panels that they have their own replacement for.
2018-04-19Cleanup: styleCampbell Barton
2018-04-18Object Mode: Outlines: Make outline thinner.Clément Foucault
This is by default. We can still enable the thicker outlines for high dpi screens or personnal preference but it's not used atm. This also improve the performance removing 1/3 of the outline cost.
2018-04-18Object Mode: Outlines: Fix sample coordinates.Clément Foucault
2018-04-17Object Mode: Outlines: Fix precision issue on intel GPU.Clément Foucault
2018-04-17Cleanup: unused vars, long linesCampbell Barton
2018-04-17Object Mode: Cleanup uneeded texture attachment.Clément Foucault
2018-04-17DRW: Fix lightprobe objects outlines.Clément Foucault
2018-04-16Object Mode: Outline: Perf: Only do outlines detection if needed.Clément Foucault
2018-04-16Object Mode: Outlines: Use textureGather extension if available.Clément Foucault
This has very little impact (only had 12.5% perf improvment on Nvidia for this specific pass). But it's an improvement nontheless!
2018-04-16Depsgraph: remove EvaluationContext, pass Depsgraph instead.Brecht Van Lommel
The depsgraph was always created within a fixed evaluation context. Passing both risks the depsgraph and evaluation context not matching, and it complicates the Python API where we'd have to expose both which is not so easy to understand. This also removes the global evaluation context in main, which assumed there to be a single active scene and view layer. Differential Revision: https://developer.blender.org/D3152
2018-04-16Object Mode: Rework outline drawing.Clément Foucault
This changes quite a few things. - Outline is now per object. - No more outline at object intersection (fix hairs problem). - Simplify the code quite a bit. We use a R16UI buffer to save one id per object outline. We convert this id to color when detecting the outline. Added textureGatherOffsets to the code but could not test on current hardware so leaving it commented for now.
2018-04-16Multi-Object EditingCampbell Barton
This adds initial multi-object editing support. - Selected objects are used when entering edit & pose modes. - Selection & tools work on all objects however many tools need porting See: T54641 for remaining tasks. Indentation will be done separately. See patch: D3101
2018-03-29Draw manager: Make particle code drawing closer to old viewportSergey Sharybin
The way how particle state is to be accessed or used did not change in Blender 2.8, so the drawing code should follow old design. This code is somewhat duplicated from drawobject.c, but old draw code is on the way to be removed anyway. This fixes issue with disappearing particles when tweaking number of particles.
2018-03-29Draw manager: Make evaluation context a part of context stateSergey Sharybin
This way we don't have to re-initialize the full evaluation context in every area we need it.
2018-03-25DRW: Rename DRW_shgroup_uniform_buffer into DRW_shgroup_uniform_texture_refClément Foucault
This is in order to not mix it with the incomming buffer textures.
2018-03-25GPUFramebuffer: Refactor (Part 2)Clément Foucault
This refactor modernise the use of framebuffers. It also touches a lot of files so breaking down changes we have: - GPUTexture: Allow textures to be attached to more than one GPUFrameBuffer. This allows to create and configure more FBO without the need to attach and detach texture at drawing time. - GPUFrameBuffer: The wrapper starts to mimic opengl a bit closer. This allows to configure the framebuffer inside a context other than the one that will be rendering the framebuffer. We do the actual configuration when binding the FBO. We also Keep track of config validity and save drawbuffers state in the FBO. We remove the different bind/unbind functions. These make little sense now that we have separate contexts. - DRWFrameBuffer: We replace DRW_framebuffer functions by GPU_framebuffer ones to avoid another layer of abstraction. We move the DRW convenience functions to GPUFramebuffer instead and even add new ones. The MACRO GPU_framebuffer_ensure_config is pretty much all you need to create and config a GPUFramebuffer. - DRWTexture: Due to the removal of DRWFrameBuffer, we needed to create functions to create textures for thoses framebuffers. Pool textures are now using default texture parameters for the texture type asked. - DRWManager: Make sure no framebuffer object is bound when doing cache filling. - GPUViewport: Add new color_only_fb and depth_only_fb along with FB API usage update. This let draw engines render to color/depth only target and without the need to attach/detach textures. - WM_window: Assert when a framebuffer is bound when changing context. This balance the fact we are not track ogl context inside GPUFramebuffer. - Eevee, Clay, Mode engines: Update to new API. This comes with a lot of code simplification. This also come with some cleanups in some engine codes.
2018-03-22GPUCompositing: Remove entire module.Clément Foucault
This module has no use now with the new DrawManager and DrawEngines and it is using deprecated paths. Moving gpu_shader_fullscreen_vert.glsl to draw/modes/shaders/common_fullscreen_vert.glsl
2018-03-21Draw manager: Fix missing active camera triangle with CoWSergey Sharybin
2018-03-10DRW: Put all view-only dependant uniform in a UBO.Clément Foucault
This leads to less lookups to the GWNShaderInterface and less uniform upload. We still keep a legacy path so that Builtin uniforms can still work. We might restrict this path to Builtin shader only in the future.
2018-03-02DRW: Refactor simple instancing.Clément Foucault
Instead of creating a new instancing shading group without attrib, we now have instancing calls. The benefits is that they can be culled. They can be used in conjuction with the standard and generate calls but shader must support it (which is generally not the case). We store a pointer to the actual count so that the number can be tweaked between redraw. This will makes multi layer rendering more efficient.
2018-03-02Object Mode: Make use of optimized DRW_shgroup_call_object_addClément Foucault
2018-02-25Object Mode: Display meshes without faces and edges in object mode.Clément Foucault
2018-02-21Gawain: Refactor: VAOs caching AND use new VAOs manager.Clément Foucault
A major bottleneck of current implementation is the call to create_bindings() for basically every drawcalls. This is due to the VAO being tagged dirty when assigning a new shader to the Batch, defeating the purpose of the Batch (reuse it for drawing). Since managing hundreds of batches in DrawManager and DrawCache seems not fun enough to me, I prefered rewritting the batches itself. --- Batch changes --- For this to happen I needed to change the Instancing to be part of the Batch rather than being another batch supplied at drawtime. The Gwn_VertBuffers are copied from the batch to be instanciated and a new Gwn_VertBuffer is supplied for instancing attribs. This mean a VAO can be generated and cached for this instancing case. A Batch can be rendered with instancing, without instancing attribs and without the need for a new VAO using the GWN_batch_draw_range_ex with the force_instance parameter set to true. --- Draw manager changes --- The downside with this approach is that we must track the validity of the instanced batch (the original one). For this the only way (I could think of) is to set a callback for when the batch is getting free. This means a bit of refactor in the DrawManager with the separation of batching and instancing Batches. --- VAO cache --- Each VAO is generated for a given ShaderInterface. This means we can keep it alive as long as the shader interface lives. If a ShaderInterface is discarded, it needs to destroy every VAO associated to it. Otherwise, a new ShaderInterface with the same adress could be generated and reuse the same VAO with incorrect bindings. The VAO cache itself is using a mix between a static array of VAO and a dynamic array if the is not enough space in the static. Using this hybrid approach is a bit more performant than the dynamic array alone. The array will not resize down but empty entries will be filled up again. It's unlikely we get a buffer overflow from this. Resizing could be done on next allocation if needed. --- Results --- Using Cached VAOs means that we are not querying each vertex attrib for each vbo for each drawcall, every redraw! In a CPU limited test scene (10000 cubes in Clay engine) I get a reduction of CPU drawing time from ~20ms to 13ms. The only area that is not caching VAOs is the instancing from particles (see comment DRW_shgroup_instance_batch).
2018-02-16Metalball drawing: rename mball helpers to handlesGermano
and also rename some related functions
2018-02-15Make particle edit draw mode a noopMai Lavelle
Seems this was just a template, but that template painted everything green. Not sure what this draw mode should do really.
2018-02-14DRW: Refactor: Less feature duplication with Gwn.Clément Foucault
This removes the need of custom attribs for instancing. Instancing works fully with dynamic batches & Gwn_VertFormat now. This is in prevision of the VAO manager patch.
2018-02-13Object Mode: remove Scene.obedit in draw managerCampbell Barton
Part of larger change to remove this variable entirely.
2018-02-08Fix mixed weight-paint & pose modeCampbell Barton
2018-02-07Merge branch 'master' into blender2.8Campbell Barton
2018-02-06Object Mode: Add to EvaluationContext & DRWContextStateCampbell Barton
2018-01-30Fix crash drawing light probeCampbell Barton
2018-01-30DRW / Render: Add support for render pipeline in drawmanager.Clément Foucault
For simplicity we choose to execute the rendering of Opengl engines in the main thread and block the interface. This might be addressed in the future at least for video rendering. A drawmanager wrapper (DRW_render_to_image) is called by the render pipeline to set up the Opengl state and then call the specific draw_engine->render_to_image function.
2018-01-29Deduplicate GLSL frag code in particle drawingGermano
Differential Revision: D2993
2018-01-29Refactor object engine data storageSergey Sharybin
Main idea is to make specific engine types be a subclass of generic ObjectEngineData structure. This required following changes: - Have extra size argument to engine data allocation function. Not sure whether there is less error-prone way of doing this. - Add init() callback to engine data allocation function. Additionally, added some extra checks to Eevee's engine data getters, so we do not silently cast lamp data to lightprobe data. Reviewers: dfelinto, fclem Differential Revision: https://developer.blender.org/D3027
2018-01-22DRW: Object Mode: Fix bad camera display in camera viewClément Foucault
This fix T53485 : Ortho cameras display frame when in camera view
2018-01-22DRW: Make the lamp widgets lines stippled.Clément Foucault
2018-01-19Fix T53788: Camera animation not workingSergey Sharybin
Both object level and camera datablock properties animation did not work with copy on write enabled. The root of the issue is going to the fact, that all interface elements are referencing original datablock. For example, View3D has pointer to camera it's using, and all areas which does access v3d->camera should in fact query for the evaluated version of that camera, within the current context. Annoying part of this change is that we now need to pass depsgraph in lots of places. Which is rather annoying. Alternative would be to cache evaluated camera in viewport itself, but then it makes it annoying to keep things in sync. Not sure if there is nicer solution here. Reviewers: dfelinto, campbellbarton, mont29 Subscribers: dragoneex Differential Revision: https://developer.blender.org/D3007
2018-01-17Revert "Fix use-after free in DRW_shader_create_with_lib"Campbell Barton
Caused an error entering edit-mode. d60f26f37a & 2659500835
2018-01-17DRW: Codestyle refactor: Use macro to create shader libs.Clément Foucault
This clears up the code from many DynStr usage. Easier to read.
2018-01-15Fix: Mesh Edit Mode Shader: Correct artifacts that appeared on edges of edit ↵Germano
mode with some AMD GPUs In case the problem appeared with the `AMD Radeon HD 7570M`
2018-01-12Draw Manager: Edit Mode Shader: Remove `#ifdef GPU_INTEL`Germano
The problem with memory alignment on Intel GPUs does not happen anymore after the last shader changes.
2018-01-11Edit Mode Overlay Shaders: remove loose comment left by last commitGermano
2018-01-11Fix error weird sliding vertices appearing in edit mode with some Intel GPUsGermano
Appear when zooming
2018-01-11Fix T51576: Blender crash when change to edit mode with some Intel GPUsGermano
Differential Revision: D2995