Skip to content

Commit

Permalink
Lighting support in the batch renderer (#1970)
Browse files Browse the repository at this point in the history
* gfx_batch: it's addNodeHierarchy(), not addMeshHierarchy().

In a preparation for the hierarchy to contain more than just meshes --
such as lights.

What is *very amazing* about this change is that it's the exact same
number of characters as before, so Clang Format has nothing to wildly
rearrange here.

* gfx_batch: support lights.

* Wire the light support through the gfx-replay APIs, enable it in replayer.

* Add a TODO for a "less NaNy" lookAt() alternative.

* Don't hardcode the ambient factor.

Due to how materials are implemented right now, this can't be easily
changed at runtime, thus it's not propagated from the replay file.
  • Loading branch information
mosra authored Jan 10, 2023
1 parent 7327002 commit 4ed8d04
Show file tree
Hide file tree
Showing 18 changed files with 1,068 additions and 183 deletions.
21 changes: 17 additions & 4 deletions data/test_assets/scenes/batch-four-squares-compressed.gltf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"KHR_materials_unlit",
"KHR_texture_ktx",
"KHR_texture_transform"
],
Expand Down Expand Up @@ -133,7 +134,10 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
Expand All @@ -148,7 +152,10 @@
}
}
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
Expand All @@ -163,7 +170,10 @@
}
}
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
},
{
"pbrMetallicRoughness": {
Expand All @@ -177,7 +187,10 @@
}
}
},
"name": "yellow"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat yellow"
}
],
"samplers": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"KHR_materials_unlit",
"KHR_texture_ktx",
"KHR_texture_transform"
],
Expand Down Expand Up @@ -138,7 +139,10 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
Expand All @@ -153,7 +157,10 @@
}
}
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
Expand All @@ -168,7 +175,10 @@
}
}
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
},
{
"pbrMetallicRoughness": {
Expand All @@ -182,7 +192,10 @@
}
}
},
"name": "yellow"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat yellow"
}
],
"samplers": [
Expand Down
21 changes: 17 additions & 4 deletions data/test_assets/scenes/batch-four-squares.gltf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"KHR_materials_unlit",
"KHR_texture_ktx",
"KHR_texture_transform"
],
Expand Down Expand Up @@ -138,7 +139,10 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
Expand All @@ -153,7 +157,10 @@
}
}
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
Expand All @@ -168,7 +175,10 @@
}
}
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
},
{
"pbrMetallicRoughness": {
Expand All @@ -182,7 +192,10 @@
}
}
},
"name": "yellow"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat yellow"
}
],
"samplers": [
Expand Down
26 changes: 21 additions & 5 deletions data/test_assets/scenes/batch-multiple-meshes.gltf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"KHR_materials_unlit",
"KHR_texture_ktx",
"KHR_texture_transform"
],
Expand Down Expand Up @@ -262,7 +263,10 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
Expand All @@ -277,7 +281,10 @@
}
}
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
Expand All @@ -292,7 +299,10 @@
}
}
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
},
{
"pbrMetallicRoughness": {
Expand All @@ -306,7 +316,10 @@
}
}
},
"name": "yellow"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat yellow"
},
{
"pbrMetallicRoughness": {
Expand All @@ -320,7 +333,10 @@
}
}
},
"name": "vertex-color magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat vertex-color magenta"
}
],
"samplers": [
Expand Down
23 changes: 18 additions & 5 deletions data/test_assets/scenes/batch-multiple-textures.gltf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"MAGNUMX_mesh_views"
"MAGNUMX_mesh_views",
"KHR_materials_unlit"
],
"extensionsRequired": [
"MAGNUMX_mesh_views"
Expand Down Expand Up @@ -107,7 +108,10 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
Expand All @@ -116,7 +120,10 @@
"index": 1
}
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
Expand All @@ -125,7 +132,10 @@
"index": 2
}
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
},
{
"pbrMetallicRoughness": {
Expand All @@ -134,7 +144,10 @@
"index": 3
}
},
"name": "yellow"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat yellow"
}
],
"samplers": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"MAGNUMX_mesh_views"
"MAGNUMX_mesh_views",
"KHR_materials_unlit"
],
"extensionsRequired": [
"MAGNUMX_mesh_views"
Expand Down Expand Up @@ -87,19 +88,28 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
"baseColorFactor": [0, 0.8, 0.8, 1]
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
"baseColorFactor": [0.8, 0, 0.8, 1]
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
}
],
"samplers": [
Expand Down
18 changes: 14 additions & 4 deletions data/test_assets/scenes/batch-square-circle-triangle.gltf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"generator": "Magnum GltfSceneConverter"
},
"extensionsUsed": [
"MAGNUMX_mesh_views"
"MAGNUMX_mesh_views",
"KHR_materials_unlit"
],
"extensionsRequired": [
"MAGNUMX_mesh_views"
Expand Down Expand Up @@ -92,19 +93,28 @@
"index": 0
}
},
"name": "checkerboard"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat checkerboard"
},
{
"pbrMetallicRoughness": {
"baseColorFactor": [0, 0.8, 0.8, 1]
},
"name": "cyan"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat cyan"
},
{
"pbrMetallicRoughness": {
"baseColorFactor": [0.8, 0, 0.8, 1]
},
"name": "magenta"
"extensions": {
"KHR_materials_unlit": {}
},
"name": "flat magenta"
}
],
"samplers": [
Expand Down
Binary file modified data/test_assets/scenes/batch.bin
Binary file not shown.
Loading

0 comments on commit 4ed8d04

Please sign in to comment.