Revision 0d67f8d by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 19, 2017, 07:56 (GMT) |
Removed unused shaders in the draw modes module. |
Revision 438b3f9 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 18, 2017, 15:13 (GMT) |
Implement control strands generation for basic hair types along surface normals. The default hair group type uses vertex normals to generate guide strands automatically. |
Revision 1b83722 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 14, 2017, 07:46 (GMT) |
Store the scalp mesh as part of the hair drawing interface. The scalp mesh is always needed for evaluating root positions anyway. |
Revision 6faa4d7 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 14, 2017, 07:19 (GMT) |
Removed fiber drawing from the strand edit mode to simplify code. For rendering hair fibers the edit mode should just use the underlying data. |
Revision b0717ad by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 14, 2017, 06:58 (GMT) |
Hair drawing data based on the new DNA hair groups. |
Revision 91fd0a4 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 11, 2017, 07:57 (GMT) |
Store pointer into the hair follicle array in hair groups directly. This creates a dependency of the hair groups on the validity of the pattern, so care has to be taken to always update the groups when the pattern changes. |
Revision e7df5f8 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 11, 2017, 07:17 (GMT) |
Split off hair drawing code into a separate file. |
Revision 6fa838f by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 7, 2017, 17:04 (GMT) |
List of 'Hair Groups' in hair patterns that will generate actual fibers for rendering. Each group affects a subset of the hair follicles, so that multiple effects can be combined without overlapping sample sets. |
Revision 41e8bd9 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 7, 2017, 12:06 (GMT) |
Merge branch 'blender2.8' of git.blender.org:blender into strand_editmode |
Revision 77802b2 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 7, 2017, 11:29 (GMT) |
Operator for generating a hair follicle distribution. |
Revision 8abe674 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 7, 2017, 09:54 (GMT) |
DNA data + modifier for storing persistent hair data. This stores basic hair follicle data, rather than full fiber caches (which should only be generated for render data). Note that deformation by strands will just be one possible way to generate hair fibers, so strands should be kept separate from the hair follicle data somewhat. |
Revision 53eb011 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 6, 2017, 11:41 (GMT) |
Prototype hair deformers for generated detail like clumping and curling. Currently only clumping and curls are implemented. There is no proper input for the parameters yet, these are just hardcoded atm. Eventually the hair system should either define uniform values from hair system settings or enable per-fiber values using a material or other node-based input. |
Revision 801c20c by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 4, 2017, 07:41 (GMT) |
Some optional timing for strand data buffer construction. |
Revision 9feec51 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 3, 2017, 19:27 (GMT) |
Subdivision of hair fibers for smoother shading. Subdivision works on the parent strands for efficiency. The fibers lengths are based on the final subdivided length of parents, so no changes to the shader are required. This would be nicer with a tesselation shader, but this feature is not available in Blender 2.8. |
Revision e34ba9f by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 3, 2017, 07:11 (GMT) |
Use a 2D texture for the hair interpolation data instead of 1D for larger number of hairs. It turns out that 1D textures have the same size limit on their 1 axis as 2D textures. This limits the potential number of hair dramatically, even though the actual size of the texture is very small. Using a 2D texture and wrapping the index avoids this problem. |
Revision c92457a by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 2, 2017, 21:35 (GMT) |
Default settings for hair edit mode tool settings. |
Revision bf0f058 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 2, 2017, 21:28 (GMT) |
Disable selection outline drawing on the object during hair edit mode. |
Revision e35f24f by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 2, 2017, 20:54 (GMT) |
Removed leftover hair fiber code from edit mode drawing (all in Eevee now). |
Revision e8ff620 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 2, 2017, 20:40 (GMT) |
Moved the hair fiber shader from strand edit mode into Eevee. This allows the shader to use proper lighting from the standard Eevee shaders. The code for interpolating hair strands is in a glsl library file to facilitate use in other engines later. |
Revision 3a438c6 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, tmp_hair_curves) August 1, 2017, 07:10 (GMT) |
Hair fiber (child hair) drawing during edit mode, with heavy GPU leveraging. Hair drawing requires fairly large vertex buffers. Vertices also need to be interpolated and displaced according to the control (parent) hairs and hair-style features like curling and clumping. Instead of doing this in advance on the CPU and uploading a large vertex buffer every frame, this work can be done on the GPU for realtime display, because interpolation and displacement are highly parallelizable. The vertex buffers then only need to be uploaded once (as long as strand lengths remain the same). The vertex format can also be very lightweight, requiring only a curve parameter and index (half the size needed for full positions). For interpolating a buffer texture is used in the shader, which contains all information about the control curves (parents) from which to interpolate final vertex positions. |
|