Light path expressions - #2868
Open
joeyskeys wants to merge 4 commits into
Open
Conversation
lpe feature and test file multiple lpe aov support, try to fix scattering mode problem cleaning up
Member
|
Hi @joeyskeys, This is an awesome feature! Would you be interested in turning it into a mergeable PR? |
Author
|
Hi @dictoon, Yeah sure! I'll be working on this ASAP. Been away from the discord channel since the covid-19 outbreak. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I used to work with Luis and this's the feature he suggested me to implement, and here it is.
LPE AOV uses OSL's accumulator to do the calculation which is kinda different from appleseed's current AOV system.
The relationship between LPE AOV accumulator and LPE AOV is not one to one like the other applessed AOVs do, so there's a totally new entry in the project for LPE AOVs and the code structure is not quite the same.
I think the integration of LPE into appleseed's AOV system is mostly done, what comes next is the generate correct light path events and I believe there're still some problems need to solved.
As documented in OSL's wiki, currently supported events are:
Plus a customed one:
This event is added coz I found a lot light path termiated due to different terminations, need some suggestions on this part.
Scattering events support info:
Custom label is not supported yet.
There's a test scene sandbox/tests/test scenes/aovs/06 - LPE aov.appleseed, you can play with it first. DCC software supported is not implemented yet so you can only add LPE AOV in the text editor, sorry for the inconvenience. Save the AOVs via the "save main image and aovs" button in appleseed.studio.
In the above scene only mesh light is tested.
Volume support is added but not tested, need to setup another test scene.
And for the scattering mode part, I really need you guys' options.
Previously hit event is handled before bsdf is evaluated which caused the light path event generated to be incorrect, in the current implementation I postponed the handling of hit event(after bsdf is evaluated), which caused emitter event could be generated at index 0 and is conflicting with the assertion in LightPathStream::create_path_from_sampled_emitter.
I don't know if my current implementation will cause other problems.
A known issue is that the "<" symbol in the expression will cause problem when parsing project file, haven't try to solve this yet.
And in the last, here are some aov pictures rendered from the test scene:






direct_diffuse
greenwallonsphere
indirect_diffuse
specular
terminate
transparent