AcademySoftwareFoundation / OpenPBR

Specification and reference implementation for the OpenPBR Surface shading model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Spec version metadata

anderslanglands opened this issue · comments

In section 2.5, the spec lists a series of metadata to help compatibility. Ought the spec version be part of this? Or is there some other way to inspect which version of the spec a particular instance of an OpenPBR shader is?

In addition, from reading it's not clear what the different metadata being mentioned are, or where they are applied? Would be great to specify all this explicitly.

I think it would make sense for the metadata to include the version.

The section about metadata is a bit tentative. It doesn't seem appropriate to make such metadata (e.g. the assumed color space of the parameters) part of the material model itself, as it would require introducing string or enum parameters into the model.

The assumption seemed to be that way the shader parameters are packaged/contained for exchange is outside of the scope of the spec, and so perhaps it suffices to verbally/loosely describe the extra metadata/information needed that should be packaged with the parameters. I assume this has been done to some extent for the Standard Surface model.

For example how the N/T/B of the shading frame are actually defined (e.g. a normal map and all its parameters in some specific convention we don't dictate), can presumably be made reasonably unambiguous, but it's beyond the scope of the current spec to do that apart from pointing out that the asset management should set up the metadata to make it unambiguous.

Perhaps though we need to try to be more specific and actually have named pieces of metadata, with specified datatypes etc. I'm not sure.

See #74 (comment) for my take on the normal map specification issue.

We did add "The version of the specification implemented" to the suggested metadata.

The normal map conventions would be quite involved to properly specify (I think). So it would be for a later release, if we do it at all (it could be that this is outside of the scope of the spec permanently though).