Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a Simulation Pass #17

Open
CaffeineViking opened this issue Dec 4, 2018 · 0 comments
Open

Implement a Simulation Pass #17

CaffeineViking opened this issue Dec 4, 2018 · 0 comments
Assignees
Labels
Priority: Future Work Project: Raytracer Issues relating to the Embree-based raytrace. Project: Renderer Issues relating to the core hair renderer itself. Type: Feature Something new and shiny is being requested.

Comments

@CaffeineViking
Copy link
Owner

CaffeineViking commented Dec 4, 2018

There were concerns in the latest call (2018-12-03) that we should maybe have a very simple animation of the strands to validate that the techniques we have implemented work OK when animated as well. A very good question is if the approximated deep shadow solution will completely break apart when animated, as exactly how much visual "error" will happen is uncertain (it could be well within limits, if so, then we're fine).

Crystal Dynamics solves the issues in the technique by splitting the hair style in several parts that have roughly the same "density", and assumed that the density remains mostly unchanged. In our case, since we don't split the hair style we could get very wrong results since the hair density could be completely off. As suggested, we could store a pre-calculated "thickness map", like in Colin-Barré's fast SSS method, and use that to infer the density (this would involve a 3-D texture for the density. Another way would be to store a per-strand value that says how densely clustered strands are in the local neighborhood. The latter technique I believe to be a better solution, and not attempted before in related work AFAIK). Of course, that still won't solve the problem of having a high deviation from the original density values when animated.

We need to think about this. If the error margins are too high we might have to either switch the self-shadow technique, or compensate for it somehow. We should discuss this in the next call as well I think, I won't try to get started on this just yet, as the other issues currently take major implementation priority.

It would also be interesting to see the animated results, especially of the voxelization and how e.g. AO looks like, since a major feature of our method is that the results can be animated (i.e. the technique is "general").

The simplest solution would be to take the TressFX simulation code and integrate it. But for now, we have opted not to do this, since other things were more important. However, if I or anyone else ever gets around to it, the TressFX/TressFXSimulation.hlsl shader seems ripe for the taking (and is under a nice license). Since we are using SPIR-V anyway, and our glslc.py script can compile HLSL --> SPIR-V we can maybe even use the shader as-is, and just provide the right descriptor bindings to it. Anyway, this is future work. Good luck!

@CaffeineViking CaffeineViking added Type: Feature Something new and shiny is being requested. Project: Renderer Issues relating to the core hair renderer itself. Priority: Low Project: Raytracer Issues relating to the Embree-based raytrace. labels Dec 4, 2018
@CaffeineViking CaffeineViking self-assigned this Dec 4, 2018
@CaffeineViking CaffeineViking changed the title (Optional) Implement a Simulation Pass Implement a Simulation Pass Feb 28, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: Future Work Project: Raytracer Issues relating to the Embree-based raytrace. Project: Renderer Issues relating to the core hair renderer itself. Type: Feature Something new and shiny is being requested.
Projects
None yet
Development

No branches or pull requests

1 participant