Blender Git Commits

Blender Git "strand_gpu" branch commits.

Page: 2 / 12

July 14, 2016, 15:04 (GMT)
Removed a couple of unused fiber curve attribute buffers.
July 14, 2016, 14:46 (GMT)
More detailed invalidation function for strand draw data.

Currently only used in its broadest form for freeing the whole buffer,
but could be used in the future to selectively invalidate parts of the
data, to avoid costly uploading of large but static buffers.
July 14, 2016, 10:38 (GMT)
Cleanup: Move code for strand drawing buffers into its own file.

The gpu_buffers.c file is becoming too large, and incorporates all the logic
from meshes and now strands, which should be separate from the API.

Making the strands buffer code separate also allows much more control,
e.g. for partially invalidating draw data and avoiding unnecessary buffer
uploads to the GPU.
July 14, 2016, 08:00 (GMT)
Merge branch 'strand_editmode' into strand_gpu
July 14, 2016, 07:59 (GMT)
Merge branch 'mesh_samples' into strand_editmode
July 14, 2016, 07:57 (GMT)
Merge branch 'master' into strand_editmode
July 14, 2016, 07:56 (GMT)
Merge branch 'master' into mesh_samples
July 14, 2016, 07:55 (GMT)
Replace the deprecated TessFace usage for mesh sampling by LoopTri.

Also make sure a valid generator instance for random sampling is always
returned, regardless of triangle counts.
July 13, 2016, 16:38 (GMT)
Fix crashes when generating fibers without any control curves present.
July 13, 2016, 16:27 (GMT)
Fix crash when adding a strands modifier and the fiber vertex/edge buffer is NULL.

The NULL buffer pointer is expected, just needs a sanity check.
July 13, 2016, 14:50 (GMT)
Merge branch 'strand_editmode' into strand_gpu
July 13, 2016, 14:50 (GMT)
Merge branch 'master' into strand_editmode
July 13, 2016, 13:00 (GMT)
Fix for incorrect buffer size calculation.

The fiber vertex buffer was calculated more than 10x bigger than necessary ...
July 13, 2016, 12:01 (GMT)
Implementation of Curl effect for vertex displacement.
July 13, 2016, 03:33 (GMT)
Ensure correct storage of curve normals and tangents with edit BMesh curves.
July 12, 2016, 11:00 (GMT)
Common control curve interpolation utility function.
July 12, 2016, 09:50 (GMT)
Store buffer textures for the rotating frame on control curves.

This frame will allow better deformation effects for bent curves.
July 12, 2016, 06:09 (GMT)
Use DynString to "include" shared code in the strand vert/geom/frag shaders.

This way we can avoid duplicate code for effects without going out of sync.
July 11, 2016, 19:08 (GMT)
Alternative implementation for strand fiber interpolation without a geometry shader.

Geometry shaders easily become performance bottlenecks, for in-depth explanation see e.g.

http://gamedev.stackexchange.com/a/48434
http://rastergrid.com/blog/2010/09/history-of-hardware-tessellation/

The geometry shader was used so far for generating the fiber geometry (line strips)
from just the root vertices. Without a geometry shader every vertex has to be put into
a buffer and uploaded to the GPU (we could use a tesselation shader to cut down on size,
but that remains to be decided later if OpenGL 4.x is available).

To limit the size of this vertex buffer, the vertices contain only minimal necessary
information: an index for the fiber curve, and an interpolation curve parammeter in [0.0, 1.0].
The locations of vertices are interpolated in the vertex shader using texture lookups.
A range of textures encode all the necessary per-fiber attributes, in particular the
interpolation indices and weights wrt. control curves. These control curves are stored in
yet another texture (as is the case with the geometry shader too).

Initial performance seems to improve drastically without the geometry shader.
July 11, 2016, 07:22 (GMT)
Added "effects" to the hair modifier for testing deformation of the hair in the shader.

These features will ultimately be implemented through nodes, but they are quite useful
for testing the shading itself and the performance.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021