extend to support rendering to RenderTarget/OpenGL texture on Linux

This commit is contained in:
Nick Fisher
2022-12-08 17:36:44 +08:00
parent 4c1a2e9e01
commit 52b331fc2b
130 changed files with 56387 additions and 1168 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 856 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 500 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 457 KiB

View File

@@ -1,3 +1,755 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b05a4cf63ea1c614a9385cdb902c62bad324eccbb87a6c9e3370da2b6f36f2d
size 14565
{
"accessors": [
{
"componentType": 5123,
"count": 24408,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC3",
"max": [
0.131662,
0.137638986,
0.10078799
],
"min": [
-0.131333,
-0.028128,
-0.137763992
]
},
{
"componentType": 5123,
"count": 65688,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC3",
"max": [
0.11722149,
0.196387976,
0.132422984
],
"min": [
-0.11722149,
-0.196387976,
-0.132422984
]
},
{
"componentType": 5123,
"count": 2208,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC3",
"max": [
0.09527509,
0.114654,
-0.08429489
],
"min": [
-0.0952748954,
0.0551489964,
-0.14295499
]
},
{
"componentType": 5123,
"count": 60288,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC3",
"max": [
0.1572095,
0.2716865,
0.162181988
],
"min": [
-0.1572095,
-0.2716865,
-0.162181988
]
},
{
"componentType": 5123,
"count": 131574,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC3",
"max": [
0.1504075,
0.328366965,
0.173673
],
"min": [
-0.1504075,
-0.328366965,
-0.173673
]
}
],
"asset": {
"generator": "glTF Tools for Unity",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteOffset": 0,
"byteLength": 59806
},
{
"buffer": 0,
"byteOffset": 59808,
"byteLength": 99674
},
{
"buffer": 0,
"byteOffset": 159484,
"byteLength": 4875
},
{
"buffer": 0,
"byteOffset": 164360,
"byteLength": 133545
},
{
"buffer": 0,
"byteOffset": 297908,
"byteLength": 203914
}
],
"buffers": [
{
"name": "FlightHelmet",
"byteLength": 501824,
"uri": "FlightHelmet.bin"
}
],
"images": [
{
"name": "FlightHelmet_baseColor",
"uri": "FlightHelmet_baseColor.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic",
"uri": "FlightHelmet_occlusionRoughnessMetallic.png"
},
{
"name": "FlightHelmet_normal",
"uri": "FlightHelmet_normal.png"
},
{
"name": "FlightHelmet_baseColor1",
"uri": "FlightHelmet_baseColor1.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic1",
"uri": "FlightHelmet_occlusionRoughnessMetallic1.png"
},
{
"name": "FlightHelmet_normal1",
"uri": "FlightHelmet_normal1.png"
},
{
"name": "FlightHelmet_baseColor2",
"uri": "FlightHelmet_baseColor2.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic2",
"uri": "FlightHelmet_occlusionRoughnessMetallic2.png"
},
{
"name": "FlightHelmet_normal2",
"uri": "FlightHelmet_normal2.png"
},
{
"name": "FlightHelmet_baseColor3",
"uri": "FlightHelmet_baseColor3.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic3",
"uri": "FlightHelmet_occlusionRoughnessMetallic3.png"
},
{
"name": "FlightHelmet_normal3",
"uri": "FlightHelmet_normal3.png"
},
{
"name": "FlightHelmet_baseColor4",
"uri": "FlightHelmet_baseColor4.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic4",
"uri": "FlightHelmet_occlusionRoughnessMetallic4.png"
},
{
"name": "FlightHelmet_normal4",
"uri": "FlightHelmet_normal4.png"
}
],
"meshes": [
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 1,
"NORMAL": 2,
"TANGENT": 3,
"POSITION": 4
},
"indices": 0,
"material": 0,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 0,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "GlassPlastic_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 6,
"NORMAL": 7,
"TANGENT": 8,
"POSITION": 9
},
"indices": 5,
"material": 1,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 1,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "LeatherParts_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 11,
"NORMAL": 12,
"TANGENT": 13,
"POSITION": 14
},
"indices": 10,
"material": 2,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 2,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "Lenses_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 16,
"NORMAL": 17,
"TANGENT": 18,
"POSITION": 19
},
"indices": 15,
"material": 3,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 3,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "MetalParts_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 21,
"NORMAL": 22,
"TANGENT": 23,
"POSITION": 24
},
"indices": 20,
"material": 4,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 4,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "RubberWood_low"
}
],
"materials": [
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 0,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 1,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 2,
"texCoord": 0
},
"occlusionTexture": {
"index": 1,
"texCoord": 0
},
"name": "GlassPlasticMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 3,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 4,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 5,
"texCoord": 0
},
"occlusionTexture": {
"index": 4,
"texCoord": 0
},
"name": "LeatherPartsMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 6,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 7,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 8,
"texCoord": 0
},
"occlusionTexture": {
"index": 7,
"texCoord": 0
},
"alphaMode": "BLEND",
"name": "LensesMat",
"emissiveFactor": [
0,
0,
0
],
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 9,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 10,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 11,
"texCoord": 0
},
"occlusionTexture": {
"index": 10,
"texCoord": 0
},
"name": "MetalPartsMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"doubleSided": true,
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 12,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 13,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 14,
"texCoord": 0
},
"occlusionTexture": {
"index": 13,
"texCoord": 0
},
"name": "RubberWoodMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE"
}
],
"nodes": [
{
"mesh": 0,
"name": "GlassPlastic_low"
},
{
"mesh": 1,
"translation": [
0.000434499962,
0.032592997,
0.011676996
],
"name": "LeatherParts_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"mesh": 2,
"name": "Lenses_low"
},
{
"mesh": 3,
"translation": [
0.0331545,
-0.1488645,
-0.0242879968
],
"name": "MetalParts_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"mesh": 4,
"translation": [
-0.00190849893,
-0.111985,
-0.013313001
],
"name": "RubberWood_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"children": [
0,
1,
2,
3,
4
],
"rotation": [
0,
1,
0,
0
],
"name": "FlightHelmet",
"translation": [
0,
0,
0
],
"scale": [
1,
1,
1
]
}
],
"scene": 0,
"scenes": [
{
"nodes": [
5
]
}
],
"textures": [
{
"source": 0
},
{
"source": 1
},
{
"source": 2
},
{
"source": 3
},
{
"source": 4
},
{
"source": 5
},
{
"source": 6
},
{
"source": 7
},
{
"source": 8
},
{
"source": 9
},
{
"source": 10
},
{
"source": 11
},
{
"source": 12
},
{
"source": 13
},
{
"source": 14
}
],
"extensionsRequired": [
"KHR_draco_mesh_compression"
],
"extensionsUsed": [
"KHR_draco_mesh_compression"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 806 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 737 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 4.3 MiB

View File

@@ -1,3 +1,16 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0bc81c711f74fdfd2ef56e34d747383444a3ab6a1ee52fe62cb5838e59b0be56
size 545
# Flight Helmet
## Screenshot
![screenshot](screenshot/screenshot.jpg)
## License Information
Donated by Microsoft for glTF testing
[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)
To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset.
Draco compression was done via Cesium tools on 27-03-2020 as follows.
gltf-pipeline -i FlightHelmet.gltf -o FlightHelmet.gltf -d -s --keep-unused-elements

View File

@@ -1,3 +1,9 @@
version https://git-lfs.github.com/spec/v1
oid sha256:84f9da89760420d519b4be28e1c9b3962416b7b87e4a1484ca56a83d57c53e3e
size 330
Model by LaVADraGoN at Sketchfab.
From an joint University Project "Dune Express" Concept-Model was created by my Partner Evil Cloud.
License: CC Attribution-NonCommercial
Draco compression was done via Cesium tools on 27-03-2020 as follows.
gltf-pipeline -i scene.gltf -o scene.gltf -d -s --keep-unused-elements

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,3 +1,836 @@
version https://git-lfs.github.com/spec/v1
oid sha256:36c83fcf7f31a08420f487bb7f722a4b92728e53158b76e3764f0ee304db832d
size 20259
{
"asset" : {
"generator" : "Khronos glTF Blender I/O v1.6.16",
"version" : "2.0"
},
"scene" : 0,
"scenes" : [
{
"name" : "Scene",
"nodes" : [
0,
1,
3
]
}
],
"nodes" : [
{
"mesh" : 0,
"name" : "Cube"
},
{
"mesh" : 1,
"name" : "Cone",
"translation" : [
0,
0,
-4.3612141609191895
]
},
{
"name" : "Camera_Orientation"
},
{
"children" : [
2
],
"name" : "Camera",
"rotation" : [
0.5715538859367371,
0,
0,
0.8205645084381104
],
"translation" : [
0,
6.8069868087768555,
10.164137840270996
]
}
],
"animations" : [
{
"channels" : [
{
"sampler" : 0,
"target" : {
"node" : 0,
"path" : "translation"
}
}
],
"name" : "FloatUp",
"samplers" : [
{
"input" : 38,
"interpolation" : "LINEAR",
"output" : 39
}
]
}
],
"materials" : [
{
"doubleSided" : true,
"name" : "Material.001",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.800000011920929,
0.800000011920929,
0.800000011920929,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.4000000059604645
}
}
],
"meshes" : [
{
"extras" : {
"targetNames" : [
"Key 1",
"Key 2",
"Key 3",
"Key 4",
"Key 5",
"Key 6",
"Key 7",
"Key 8"
]
},
"name" : "Cube.001",
"primitives" : [
{
"attributes" : {
"POSITION" : 0,
"NORMAL" : 1,
"TANGENT" : 2,
"TEXCOORD_0" : 3
},
"indices" : 4,
"material" : 0,
"targets" : [
{
"POSITION" : 5,
"NORMAL" : 6
},
{
"POSITION" : 7,
"NORMAL" : 8
},
{
"POSITION" : 9,
"NORMAL" : 10
},
{
"POSITION" : 11,
"NORMAL" : 12
},
{
"POSITION" : 13,
"NORMAL" : 14
},
{
"POSITION" : 15,
"NORMAL" : 16
},
{
"POSITION" : 17,
"NORMAL" : 18
},
{
"POSITION" : 19,
"NORMAL" : 20
}
]
}
],
"weights" : [
0,
0,
0,
0,
1,
1,
1,
1
]
},
{
"extras" : {
"targetNames" : [
"Key 1",
"Key 2",
"Key 3",
"Key 4",
"Key 5",
"Key 6"
]
},
"name" : "Cone",
"primitives" : [
{
"attributes" : {
"POSITION" : 21,
"NORMAL" : 22,
"TANGENT" : 23,
"TEXCOORD_0" : 24
},
"indices" : 25,
"targets" : [
{
"POSITION" : 26,
"NORMAL" : 27
},
{
"POSITION" : 28,
"NORMAL" : 29
},
{
"POSITION" : 30,
"NORMAL" : 31
},
{
"POSITION" : 32,
"NORMAL" : 33
},
{
"POSITION" : 34,
"NORMAL" : 35
},
{
"POSITION" : 36,
"NORMAL" : 37
}
]
}
],
"weights" : [
0,
0,
0,
0,
0,
0
]
}
],
"accessors" : [
{
"bufferView" : 0,
"componentType" : 5126,
"count" : 276,
"max" : [
1,
1,
1
],
"min" : [
-1,
-1,
-1
],
"type" : "VEC3"
},
{
"bufferView" : 1,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 2,
"componentType" : 5126,
"count" : 276,
"type" : "VEC4"
},
{
"bufferView" : 3,
"componentType" : 5126,
"count" : 276,
"type" : "VEC2"
},
{
"bufferView" : 4,
"componentType" : 5123,
"count" : 276,
"type" : "SCALAR"
},
{
"bufferView" : 5,
"componentType" : 5126,
"count" : 276,
"max" : [
0.14205700159072876,
0.36317670345306396,
2.1620800495147705
],
"min" : [
-2.325753688812256,
-0.12704896926879883,
-0.1493830382823944
],
"type" : "VEC3"
},
{
"bufferView" : 6,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 7,
"componentType" : 5126,
"count" : 276,
"max" : [
0.14205700159072876,
0.6298741102218628,
0.14937379956245422
],
"min" : [
-0.5040037631988525,
-0.12704896926879883,
-0.7224071025848389
],
"type" : "VEC3"
},
{
"bufferView" : 8,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 9,
"componentType" : 5126,
"count" : 276,
"max" : [
1.1911587715148926,
0.7055504322052002,
0.14937379956245422
],
"min" : [
-0.1420515477657318,
-0.12704896926879883,
-0.9040634632110596
],
"type" : "VEC3"
},
{
"bufferView" : 10,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 11,
"componentType" : 5126,
"count" : 276,
"max" : [
1.0930120944976807,
0.12705659866333008,
0.14937379956245422
],
"min" : [
-0.1420515477657318,
-1.7105424404144287,
-0.3054158687591553
],
"type" : "VEC3"
},
{
"bufferView" : 12,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 13,
"componentType" : 5126,
"count" : 276,
"max" : [
1.0931031703948975,
7.137829303741455,
1.149359941482544
],
"min" : [
-1.0931031703948975,
-0.284426212310791,
-1.149359941482544
],
"type" : "VEC3"
},
{
"bufferView" : 14,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 15,
"componentType" : 5126,
"count" : 276,
"max" : [
0.7663934230804443,
0.12705659866333008,
0.14937379956245422
],
"min" : [
-0.1420515477657318,
-1.3416147232055664,
-1.2583342790603638
],
"type" : "VEC3"
},
{
"bufferView" : 16,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 17,
"componentType" : 5126,
"count" : 276,
"max" : [
1.0939359664916992,
0.12705659866333008,
0.14937379956245422
],
"min" : [
-0.1420515477657318,
-1.257744312286377,
-1.9783165454864502
],
"type" : "VEC3"
},
{
"bufferView" : 18,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 19,
"componentType" : 5126,
"count" : 276,
"max" : [
0.9689376950263977,
0.12705659866333008,
0.14937379956245422
],
"min" : [
-0.1420515477657318,
-1.4092154502868652,
-1.7750303745269775
],
"type" : "VEC3"
},
{
"bufferView" : 20,
"componentType" : 5126,
"count" : 276,
"type" : "VEC3"
},
{
"bufferView" : 21,
"componentType" : 5126,
"count" : 158,
"max" : [
1,
1,
1
],
"min" : [
-1,
-1,
-1
],
"type" : "VEC3"
},
{
"bufferView" : 22,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 23,
"componentType" : 5126,
"count" : 158,
"type" : "VEC4"
},
{
"bufferView" : 24,
"componentType" : 5126,
"count" : 158,
"type" : "VEC2"
},
{
"bufferView" : 25,
"componentType" : 5123,
"count" : 186,
"type" : "SCALAR"
},
{
"bufferView" : 26,
"componentType" : 5126,
"count" : 158,
"max" : [
0,
0.5201449394226074,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 27,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 28,
"componentType" : 5126,
"count" : 158,
"max" : [
5.200448989868164,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 29,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 30,
"componentType" : 5126,
"count" : 158,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
-1.9945937395095825
],
"type" : "VEC3"
},
{
"bufferView" : 31,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 32,
"componentType" : 5126,
"count" : 158,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 33,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 34,
"componentType" : 5126,
"count" : 158,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 35,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 36,
"componentType" : 5126,
"count" : 158,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 37,
"componentType" : 5126,
"count" : 158,
"type" : "VEC3"
},
{
"bufferView" : 38,
"componentType" : 5126,
"count" : 60,
"max" : [
2.5
],
"min" : [
0.041666666666666664
],
"type" : "SCALAR"
},
{
"bufferView" : 39,
"componentType" : 5126,
"count" : 60,
"type" : "VEC3"
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 0
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 3312
},
{
"buffer" : 0,
"byteLength" : 4416,
"byteOffset" : 6624
},
{
"buffer" : 0,
"byteLength" : 2208,
"byteOffset" : 11040
},
{
"buffer" : 0,
"byteLength" : 552,
"byteOffset" : 13248
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 13800
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 17112
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 20424
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 23736
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 27048
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 30360
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 33672
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 36984
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 40296
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 43608
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 46920
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 50232
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 53544
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 56856
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 60168
},
{
"buffer" : 0,
"byteLength" : 3312,
"byteOffset" : 63480
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 66792
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 68688
},
{
"buffer" : 0,
"byteLength" : 2528,
"byteOffset" : 70584
},
{
"buffer" : 0,
"byteLength" : 1264,
"byteOffset" : 73112
},
{
"buffer" : 0,
"byteLength" : 372,
"byteOffset" : 74376
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 74748
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 76644
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 78540
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 80436
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 82332
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 84228
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 86124
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 88020
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 89916
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 91812
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 93708
},
{
"buffer" : 0,
"byteLength" : 1896,
"byteOffset" : 95604
},
{
"buffer" : 0,
"byteLength" : 240,
"byteOffset" : 97500
},
{
"buffer" : 0,
"byteLength" : 720,
"byteOffset" : 97740
}
],
"buffers" : [
{
"byteLength" : 98460,
"uri" : "cube.bin"
}
]
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,185 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4e5abbab543615b9933bcc271430ceb6b934811c98704700b409f3ae9c990d1e
size 8651
material {
name : ubershader_gpu,
requires : [ uv0, uv1, color ],
shadingModel : lit,
blending : transparent,
depthWrite : true,
doubleSided : true,
flipUV : false,
specularAmbientOcclusion : simple,
specularAntiAliasing : true,
clearCoatIorChange : false,
vertexDomain: world,
parameters : [
{ type : float3, name : specularFactor },
{ type : float, name : glossinessFactor },
// Base Color
{ type : int, name : baseColorIndex },
{ type : float4, name : baseColorFactor },
{ type : sampler2d, name : baseColorMap },
{ type : mat3, name : baseColorUvMatrix, precision: high },
// Metallic-Roughness Map
{ type : int, name : metallicRoughnessIndex },
{ type : float, name : metallicFactor },
{ type : float, name : roughnessFactor },
{ type : sampler2d, name : metallicRoughnessMap },
{ type : mat3, name : metallicRoughnessUvMatrix, precision: high },
// Normal Map
{ type : int, name : normalIndex },
{ type : float, name : normalScale },
{ type : sampler2d, name : normalMap },
{ type : mat3, name : normalUvMatrix, precision: high },
// Ambient Occlusion
{ type : int, name : aoIndex },
{ type : float, name : aoStrength },
{ type : sampler2d, name : occlusionMap },
{ type : mat3, name : occlusionUvMatrix, precision: high },
// Emissive Map
{ type : int, name : emissiveIndex },
{ type : float3, name : emissiveFactor },
{ type : sampler2d, name : emissiveMap },
{ type : mat3, name : emissiveUvMatrix, precision: high },
// Cleat coat
{ type : float, name : clearCoatFactor },
{ type : float, name : clearCoatRoughnessFactor },
{ type : int, name : clearCoatIndex },
{ type : sampler2d, name : clearCoatMap },
{ type : mat3, name : clearCoatUvMatrix, precision: high },
{ type : int, name : clearCoatRoughnessIndex },
{ type : sampler2d, name : clearCoatRoughnessMap },
{ type : mat3, name : clearCoatRoughnessUvMatrix, precision: high },
{ type : int, name : clearCoatNormalIndex },
{ type : sampler2d, name : clearCoatNormalMap },
{ type : mat3, name : clearCoatNormalUvMatrix, precision: high },
{ type : float, name : clearCoatNormalScale },
// Reflectance
{ type : float, name : reflectance },
{ type : int3, name: dimensions },
{ type : float[255], name:"morphTargetWeights" },
{ type: sampler2dArray, format: float, name:"morphTargets" }
],
}
fragment {
void material(inout MaterialInputs material) {
highp float2 uvs[2];
uvs[0] = getUV0();
uvs[1] = getUV1();
if (materialParams.normalIndex > -1) {
highp float2 uv = uvs[materialParams.normalIndex];
uv = (vec3(uv, 1.0) * materialParams.normalUvMatrix).xy;
material.normal = texture(materialParams_normalMap, uv).xyz * 2.0 - 1.0;
material.normal.xy *= materialParams.normalScale;
}
if (materialParams.clearCoatNormalIndex > -1) {
highp float2 uv = uvs[materialParams.clearCoatNormalIndex];
uv = (vec3(uv, 1.0) * materialParams.clearCoatNormalUvMatrix).xy;
material.clearCoatNormal = texture(materialParams_clearCoatNormalMap, uv).xyz * 2.0 - 1.0;
material.clearCoatNormal.xy *= materialParams.clearCoatNormalScale;
}
prepareMaterial(material);
material.baseColor = materialParams.baseColorFactor;
if (materialParams.baseColorIndex > -1) {
highp float2 uv = uvs[materialParams.baseColorIndex];
uv = (vec3(uv, 1.0) * materialParams.baseColorUvMatrix).xy;
material.baseColor *= texture(materialParams_baseColorMap, uv);
}
material.baseColor *= getColor();
material.baseColor.rgb *= material.baseColor.a;
material.roughness = materialParams.roughnessFactor;
material.metallic = materialParams.metallicFactor;
// KHR_materials_clearcoat forbids clear coat from
// being applied in the specular/glossiness model
material.clearCoat = materialParams.clearCoatFactor;
material.clearCoatRoughness = materialParams.clearCoatRoughnessFactor;
if (materialParams.clearCoatIndex > -1) {
highp float2 uv = uvs[materialParams.clearCoatIndex];
uv = (vec3(uv, 1.0) * materialParams.clearCoatUvMatrix).xy;
material.clearCoat *= texture(materialParams_clearCoatMap, uv).r;
}
if (materialParams.clearCoatRoughnessIndex > -1) {
highp float2 uv = uvs[materialParams.clearCoatRoughnessIndex];
uv = (vec3(uv, 1.0) * materialParams.clearCoatRoughnessUvMatrix).xy;
material.clearCoatRoughness *= texture(materialParams_clearCoatRoughnessMap, uv).g;
}
material.emissive = vec4(materialParams.emissiveFactor.rgb, 0.0);
if (materialParams.metallicRoughnessIndex > -1) {
highp float2 uv = uvs[materialParams.metallicRoughnessIndex];
uv = (vec3(uv, 1.0) * materialParams.metallicRoughnessUvMatrix).xy;
vec4 mr = texture(materialParams_metallicRoughnessMap, uv);
material.roughness *= mr.g;
material.metallic *= mr.b;
}
if (materialParams.aoIndex > -1) {
highp float2 uv = uvs[materialParams.aoIndex];
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
material.ambientOcclusion = texture(materialParams_occlusionMap, uv).r *
materialParams.aoStrength;
}
if (materialParams.emissiveIndex > -1) {
highp float2 uv = uvs[materialParams.emissiveIndex];
uv = (vec3(uv, 1.0) * materialParams.emissiveUvMatrix).xy;
material.emissive.rgb *= texture(materialParams_emissiveMap, uv).rgb;
}
}
}
vertex {
vec3 getMorphTarget(int vertexIndex, int morphTargetIndex) {
// our texture is laid out as (x,y,z) where y is 1, z is the number of morph targets, and x is the number of vertices * 2 (multiplication accounts for position + normal)
// UV coordinates are normalized to (-1,1), so we divide the current vertex index by the total number of vertices to find the correct coordinate for this vertex
vec3 uv = vec3(
(float(vertexIndex) + 0.5) / float(materialParams.dimensions.x),
0.0f,
//(float(morphTargetIndex) + 0.5f) / float(materialParams.dimensions.z));
float(morphTargetIndex));
return texture(materialParams_morphTargets, uv).xyz;
}
void materialVertex(inout MaterialVertexInputs material) {
// for every morph target
for(int morphTargetIndex = 0; morphTargetIndex < materialParams.dimensions.z; morphTargetIndex++) {
// get the weight to apply
float weight = materialParams.morphTargetWeights[morphTargetIndex];
// get the ID of this vertex, which will be the x-offset of the position attribute in the texture sampler
int vertexId = getVertexIndex();
// get the position of the target for this vertex
vec3 morphTargetPosition = getMorphTarget(vertexId, morphTargetIndex);
// update the world position of this vertex
material.worldPosition.xyz += (weight * morphTargetPosition);
// increment the vertexID by half the size of the texture to get the x-offset of the normal (all positions stored in the first half, all normals stored in the second half)
vertexId += (materialParams.dimensions.x / 2);
// get the normal of this target for this vertex
vec3 morphTargetNormal = getMorphTarget(vertexId, morphTargetIndex);
material.worldNormal += (weight * morphTargetNormal);
}
mat4 transform = getWorldFromModelMatrix();
material.worldPosition = mulMat4x4Float3(transform, material.worldPosition.xyz);
}
}

View File

@@ -75,6 +75,9 @@ class _MyAppState extends State<MyApp> {
case -1:
await _filamentController.initialize();
break;
case -2:
await _filamentController.render();
break;
case 0:
await _filamentController
.setBackgroundImage(
@@ -83,7 +86,9 @@ class _MyAppState extends State<MyApp> {
case 1:
await _filamentController.loadSkybox(
'assets/default_env/default_env_skybox.ktx');
await _filamentController.loadSkybox(
break;
case -3:
await _filamentController.loadIbl(
'assets/default_env/default_env_ibl.ktx');
break;
case 2:
@@ -264,6 +269,8 @@ class _MyAppState extends State<MyApp> {
<PopupMenuEntry<int>>[
const PopupMenuItem(
value: -1, child: Text("initialize")),
const PopupMenuItem(
value: -2, child: Text("render")),
const PopupMenuItem(
value: 0,
child: Text("load background image")),
@@ -271,6 +278,10 @@ class _MyAppState extends State<MyApp> {
value: 1,
child: Text('load skybox'),
),
const PopupMenuItem(
value: -3,
child: Text('load IBL'),
),
const PopupMenuItem(
value: 2,
child: Text('remove skybox'),

View File

@@ -90,6 +90,9 @@ set_target_properties(${BINARY_NAME}
# them to the application.
include(flutter/generated_plugins.cmake)
include_directories(../../ios/include)
# === Installation ===
# By default, "installing" just makes a relocatable bundle in the build