-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
EXT_mesh_gpu_instancing #1691
Merged
Merged
EXT_mesh_gpu_instancing #1691
Changes from 26 commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
76587d9
instancing extension
ultrafishotoy de031ed
cleanup
ultrafishotoy 5d2dac5
overview statement
ultrafishotoy ed5f6e6
tweak statements
ultrafishotoy a68dcf6
statement
ultrafishotoy 82b3adb
description
ultrafishotoy 1b4f9c3
typo
ultrafishotoy 956b01d
simple example
ultrafishotoy 62cf80a
syntax fix
ultrafishotoy 2ed4903
teapots galore
ultrafishotoy a833742
oops
ultrafishotoy 8b8e39a
example image
ultrafishotoy 66fa030
fix path
ultrafishotoy 332af44
update attribs to POSITION, ROTATION, and SCALE
ultrafishotoy 133d28d
rename extension
ultrafishotoy 3857fa7
updated POSITION attribute to TRANSLATION
ultrafishotoy d53d9c8
remove 'world space' language
ultrafishotoy b4854e9
new sample files
ultrafishotoy ea4c776
sample updated with rotation as a quaternion
ultrafishotoy c70f30e
latest sample files
ultrafishotoy 615652a
oops
ultrafishotoy 8d8f4a0
KHR_mesh_instancing -> EXT_mesh_gpu_instancing
eef3c13
Merge pull request #1 from donmccurdy/ultrafishotoy-EXT_mesh_gpu_inst…
ultrafishotoy 900ac06
moved to Vendor folder and renamed
ultrafishotoy 5984aa1
Merge branch 'KHR_instancing' of https://github.com/ultrafishotoy/glT…
ultrafishotoy dbd7b63
specify the types of the attributes
ultrafishotoy e0a458b
clean up readme.md
ultrafishotoy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# EXT\_mesh\_gpu\_instancing | ||
|
||
## Khronos 3D Formats Working Group | ||
|
||
* John Cooke | ||
* Don McCurdy | ||
* Arseny Kapoulkine | ||
|
||
## Acknowledgments | ||
|
||
## Status | ||
|
||
Experimental | ||
|
||
## Dependencies | ||
|
||
Written against the glTF 2.0 spec. | ||
|
||
## Overview | ||
|
||
This extension is specfically designed to enable GPU instancing which renders many copies of a single mesh at once using a small number of draw calls. It's useful for things | ||
like trees, grass, road signs, etc. The TRANSLATION, ROTATION, and SCALE attributes allows the mesh to be displayed at many different locations with different rotations and scales. | ||
Custom attributes can use the underscore mechanism to achieve other effects (i.e. _ID, _TRANSFORM4x3, etc.). | ||
|
||
## Extending Nodes with per instance attributes | ||
|
||
Instancing is defined by adding the `EXT_mesh_gpu_instancing` extension to any glTF node that has a mesh. Instancing only applies to mesh nodes, there is no defined behavior for a node | ||
with this extension that doesn't also have a mesh. Applying to nodes rather than meshes allows the same mesh to be used by several nodes, instanced or otherwise. The attributes | ||
section contains accessor ids for the TRANSLATION, ROTATION, and SCALE attribute buffers, all of which are optional. The attributes specify an object space transform that should be | ||
multipled by the node's world transform in the shader to produce the final world transform for the instance. For example, the following defines some instancing attributes to a node with mesh. | ||
|
||
```json | ||
{ | ||
"nodes": [ | ||
{ | ||
"mesh": 0, | ||
"name": "teapot", | ||
"extensions": { | ||
"EXT_mesh_gpu_instancing": { | ||
"attributes": { | ||
"TRANSLATION": 0, | ||
"ROTATION": 1, | ||
"SCALE": 2, | ||
"_ID" : 3 | ||
}, | ||
} | ||
} | ||
} | ||
] | ||
} | ||
``` | ||
|
||
## Appendix | ||
|
||
|
||
## Reference | ||
|
||
|
||
### Theory, Documentation and Implementations |
Binary file added
BIN
+98.9 KB
extensions/2.0/Vendor/EXT_mesh_gpu_instancing/samples/teapots_galore/mesh.bin
Binary file not shown.
Binary file added
BIN
+152 Bytes
extensions/2.0/Vendor/EXT_mesh_gpu_instancing/samples/teapots_galore/mesh_2.bin
Binary file not shown.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please change this line to
## Contributors
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done! Thanks Ed!