July 10, 2016, 07:47 (GMT) |
A couple of additional per-fiber attributes, for deforming strand fibers. The orientation of the hair root ("root space") as well as a parametric distance on the scalp to the primary deforming hair are passed to the vertex shader. These value will allow deformation modifiers to be applied for things like noise and clumping. |
July 9, 2016, 16:25 (GMT) |
Fix broken attribute disabling when some of the attributes are implicit. The vertex attributes for the fiber buffer use the gl_Vertex builtin variable of GLSL instead of an explicit named attribute input. The corresponding index then is -1. The following attributes still need to be disabled however. |
July 9, 2016, 12:41 (GMT) |
Enum property for selecting among the available hair shader models. Available choices are the "classic" particle shading (bogus, but useful for comparison), Kajiya, and Marschner. The Marschner model is not yet implemented. |
Revision 56ad452 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) July 9, 2016, 07:09 (GMT) |
Merge branch 'master' into strand_editmode |
July 9, 2016, 07:01 (GMT) |
Merge branch 'master' into strand_gpu |
July 8, 2016, 14:26 (GMT) |
Fix unfreed curve cache in edit mode drawing. |
July 8, 2016, 14:22 (GMT) |
Unified buffer creation for drawing strands in object and edit mode. Control strands are now drawn without subdivision. Control and fiber strands get their own vertex buffers for this purpose. The intermediate StrandData has been removed, because it is just redundant storage of the draw data buffers. The results in StrandData are not used for further editing, so there is really no point in keeping them around. |
July 8, 2016, 00:22 (GMT) |
update "bound" flag of GPU strand shaders Not sure how useful it is to track this. Just making it consistent. "bound" only stays in sync with GL if we are careful to use the GPU_strand_shader_bind/unbind functions. Rogue calls to GPU_shader_bind update GL's state without updating strand shader's "bound" flag. |
July 7, 2016, 23:20 (GMT) |
initialize variables before use Now builds with MSVC 2015 (was treating warning as error). Strand root returned from this function is safer: NULL when len <= 0. |
July 7, 2016, 18:33 (GMT) |
Subdivision for strand fibers. This is not supported for the edit mode fibers yet. Unifying the buffer creation here would help a great deal. |
July 7, 2016, 09:17 (GMT) |
Implementation of the Kajiya-Kay shading model for hair strands. This is a common simple shading model defined by Kajiya and Kay in "Rendering fur with three dimensional textures." (1989) This model in particular defines specular highlights for reflective thin cylinders (strands), which gives a much more hair-like appearance in the viewport. More advanced models (Marschner et. al.) improve this further, in particular the diffuse term. |
July 7, 2016, 07:30 (GMT) |
Fragment shader emulation of the current particle hair shading method. This is a terrible shading method, using the curve tangent as a "normal" vector. With the old particle hair this was a compromise, because line drawing does not support nicer shading in the fixed-function pipeline. With GLSL shaders this is just a quick starting point, and useful for comparison with the old shading. |
July 7, 2016, 05:50 (GMT) |
Refactoring: Renamed the "StrandRoot" arrays to "StrandFiber" for clarity. The strand system contains 2 levels of curve geometry: - "Strands" are the abstract control strands, editable by the user and thus few in number. - "Fibers" are renderable curves, generated based on those strands. "Roots" now is used exclusively for hair follicles, which are attached to the scalp mesh, i.e. follow the mesh deformation. |
July 6, 2016, 14:48 (GMT) |
Enable render strand display during hair edit mode. |
July 6, 2016, 14:34 (GMT) |
Store a copy of the strand roots array in the strand edit data. This will allow the edit mode to display render strands as well. The roots may later be re-scattered or otherwise modified during editing, and are eventually copied back to the Strands data when applying edits. |
July 6, 2016, 10:00 (GMT) |
Clear the edit draw data on updates, to make edit mode changes visible. |
July 6, 2016, 09:47 (GMT) |
GPU buffer functions for drawing a strand edit BMesh. Now the object mode and edit mode for strands use the same drawing code. Derived render strands are not yet supported (they may need re-scattering during editing) and the tool settings have no effect yet. |
July 6, 2016, 09:18 (GMT) |
Renamed BMesh strand functions to replace deprecated particle term 'keys' by 'vertex'. |
July 6, 2016, 07:12 (GMT) |
Do strand and editstrand drawing in the same place, so they are not shown both. |
July 5, 2016, 18:41 (GMT) |
Support for the Strand data structure in the hair editmode. |
|