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-07-18GWN: Port to GPU module: Replace GWN prefix by GPUClément Foucault
2018-07-17Render: add "OpenGL" render engine.Brecht Van Lommel
This is intended for quick renders for previsualization, animation previews or sequencer previews. It provides the same settings as found in the 3D view Shading popover in solid display mode, but in the scene render properties. The "Workbench" engine was removed, and this name no longer appears in the user interface, it's purely an internal name. We might come up with a better name for this OpenGL engine still, but it's good to be consistent with the OpenGL Render operator name since this has a similar purpose.
2018-07-17Object Mode: Add back object bound displayClément Foucault
2018-07-16Smoke: Port display to Workbench + object modeClément Foucault
This does not fix the smokesim. It only port the drawing method. The Object mode engine is in charge of rendering the velocity debugging. Things left to do: - Flame rendering. - Color Ramp coloring of volume data. - View facing slicing (for now it's only doing sampling starting from the volume bounds which gives a squarish look) - Add option to enable dithering (currently on by default.
2018-07-15Cleanup: split GPU_batchCampbell Barton
Split out presets and utilities for creating batches. These functions are quite specialized and not related to typical usage.
2018-07-08Cleanup: rename 'ct' to 'len' for gawainCampbell Barton
2018-07-08Cleanup: rename 'ct' to 'len' for size varsCampbell Barton
2018-07-08Cleanup: abbreviate unsigned types (draw manager)Campbell Barton
2018-06-11DRW: Add cache reset.Clément Foucault
This is a temporary solution to the use of the shared cache. Ideally this cache should be per gl drawing context.
2018-06-11MetaBall support for Workbench + EEVEEJeroen Bakker
Note: Metaballs only support the first material slot. Splicing it per material would create empty Batches. In order to overcome this we set the batch for other materials to NULL. We added extra checks in EEVEE and Workbench to not draw when the geom is NULL.
2018-06-07Wireframe: Change / Optimize the limited wireframe visibility option.Clément Foucault
This make the limited wireframe not a performance problem anymore. However, this does change the number of edges displayed as the threshold is now computed per vertex instead of per edges. For this reason we extended (internaly) the range of the slider so that the users can hide more edge.
2018-06-05Wireframe: Add slider to hide edges from coplanar facesClément Foucault
The default behaviour is to show the same amount of edges as 2.7. The slider makes it possible to show all edges or even less.
2018-06-01Object Mode: Display loose edges if overlays are enables.Clément Foucault
This fix T55280 Loose edges not visible in object mode
2018-05-31DRW: Add wireframe buffer texture generation for wireframe drawing.Clément Foucault
Only OB_MESH is supported for now. Creates a simple index buffer with negative indices if the edges is not a real edge. Also create the buffer texture representation of this buffer along with the pos_in_order buffer texture.
2018-05-31DRW: Fix stick bones memory leak.Clément Foucault
2018-05-27Cleanup: unused varCampbell Barton
2018-05-27Workbench: Shadow: Use depth fail method for manifold objects.Clément Foucault
Since this method have no failure case for manifold objects, use it.
2018-05-26Armature: Make Custom bone have the same appearance as other bones.Clément Foucault
I had to correct some errors in the winding order of the normal bones.
2018-05-26Armature: Modify Shape outline shader to use Line adjacency instead of tri.Clément Foucault
This is much faster and simpler. This is also to make it compatible with custom bone shape in the future.
2018-05-26Cleanup: whitespace, long lines, duplicate includeCampbell Barton
2018-05-25Cleanup: styleCampbell Barton
2018-05-24Cycles/Eevee: Implement disk and ellipse shapes for area lampsLukas Stockner
The implementation is pretty straightforward. In Cycles, sampling the shapes is currently done w.r.t. area instead of solid angle. There is a paper on solid angle sampling for disks [1], but the described algorithm is based on simply sampling the enclosing square and rejecting samples outside of the disk, which is not exactly great for Cycles' RNG (we'd need to setup a LCG for the repeated sampling) and for GPU divergence. Even worse, the algorithm is only defined for disks. For ellipses, the basic idea still works, but a way to analytically calculate the solid angle is required. This is technically possible [2], but the calculation is extremely complex and still requires a lookup table for the Heuman Lambda function. Therefore, I've decided to not implement that for now, we could still look into it later on. In Eevee, the code uses the existing ltc_evaluate_disk to implement the lighting calculations. [1]: "Solid Angle Sampling of Disk and Cylinder Lights" [2]: "Analytical solution for the solid angle subtended at any point by an ellipse via a point source radiation vector potential" Reviewers: sergey, brecht, fclem Differential Revision: https://developer.blender.org/D3171
2018-05-22Cleanup: style, whitespaceCampbell Barton
2018-05-20Workbench: Optimize Shadows.Clément Foucault
This makes the shadows ~10 times faster in the general case. This only create extrusion geometry on the outline edges. Also we increment or decrement the stencil buffer by 2 for each manifold edge and only by 1 for non manifold. This make the algorithm robust yet less heavy than creating one prism for each triangles.
2018-05-16Cleanup: unused varsCampbell Barton
2018-05-16Armature: Cleanup: Remove unused function and use less silly wire drawing.Clément Foucault
2018-05-15Draw manager: Pass object to hair batch cacheSergey Sharybin
Currently unused, but is required for an upcoming work.
2018-05-11Fix crash going to edit mode of particles with copy on writeSergey Sharybin
We can not rely on edit->psys, it is not set for particle edit, and there is some logic deeper inside which does different things dependent on that. We need to replace those checks with some some HAIR vs. PARTICLES flag and always set psys pointer.
2018-05-11Particle edit: Initial support of edit with copy-on-writeSergey Sharybin
The idea is that edit mode structure is owned by original object, and used for drawing. This is a bit confusing, especially since path cache is also in that structure and needs evaluated object to calculate cache. In the future we should split edit data from visualization data, but that's bigger refactor.
2018-05-11Cleanup: use 'uint' in draw managerCampbell Barton
2018-05-09Draw manager: Implement point selection modes for particle edit modeSergey Sharybin
2018-05-09Draw manager: Initial implementation of key points visualizationSergey Sharybin
Does all points all the time, ignoring the setting in viewport header. This is to be addressed by the next commit.
2018-05-09Draw manager: Start using more explicit API for particle edit modeSergey Sharybin
2018-05-08Orientation for 3D cursorCampbell Barton
Currently set when setting the cursor location, optionally used as an orientation type. Intended for use by tools too. See: D3208
2018-05-08Armature: Add back Stick bone draw type.Clément Foucault
The actual code is a bit convoluted but allows good and "pseudo efficient" drawing. (pseudo efficient because rendering instances with that amount of vertices is really inneficient. We should go full procedural but need to have bufferTexture implemented first) But drawing speed is not a bottleneck here and it's already a million time less crappy than the old (2.79) immediate mode method. Instead of drawing actual wires with different width we render a triangle fan batch (containing 3 fans: bone, head, tail) which is then oriented in screen space to the bone direction. We then interpolate a float value accross vertices giving us a nice blend factor to blend the colors and gives us really smooth interpolation inside the bone. The outside edge still being geometry will be antialiased by MSAA if enabled.
2018-05-07Armature: Fix BBones base face winding.Clément Foucault
Was producing wrong outline and backface culling.
2018-05-06Armature: Fix/Change bone axes display.Clément Foucault
Now the axes are displayed correctly at the tip of the bone and with the axes names. I've made some modifications though: - Axes are colored. (should not be in object mode but that's TODO) - Axes ends are not flat arrows anymore. Replaced with a small diamond. - Axes names are now scale by their respective axes instead of being affected by other axes. - Changed axes names "font" to be a bit more sexy.
2018-05-02Armature: Envelope: Small cleanup + don't smooth the distance display.Clément Foucault
The actual weighting calculation is not smooth as the bone display. The bone itself can be smooth for esthetic purpose but the distance display should match the underlying weighting formula.
2018-05-02Armature: Envelope: Revisit envelope drawing again.Clément Foucault
Past shader was too slow and had bad artifacts. This method is much simpler and eficient and only exhibit some popping when the raidus of the head/tail is changed.
2018-05-02Armature: More work and cleanup on envelope bones drawing.Clément Foucault
- Draw tail & head sphere with point shader (no needs for another way). - Use the same function for issuing the calls for wire and solid envelope.
2018-05-02Armature: Add envelope outline shader.Clément Foucault
2018-05-02Armature: Envelope Bones: Change drawing method.Clément Foucault
We now use a more pleasant and efficient way to display enveloppe bones and their radius. For this we use a capsule geometry that is displaced (in the vertex shader) to a signed distance field that represents the bone shape. The bone distance radius are now drawn in 3D using a "pseudo-fresnel" effect. This gives a better understanding of what is inside the radius of influence. When capsules are not needed, we switch to default raytraced points. The capsules are not distorded by the bone's matrix (same as their actual influence radius) and are correctly displayed even with complex scaled parents hierarchy.
2018-05-02DRW: Convert DRW_cache_circle_get to use GWN_PRIM_LINE_LOOPClément Foucault
2018-05-02Armature: "Raytrace" bones endpoint spheres.Clément Foucault
Here is how it works: We render a high poly disc that we orient & scale towards the camera so that it covers the same pixel of the sphere it's supposed to represent. Then the pixel shader raytrace the sphere (effectively starting from the poly disc depth) and outputs the depth to gl_FragDepth. This approach has many benefit: - high quality obviously: per pixel accurate depth! - compatible with MSAA: since the sphere horizon is delimited by polygons, we get the coverage computed by the rasterizer. However we still gets aliasing if the sphere intersect directly other meshes. - virtually no overdraw: there is no backface to shade but we still get overdraw because by little triangle [gpus rasterize pixel by groups of 4]. - allows early depth test: since the poly disc is set at the nearest depth we can output, we can use GL_ARB_conservative_depth to enable early depth test and discard pixels that are already behind geometry. - can draw outline pretty easily without geometry shader.
2018-05-02DRW: Add Adjacency info for bone shapes.Clément Foucault
Only for cube and octahedral shapes for now.
2018-05-02Eevee: Fix vertex color being in srgb space.Clément Foucault
Now they are properly converted to Linear space before interpolation. Since the only way to get vertex color in eevee and cycles is via the attribute node with the CD_AUTO_FROM_NAME flag, we have to know at binding time which type of buffer will be connected to this auto input. We store this information inside the batch cache (together with the according uniform name) and pass it as uniform to the shader which does conversion if needed. The same shader can then be reused to draw another mesh with different auto layers configuration.
2018-04-22Cleanup: trailing spacesCampbell Barton
Applied to newly added files in 2.8
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-28DRW: Opti: Make cursor use batch instead of immediate API.Clément Foucault
This is also much cleaner and taking 1 drawcall instead of 2.
2018-02-26DRW: Add new Draw Manager OpenGL Context.Clément Foucault
This separate context allows two things: - It allows viewports in multi-windows configuration. - F12 render can use this context in a separate thread and do a non-blocking render. The downside is that the context cannot be used while rendering so a request to refresh a viewport will lock the UI. This is something that will be adressed in the future. Under the hood what does that mean: - Not adding more mess with VAOs management in gawain. - Doing depth only draw for operators / selection needs to be done in an offscreen buffer. - The 3D cursor "autodis" operator is still reading the backbuffer so we need to copy the result to it. - All FBOs needed by the drawmanager must to be created/destroyed with its context active. - We cannot use batches created for UI in the DRW context and vice-versa. There is a clear separation of resources that enables the use of safe multi-threading.