Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Docs: New conventions for retrieving renderer information #828

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

Open
lgritz wants to merge 1 commit into AcademySoftwareFoundation:main
base: main
Choose a base branch
Loading
from lgritz:lg-doc

Conversation

@lgritz
Copy link
Collaborator

@lgritz lgritz commented Dec 6, 2017

Add the following conventions for attributes that retrieve information about
the renderer:

 "renderer:name"
 "renderer:version"
 "renderer:versionstring"

and the following attribute that retrieves an integer frame number:

 "camera:frame"

Copy link
Collaborator Author

lgritz commented Dec 6, 2017

Haha, it turns out we DID implement this in our renderer! But I didn't document it in the OSL spec. And it has different names than I picked here.

I'm not 100% sure which set of names I like best, so let me sleep on it.

Questions for the peanut gallery:

  • "renderer:name" versus something more generic/aspirational to keep from denigrating uses that aren't renderers? Like "appname" or "app:name" or something?

  • Get rid of the 4-part version, too much trouble, just use one int and let the renderers decide how they want to encode it. (For example, they are free to do something like 10000major+100minor+patch, or whatever they want.)

Copy link
Contributor

"renderer:name" versus something more generic/aspirational to keep from denigrating uses that aren't renderers? Like "appname" or "app:name" or something?

Gaffer (ab)uses OSL in a few separate non-rendering contexts, but all within the same app. I'm not sure how likely we would be to need to query which context we were in, but if we did, we'd probably want to distinguish between the contexts ("gafferExpression", "gafferImage" etc) rather than have a single "app:name" query return "gaffer". But I tend to think that "renderer:name" is fine given that OSL's primary purpose is rendering...

Copy link
Collaborator Author

lgritz commented Dec 6, 2017

Up to each app. It's fine to be fully detailed, or just use "gaffer" for the app/renderer name and if you need to distinguish contexts, you can always have a second gaffer-specific attribute that can be queried to reveal the context.

But anyway, thanks for the input!

Copy link

Personally don't care about the names as long as you pick them. Or I would have picked things like "osl:host" or similar :P

/Z

Copy link
Collaborator Author

lgritz commented Dec 6, 2017

After mulling it over, I prefer "renderer:name" and "renderer:version", though I'm going to change the version from an int[4] to a single int, and let the renderers decide how their own version numbers should be encoded instead of imposing a fixed structure on it.

While the "appname"/"app:name" seemed like a high-minded nod to non-renderer uses of OSL, I think it hardly matters considering we have RendererServices, and probably a bunch of other places where we use that word, and nobody has complained that they feel like we are treating them as second class citizens.

markfinal reacted with thumbs up emoji

Copy link
Contributor

Just bike-shedding a bit more: I would vote for something like global:frame instead of camera:frame to make it clear we are talking about the output frame number as opposed to which frame the camera was loaded from (which could be different than geometry in bullet time or other retimed scenarios).

Copy link
Collaborator Author

lgritz commented Dec 7, 2017

sure

Copy link
Contributor

Is there any reason why this hasn't been merged yet? I'd like to start pestering people to implement it.

Copy link
Collaborator Author

lgritz commented Jun 2, 2018

Um... I think fell through the cracks as we were debating what the names ought to be. I will revive it next week.

Copy link
Contributor

Is this still something we care about?

Copy link

MasterZap commented Nov 4, 2019
edited
Loading

I still care, and will start acting as if this was merged as of this second... :)

Edit: Looking in my code, seems I cared since december 11:th 2018, LOL

/Z

Copy link

MasterZap commented Nov 4, 2019
edited
Loading

So turns out, I added this almost a year ago and then forgot, I blame the Chrismtas Schnapps:

For anyone who cares, 3ds Max OSL has for the last year or so returned the following values

renderer:name "3dsmax" for the C++ backend and "3dsmax:hlsl" for the HLSL backend.
renderer::version Whatever the currend 3ds max SDK "MAX_RELEASE" macro expanded to at the time of compilation (an integer).
renderer::versionstring That same integer just as a string. PROBABLY should be something more "human readable" but currently that's what it is.

When rendering with any embedded renderer that has it's own OSL implementation (like Arnold) obviously it will return whatever that OSL implementation does.

/Z

@lgritz lgritz force-pushed the lg-doc branch 3 times, most recently from 05677b8 to fc520c7 Compare May 8, 2020 00:45
Add the following conventions for attributes that retrieve information about
the renderer:
 "renderer:name"
 "renderer:version"
 "renderer:versionstring"
and the following attribute that retrieves an integer frame number:
 "camera:frame"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /