diff --git a/Models/AnisotropyDiscTest/README.body.md b/Models/AnisotropyDiscTest/README.body.md new file mode 100644 index 00000000..2226a343 --- /dev/null +++ b/Models/AnisotropyDiscTest/README.body.md @@ -0,0 +1,19 @@ +## Screenshot + +![screenshot](screenshot/screenshot-large.png) + +## Description + +This model tests the main texturemap for [`KHR_materials_anisotropy`](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy). It has the following features: + +- An array of base material roughness values are tested with the same texturemap each time. + +- The upper-left quadrant tests a disc-shaped anisotropic pattern at a strength of about 3%. + +- The upper-right quadrant tests a disc-shaped anisotropic pattern at a strength of about 10%. + +- The lower-right quadrant tests a disc-shaped anisotropic pattern at a full strength. + +- The lower-left quadrant tests a disc-shaped anisotropic pattern with a gradient strength, starting at zero around the edges and increasing to full strength in the center. + +Per the anisotropy specification, anisotropic strength increases the material's roughness along a particular direction. Therefore, zero base roughness with full-strength anisotropy displays the most pronounced result. Full 1.0 base roughness cannot increase more, and does not show any effects from anisotropy. diff --git a/Models/AnisotropyDiscTest/glTF-Binary/AnisotropyDiscTest.glb b/Models/AnisotropyDiscTest/glTF-Binary/AnisotropyDiscTest.glb new file mode 100644 index 00000000..7c61948e Binary files /dev/null and b/Models/AnisotropyDiscTest/glTF-Binary/AnisotropyDiscTest.glb differ diff --git a/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest.gltf b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest.gltf new file mode 100644 index 00000000..ea168d07 --- /dev/null +++ b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest.gltf @@ -0,0 +1,1169 @@ +{ + "asset":{ + "copyright":"CC0 http://creativecommons.org/publicdomain/zero/1.0/. Model and texture created by Eric Chadwick.", + "generator":"Khronos glTF Blender I/O v3.6.27", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Box001" + }, + { + "mesh":1, + "name":"Box002" + }, + { + "mesh":2, + "name":"Box003" + }, + { + "mesh":3, + "name":"Box004" + }, + { + "mesh":4, + "name":"Box005" + }, + { + "mesh":5, + "name":"Box006" + }, + { + "mesh":6, + "name":"Box007" + }, + { + "mesh":7, + "name":"Box008" + }, + { + "mesh":8, + "name":"Box009" + }, + { + "mesh":9, + "name":"Box010" + }, + { + "mesh":10, + "name":"Text", + "rotation":[ + 0.70710688829422, + 0, + 0, + 0.7071066498756409 + ] + }, + { + "mesh":11, + "name":"Box000" + } + ], + "materials":[ + { + "name":"roughness 0.1", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.1 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.2", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.2 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.3", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.3 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.4", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.4 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.5", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.5 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.6", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.6 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.7", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.7 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.8", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.8 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 0.9", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0.9 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"roughness 1.0", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 1 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + }, + { + "name":"text", + "pbrMetallicRoughness":{ + "baseColorFactor":[ + 0, + 0, + 0, + 1 + ] + } + }, + { + "name":"roughness 0.0", + "pbrMetallicRoughness":{ + "metallicFactor": 1, + "roughnessFactor": 0 + }, + "extensions": { + "KHR_materials_anisotropy": { + "anisotropyStrength": 1, + "anisotropyTexture": { + "index": 0 + } + } + } + } + ], + "meshes":[ + { + "name":"Box001", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2, + "TANGENT":3 + }, + "indices":4, + "material":0 + } + ] + }, + { + "name":"Box002", + "primitives":[ + { + "attributes":{ + "POSITION":5, + "NORMAL":6, + "TEXCOORD_0":7, + "TANGENT":8 + }, + "indices":4, + "material":1 + } + ] + }, + { + "name":"Box003", + "primitives":[ + { + "attributes":{ + "POSITION":9, + "NORMAL":10, + "TEXCOORD_0":11, + "TANGENT":12 + }, + "indices":4, + "material":2 + } + ] + }, + { + "name":"Box004", + "primitives":[ + { + "attributes":{ + "POSITION":13, + "NORMAL":14, + "TEXCOORD_0":15, + "TANGENT":16 + }, + "indices":4, + "material":3 + } + ] + }, + { + "name":"Box005", + "primitives":[ + { + "attributes":{ + "POSITION":17, + "NORMAL":18, + "TEXCOORD_0":19, + "TANGENT":20 + }, + "indices":4, + "material":4 + } + ] + }, + { + "name":"Box006", + "primitives":[ + { + "attributes":{ + "POSITION":21, + "NORMAL":22, + "TEXCOORD_0":23, + "TANGENT":24 + }, + "indices":4, + "material":5 + } + ] + }, + { + "name":"Box007", + "primitives":[ + { + "attributes":{ + "POSITION":25, + "NORMAL":26, + "TEXCOORD_0":27, + "TANGENT":28 + }, + "indices":4, + "material":6 + } + ] + }, + { + "name":"Box008", + "primitives":[ + { + "attributes":{ + "POSITION":29, + "NORMAL":30, + "TEXCOORD_0":31, + "TANGENT":32 + }, + "indices":4, + "material":7 + } + ] + }, + { + "name":"Box009", + "primitives":[ + { + "attributes":{ + "POSITION":33, + "NORMAL":34, + "TEXCOORD_0":35, + "TANGENT":36 + }, + "indices":4, + "material":8 + } + ] + }, + { + "name":"Box010", + "primitives":[ + { + "attributes":{ + "POSITION":37, + "NORMAL":38, + "TEXCOORD_0":39, + "TANGENT":40 + }, + "indices":4, + "material":9 + } + ] + }, + { + "name":"Text", + "primitives":[ + { + "attributes":{ + "POSITION":41, + "NORMAL":42 + }, + "indices":43, + "material":10 + } + ] + }, + { + "name":"Box000", + "primitives":[ + { + "attributes":{ + "POSITION":44, + "NORMAL":45, + "TEXCOORD_0":46, + "TANGENT":47 + }, + "indices":4, + "material":11 + } + ] + } + ], + "textures":[ + { + "sampler":0, + "source":0 + } + ], + "images":[ + { + "mimeType":"image/png", + "name":"AnisotropyDiscs", + "uri":"AnisotropyDiscs.png" + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":9, + "max":[ + -0.5610918998718262, + 2.4917263984680176, + -7.510185241699219e-05 + ], + "min":[ + -1.5610918998718262, + 1.4917265176773071, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":4, + "componentType":5123, + "count":24, + "type":"SCALAR" + }, + { + "bufferView":5, + "componentType":5126, + "count":9, + "max":[ + 0.49895596504211426, + 2.4917263984680176, + -7.510185241699219e-05 + ], + "min":[ + -0.5010440349578857, + 1.4917265176773071, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":7, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":8, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":9, + "componentType":5126, + "count":9, + "max":[ + 1.5590038299560547, + 2.4917263984680176, + -7.510185241699219e-05 + ], + "min":[ + 0.5590038299560547, + 1.4917265176773071, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":10, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":11, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":12, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":13, + "componentType":5126, + "count":9, + "max":[ + 2.619051694869995, + 2.4917263984680176, + -7.510185241699219e-05 + ], + "min":[ + 1.6190516948699951, + 1.4917265176773071, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":14, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":15, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":16, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":17, + "componentType":5126, + "count":9, + "max":[ + -2.6800756454467773, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + -3.6800756454467773, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":18, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":19, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":20, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":21, + "componentType":5126, + "count":9, + "max":[ + -1.6200275421142578, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + -2.620027542114258, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":22, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":23, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":24, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":25, + "componentType":5126, + "count":9, + "max":[ + -0.5599794387817383, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + -1.5599794387817383, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":26, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":27, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":28, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":29, + "componentType":5126, + "count":9, + "max":[ + 0.5000686645507812, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + -0.49993133544921875, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":30, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":31, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":32, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":33, + "componentType":5126, + "count":9, + "max":[ + 1.5601167678833008, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + 0.5601167678833008, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":34, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":35, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":36, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":37, + "componentType":5126, + "count":9, + "max":[ + 2.6201648712158203, + 1.0858122110366821, + -7.510185241699219e-05 + ], + "min":[ + 1.6201648712158203, + 0.08581221103668213, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":38, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":39, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":40, + "componentType":5126, + "count":9, + "type":"VEC4" + }, + { + "bufferView":41, + "componentType":5126, + "count":3180, + "max":[ + 2.2268214225769043, + 0.0009999573230743408, + -1.1239114999771118 + ], + "min":[ + -3.671070098876953, + -2.619624137878418e-05, + -2.679887056350708 + ], + "type":"VEC3" + }, + { + "bufferView":42, + "componentType":5126, + "count":3180, + "type":"VEC3" + }, + { + "bufferView":43, + "componentType":5123, + "count":8100, + "type":"SCALAR" + }, + { + "bufferView":44, + "componentType":5126, + "count":9, + "max":[ + -1.6260428428649902, + 2.4917263984680176, + -7.510185241699219e-05 + ], + "min":[ + -2.6260428428649902, + 1.4917265176773071, + -7.510185241699219e-05 + ], + "type":"VEC3" + }, + { + "bufferView":45, + "componentType":5126, + "count":9, + "type":"VEC3" + }, + { + "bufferView":46, + "componentType":5126, + "count":9, + "type":"VEC2" + }, + { + "bufferView":47, + "componentType":5126, + "count":9, + "type":"VEC4" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":108, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":108, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":216, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":288, + "target":34962 + }, + { + "buffer":0, + "byteLength":48, + "byteOffset":432, + "target":34963 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":480, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":588, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":696, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":768, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":912, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":1020, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":1128, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":1200, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":1344, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":1452, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":1560, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":1632, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":1776, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":1884, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":1992, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":2064, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":2208, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":2316, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":2424, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":2496, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":2640, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":2748, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":2856, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":2928, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":3072, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":3180, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":3288, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":3360, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":3504, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":3612, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":3720, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":3792, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":3936, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":4044, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":4152, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":4224, + "target":34962 + }, + { + "buffer":0, + "byteLength":38160, + "byteOffset":4368, + "target":34962 + }, + { + "buffer":0, + "byteLength":38160, + "byteOffset":42528, + "target":34962 + }, + { + "buffer":0, + "byteLength":16200, + "byteOffset":80688, + "target":34963 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":96888, + "target":34962 + }, + { + "buffer":0, + "byteLength":108, + "byteOffset":96996, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":97104, + "target":34962 + }, + { + "buffer":0, + "byteLength":144, + "byteOffset":97176, + "target":34962 + } + ], + "samplers":[ + { + "magFilter":9729, + "minFilter":9987 + } + ], + "buffers":[ + { + "byteLength":97320, + "uri":"AnisotropyDiscTest_data.bin" + } + ], + "extensionsUsed": [ + "KHR_materials_anisotropy" + ] +} diff --git a/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest_data.bin b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest_data.bin new file mode 100644 index 00000000..f781e501 Binary files /dev/null and b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscTest_data.bin differ diff --git a/Models/AnisotropyDiscTest/glTF/AnisotropyDiscs.png b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscs.png new file mode 100644 index 00000000..3061b435 Binary files /dev/null and b/Models/AnisotropyDiscTest/glTF/AnisotropyDiscs.png differ diff --git a/Models/AnisotropyDiscTest/metadata.json b/Models/AnisotropyDiscTest/metadata.json new file mode 100644 index 00000000..4fd056d8 --- /dev/null +++ b/Models/AnisotropyDiscTest/metadata.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "legal": [ + { + "year": "2023", + "owner": "Public", + "license": "CC0", + "licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", + "artist": "Eric Chadwick", + "what": "Everything", + "text": "CC0 1.0 Universal", + "spdx": "CC0-1.0", + "icon": "https://licensebuttons.net/p/zero/1.0/88x31.png" + } + ], + "tags": [ + "extension", + "testing" + ], + "screenshot": "screenshot/screenshot.png", + "name": "Anisotropy Disc Test", + "path": "./Models/AnisotropyDiscTest", + "summary": "This model tests the texturemap for KHR_materials_anisotropy.", + "createReadme": true +} \ No newline at end of file diff --git a/Models/AnisotropyDiscTest/screenshot/screenshot-large.png b/Models/AnisotropyDiscTest/screenshot/screenshot-large.png new file mode 100644 index 00000000..47161016 Binary files /dev/null and b/Models/AnisotropyDiscTest/screenshot/screenshot-large.png differ diff --git a/Models/AnisotropyDiscTest/screenshot/screenshot.png b/Models/AnisotropyDiscTest/screenshot/screenshot.png new file mode 100644 index 00000000..8aabe347 Binary files /dev/null and b/Models/AnisotropyDiscTest/screenshot/screenshot.png differ