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

gltfio: enable extended implementation #7776

Merged
merged 2 commits into from
Apr 27, 2024
Merged

Conversation

poweifeng
Copy link
Contributor

This change will enable proper flat-shading and MikkTSpace.

Fixes #6358, #7444

Flat Shading comparison (model from #6358)

Before:
image

After:
image

Tangent space comparison (model from #7444)

Before:
image

After:
image

Copy link

Please add a release note line to NEW_RELEASE_NOTES.md. If this PR does not warrant a release note, add the 'internal' label to this PR.

@poweifeng poweifeng added the internal Issue/PR does not affect clients label Apr 18, 2024
samples/gltf_viewer.cpp Outdated Show resolved Hide resolved
struct AssetConfigurationExtended {
//! Optional The same parameter as provided to \struct ResourceConfiguration ResourceLoader.h
//! gltfio/ResourceLoader.h
char const* gltfPath;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why this is realted to mikkt space? Why would setting a glTF path in a separate struct change the tangent space computations? This doesn't seem like a user-friendly API (and does it mean it only works with local files?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, deally, we'd just add support for mikktspace without changing the existing API, but that's not possible with how AssetLoader/ResourceLoader is structured. I opted to introduce minimal changes to existing API to address the opened bugs. So that any use case with the right criteria (desktop and only disk resources) can make use of it. But, the real, long-term solution should be a new loader API (separate from AssetLoader/ResourceLoader) that would better fit the assumption of running a remeshing algo like mikktspace.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added some comments in the header and in the commit to be more explicit about this approach's limitation.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah.. we should probably have a bug open then.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point, I filed #7782 for tracking.

@poweifeng poweifeng force-pushed the pf/gltfio-integrate-extended branch from efb5358 to b37f983 Compare April 19, 2024 19:16
Comment on lines 217 to 219
#if defined(__ANDROID__) || defined(IOS) || defined(__EMSCRIPTEN__)
PANIC_PRECONDITION("Extend asset loading is not supported on this platform");
#endif
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way to query if it's supported?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved this to a static method so that client can use the method to check for support.

This change will enable proper flat-shading and MikkTSpace.

Caveats:
 - Only for disk-local glTF resources
 - iOS, Web, Android do not work as of now

Fixes #6358, #7444
@poweifeng poweifeng force-pushed the pf/gltfio-integrate-extended branch from b37f983 to 5eefaa6 Compare April 27, 2024 00:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
internal Issue/PR does not affect clients
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SurfaceOrientation doesn't duplicate vertices when generating flat normals
4 participants