Blender Git Commits

Blender Git "strand_gpu" branch commits.

Page: 3 / 12

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.
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.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021