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 |
Revision 1d28579 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) July 14, 2016, 07:59 (GMT) |
Merge branch 'mesh_samples' into strand_editmode |
Revision 48fc8b7 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) July 14, 2016, 07:57 (GMT) |
Merge branch 'master' into strand_editmode |
Revision bd4ca21 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) July 14, 2016, 07:56 (GMT) |
Merge branch 'master' into mesh_samples |
Revision 28270f0 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) 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 |
Revision 2f59675 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) 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. |
|