Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
ee317c1
KHR_audio
robertlong Mar 31, 2022
b795b23
Update with latest OMI group spec changes
robertlong Jul 20, 2022
76cc32e
Update readme and schemas to align with most recent spec
robertlong Aug 30, 2022
247a882
Updates about uri/bufferView and MP3
robertlong Sep 28, 2022
5d3a2a3
Add MSFT_audio_emitter as prior art
robertlong Sep 28, 2022
ca2a5d0
Update extensions/2.0/Khronos/KHR_audio/README.md
robertlong May 11, 2023
55084f3
Update extensions/2.0/Khronos/KHR_audio/README.md
robertlong May 11, 2023
9ca359e
factors in KHR PR feedback and fixes readme
antpb Oct 19, 2023
3bed830
Merge pull request #1 from omigroup/khr-audio-feedback-adjustments
antpb Oct 19, 2023
61852ae
Clarify spec details in KHR_audio and add property summary tables
aaronfranke Jan 4, 2024
96d4dcb
Merge pull request #2 from aaronfranke/KHR_audio_tweaks
antpb Jan 18, 2024
a5fd6ff
Rename from KHR_audio to KHR_audio_emitter and add example file
aaronfranke Feb 15, 2024
53c75fa
Merge pull request #3 from aaronfranke/KHR_audio_emitter_rename
antpb Feb 29, 2024
126e763
Merge pull request #1 from omigroup/KHR_audio
rudybear May 15, 2024
f71498a
KHR audio graph design
Jun 15, 2024
04b6d18
Merge pull request #2 from facebook/chintans/KHR_audio_graph
rudybear Jun 18, 2024
2b2f9f0
Merge branch 'KhronosGroup:main' into main
rudybear Aug 27, 2024
4402ac5
KHR_audio_graph schema work in progress
rudybear Aug 27, 2024
a916db0
Schemas work in progress
rudybear Aug 27, 2024
c02109b
Schemas work in progress. raly copy/paste draft for all nodes and pro…
rudybear Aug 29, 2024
208b33f
AudioData update
rudybear Nov 6, 2024
311dbdc
AudioData update reverted
rudybear Nov 6, 2024
baa8763
AudioData, Oscillator and Source refactoring
rudybear Nov 6, 2024
90fbff3
AudioData, Oscillator and Source refactoring
rudybear Nov 6, 2024
cfcd066
Source work in progress
rudybear Nov 6, 2024
cab3c11
Rename schema for consistency
rudybear Nov 6, 2024
c56f120
Source next pass. Refactoring for the schemas
rudybear Nov 8, 2024
208ee76
Emitter pass. Removed shapes schema and embedded into attenuation
rudybear Nov 8, 2024
e484ee6
Updated gain description
rudybear Nov 25, 2024
ea19fe2
Updated glTF node to support array of emitters
rudybear Nov 26, 2024
aca835d
Gain node
utuere Nov 28, 2024
162c5dd
Nodes work in progress
utuere Dec 2, 2024
25ecddc
Merge branch 'KhronosGroup:main' into main
rudybear Dec 2, 2024
f686204
Reverb node work in progress
utuere Dec 3, 2024
4420d7a
Filter nodes work in progress
rudybear Dec 5, 2024
56ce29a
ChannelInterpretation pass
rudybear Dec 5, 2024
881cbfe
graph description work in progress
rudybear Dec 12, 2024
fffe6db
graph description work in progress
rudybear Dec 12, 2024
ae03b51
graph description work in progress
rudybear Dec 12, 2024
7ca047a
graph description work in progress
rudybear Dec 12, 2024
c40c02c
graph description work in progress
rudybear Dec 12, 2024
2a170c6
Fixes
rudybear Mar 25, 2025
18c2ce8
bug fixes
rudybear Mar 26, 2025
55cbc8f
Refactored nodes and graph approach
rudybear Sep 2, 2025
db364d2
Merge branch 'KhronosGroup:main' into main
rudybear Feb 7, 2026
507c820
Refine KHR_audio_graph spec and schemas
rudybear Apr 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
371 changes: 371 additions & 0 deletions extensions/2.0/Khronos/KHR_audio_emitter/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
{
"accessors": [
{
"bufferView": 0,
"byteOffset": 0,
"componentType": 5126,
"count": 5546,
"max": [0.158739, 0.218841, 0.16122],
"min": [-0.158738, -0.093846, -0.16122],
"normalized": false,
"type": "VEC3"
},
{
"bufferView": 1,
"byteOffset": 0,
"componentType": 5126,
"count": 5546,
"max": [1, 0.999997, 1, 1],
"min": [-0.999999, -0.99991, -1, 1],
"normalized": false,
"type": "VEC4"
},
{
"bufferView": 2,
"byteOffset": 0,
"componentType": 5126,
"count": 5546,
"max": [1, 1, 0.999977],
"min": [-1, -1, -1],
"normalized": false,
"type": "VEC3"
},
{
"bufferView": 3,
"byteOffset": 0,
"componentType": 5126,
"count": 5546,
"max": [0.999893, 0.977859],
"min": [0.000656, 0.00322],
"normalized": false,
"type": "VEC2"
},
{
"bufferView": 4,
"byteOffset": 0,
"componentType": 5125,
"count": 18108,
"max": [3586],
"min": [0],
"normalized": false,
"type": "SCALAR"
},
{
"bufferView": 5,
"byteOffset": 0,
"componentType": 5126,
"count": 1512,
"max": [0.158767, 0.147275, 0.161401],
"min": [-0.158767, -0.093846, -0.160383],
"normalized": false,
"type": "VEC3"
},
{
"bufferView": 6,
"byteOffset": 0,
"componentType": 5125,
"count": 1512,
"max": [1511],
"min": [0],
"normalized": false,
"type": "SCALAR"
},
{
"bufferView": 7,
"byteOffset": 0,
"componentType": 5126,
"count": 486,
"max": [0.147321, 0.194401, 0.128095],
"min": [-0.147379, 0.075066, 0.019262],
"normalized": false,
"type": "VEC3"
},
{
"bufferView": 8,
"byteOffset": 0,
"componentType": 5125,
"count": 486,
"max": [485],
"min": [0],
"normalized": false,
"type": "SCALAR"
}
],
"asset": {
"copyright": "2023 The Khronos Group",
"extensions": { "KHR_xmp_json_ld": { "packet": 0 } },
"generator": "Godot Engine v4.3.dev.custom_build",
"version": "2.0"
},
"bufferViews": [
{ "buffer": 0, "byteLength": 66552, "byteOffset": 0 },
{ "buffer": 0, "byteLength": 88736, "byteOffset": 66552 },
{ "buffer": 0, "byteLength": 66552, "byteOffset": 155288 },
{ "buffer": 0, "byteLength": 44368, "byteOffset": 221840 },
{ "buffer": 0, "byteLength": 72432, "byteOffset": 266208 },
{ "buffer": 0, "byteLength": 18144, "byteOffset": 338640 },
{ "buffer": 0, "byteLength": 6048, "byteOffset": 356784 },
{ "buffer": 0, "byteLength": 5832, "byteOffset": 362832 },
{ "buffer": 0, "byteLength": 1944, "byteOffset": 368664 }
],
"buffers": [{ "byteLength": 370608, "uri": "boom_box0.bin" }],
"extensions": {
"KHR_audio_emitter": {
"audio": [
{
"extensions": { "KHR_xmp_json_ld": { "packet": 0 } },
"mimeType": "audio/mpeg",
"uri": "kevin_macleod_bassa_island_loop.mp3"
}
],
"emitters": [
{
"gain": 0.3,
"name": "BoomBoxAudioEmitter",
"positional": { "refDistance": 1 },
"sources": [0],
"type": "positional"
}
],
"sources": [
{
"audio": 0,
"autoPlay": true,
"loop": true,
"name": "kevin_macleod_bassa_island_loop"
}
]
},
"KHR_xmp_json_ld": {
"packets": [
{
"@context": { "dc": "http://purl.org/dc/elements/1.1/" },
"@id": "",
"dc:creator": { "@list": ["The Khronos Group"] },
"dc:description": "Showcase of the KHR_audio_emitter and OMI_physics_body extensions",
"dc:format": "model/gltf+json",
"dc:publisher": { "@set": ["The Khronos Group"] },
"dc:rights": "CC0 1.0 Universal",
"dc:title": "Boom Box with audio and physics"
},
{
"@context": { "dc": "http://purl.org/dc/elements/1.1/" },
"@id": "",
"dc:creator": { "@list": ["Kevin MacLeod"] },
"dc:date": "2011",
"dc:description": "Bassa Island Game Loop by Kevin MacLeod",
"dc:format": "audio/mpeg",
"dc:identifier": "ISRC: USUAN1100840",
"dc:publisher": { "@set": ["Incompetech"] },
"dc:rights": "CC BY 3.0: Attribution",
"dc:source": "https://incompetech.com/music/royalty-free/mp3-royaltyfree/Bassa%20Island%20Game%20Loop.mp3",
"dc:title": "Bassa Island Game Loop"
}
]
},
"OMI_physics_shape": {
"shapes": [
{
"convex": { "mesh": 1 },
"type": "convex"
},
{
"convex": { "mesh": 2 },
"type": "convex"
},
{
"capsule": { "height": 0.04, "radius": 0.007 },
"type": "capsule"
},
{
"capsule": { "height": 0.199, "radius": 0.005 },
"type": "capsule"
}
]
}
},
"extensionsUsed": [
"GODOT_single_root",
"KHR_audio_emitter",
"KHR_xmp_json_ld",
"OMI_physics_body",
"OMI_physics_shape"
],
"images": [
{
"mimeType": "image/png",
"name": "boom_box_base_color",
"uri": "textures/boom_box_base_color.png"
},
{
"mimeType": "image/png",
"name": "boom_box_orm",
"uri": "textures/boom_box_orm.png"
},
{
"mimeType": "image/png",
"name": "boom_box_normal",
"uri": "textures/boom_box_normal.png"
},
{
"mimeType": "image/png",
"name": "boom_box_emission",
"uri": "textures/boom_box_emission.png"
}
],
"materials": [
{
"emissiveFactor": [0, 0, 0],
"emissiveTexture": { "index": 3 },
"extensions": {},
"name": "BoomBox_Mat",
"normalTexture": { "index": 2, "scale": 1 },
"occlusionTexture": { "index": 1 },
"pbrMetallicRoughness": {
"baseColorFactor": [1, 1, 1, 1],
"baseColorTexture": { "index": 0 },
"metallicFactor": 1,
"metallicRoughnessTexture": { "index": 1 },
"roughnessFactor": 1
}
}
],
"meshes": [
{
"extras": { "targetNames": [] },
"primitives": [
{
"attributes": { "NORMAL": 2, "POSITION": 0, "TANGENT": 1, "TEXCOORD_0": 3 },
"indices": 4,
"material": 0,
"mode": 4
}
]
},
{
"extras": { "targetNames": [] },
"primitives": [{ "attributes": { "POSITION": 5 }, "indices": 6, "mode": 4 }]
},
{
"extras": { "targetNames": [] },
"primitives": [{ "attributes": { "POSITION": 7 }, "indices": 8, "mode": 4 }]
}
],
"nodes": [
{
"children": [1, 2, 3, 4, 5, 6],
"extensions": { "OMI_physics_body": { "motion": { "mass": 5, "type": "dynamic" } } },
"name": "BoomBox"
},
{
"mesh": 0,
"name": "BoomBoxMesh",
"rotation": [0, 1, 0, 0]
},
{
"extensions": {
"KHR_audio_emitter": { "emitter": 0 }
},
"name": "BoomBoxAudioEmitter"
},
{
"extensions": {
"OMI_physics_body": { "collider": { "shape": 0 } }
},
"name": "MainColliderShape",
"rotation": [0, 1, 0, 0]
},
{
"extensions": {
"OMI_physics_body": { "collider": { "shape": 1 } }
},
"name": "HandleColliderShape",
"rotation": [0, 1, 0, 0]
},
{
"extensions": {
"OMI_physics_body": { "collider": { "shape": 2 } }
},
"name": "AntennaBaseColliderShape",
"translation": [0.145, 0.085, 0.004]
},
{
"extensions": {
"OMI_physics_body": { "collider": { "shape": 3 } }
},
"name": "AntennaShaftColliderShape",
"rotation": [-0.4547680914402, 0, 0, 0.890609860420227],
"translation": [0.1445, 0.159, -0.0775]
}
],
"samplers": [{ "magFilter": 9729, "minFilter": 9987, "wrapS": 10497, "wrapT": 10497 }],
"scene": 0,
"scenes": [{ "nodes": [0] }],
"textures": [
{ "sampler": 0, "source": 0 },
{ "sampler": 0, "source": 1 },
{ "sampler": 0, "source": 2 },
{ "sampler": 0, "source": 3 }
]
}
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading