diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 2cff66be8..000000000 --- a/.editorconfig +++ /dev/null @@ -1,6 +0,0 @@ -root = true - -[*] -indent_style = tab -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/.gitignore b/.gitignore index f91f9cb77..b2898d944 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,6 @@ artifacts/ *.pidb *.svclog *.scc -*.dll* *.pdb* *.pri* @@ -152,4 +151,72 @@ _pkginfo.txt *.orig # Current_Package folder -current-package/ \ No newline at end of file +current-package/ +**/Plugins/uap10.0.10586 +**/Plugins/uap10.0.10586.meta +TestProjects/*/Library/ +TestProjects/*/Temp/ +.vscode/ +TestProjects/*/*.sln +TestProjects/*/*.csproj +**/GLTFSerialization/.idea +**/GLTFSerialization/bin~ +**/GLTFSerialization/obj~ +TestProjects/*/.idea +TestProjects/*/Logs +TestProjects/*/UserSettings +TestProjects/*/.vsconfig +TestProjects/*/Builds +TestProjects/*/Assets/WSATestCertificate.pfx* + +# MacOS Metadata +.DS_Store + + +### Merged with UnityGltf subfolder +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/Assets/AssetStoreTools* +/Assets/ShaderForge* +/Assets/VSCode* +/UnityPackageManager/ + +# Visual Studio 2015 cache directory +/.vs/ +# Visual Studio Code directory +/.vscode/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.pfx* + +!*-dll.csproj +!*-dll.sln + +# Unity3D generated meta files +*.pidb.meta + +# Unity3D Generated File On Crash Reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +/www/node_modules/ + +.idea diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index afca77575..000000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "UnityGLTF/www/glTF-Sample-Models"] - path = UnityGLTF/www/glTF-Sample-Models - url = https://github.com/KhronosGroup/glTF-Sample-Models -[submodule "UnityGLTF/www/glTF-Asset-Generator"] - path = UnityGLTF/www/glTF-Asset-Generator - url = https://github.com/KhronosGroup/glTF-Asset-Generator diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..ef21f005a --- /dev/null +++ b/.npmignore @@ -0,0 +1,2 @@ +Tests/** +Tests.meta \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1e447796b..000000000 --- a/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -sudo: required -language: csharp -env: - global: - - BUILD_NAME=UnityGLTF - - PROJECT_PATH=UnityGLTF - - UNITY_VERSION=2018.4.14f1 -services: -- docker -before_install: -# Decrypt the Unity license to UNITY_LICENSE_CONTENT -- openssl aes-256-cbc -K $encrypted_98a45b338031_key -iv $encrypted_98a45b338031_iv - -in ./scripts/Unity_v2018.x.ulf.enc -out ./Unity_v2018.x.ulf -d -- export UNITY_LICENSE_CONTENT=`cat Unity_v2018.x.ulf` -- rm Unity_v2018.x.ulf -# Pull down docker image for this job -- docker pull $IMAGE_NAME -install: -# Build GLTFSerialization for the Unity project -- nuget restore ./GLTFSerialization/GLTFSerialization.sln -- msbuild ./GLTFSerialization/GLTFSerialization.sln /t:GLTFSerialization -# Mark all the scripts as executable -- chmod -R +rwx ./scripts/* -jobs: - include: - - name: "EditMode Test" - stage: test - script: "./scripts/docker_test.sh" - env: TEST_PLATFORM=editmode IMAGE_NAME=gableroux/unity3d:$UNITY_VERSION - - name: "PlayMode Test" - stage: test - script: "./scripts/docker_test.sh" - env: TEST_PLATFORM=playmode IMAGE_NAME=gableroux/unity3d:$UNITY_VERSION - - name: "StandaloneLinux64 Build" - stage: build - env: BUILD_TARGET=StandaloneLinux64 IMAGE_NAME=gableroux/unity3d:$UNITY_VERSION - script: "./scripts/docker_build.sh" - - name: "StandaloneOSX Build" - stage: build - env: BUILD_TARGET=StandaloneOSX IMAGE_NAME=gableroux/unity3d:$UNITY_VERSION-mac - script: "./scripts/docker_build.sh" - - name: "StandaloneWindows64 Build" - stage: build - env: BUILD_TARGET=StandaloneWindows64 IMAGE_NAME=gableroux/unity3d:$UNITY_VERSION-windows - script: "./scripts/docker_build.sh" \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..ed7f63f4b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,739 @@ +# Changelog +All notable changes to this package will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [2.8.1-exp] - 2024-01-18 +- fix: tangent recalculation was not working when importing draco meshes without tangents +- fix: DXT5nm conversion for non-readable textures +- fix: color space when loading KTX2 normals was incorrect +- fix: tiling and offset properties were displayed even when TEXTURE_TRANSFORMS was disabled on 2022.3+ +- fix: nullref in texture format validation when texture is missing +- fix: ifdefs to support Draco package 5.x from Unity Registry (`com.unity.cloud.draco`) +- add: show UI for adding/removing optional compression packages in GLTFSettings + +## [2.8.0-exp] - 2024-01-17 +- fix: bone weights were not properly imported from Draco compressed meshes due to bug in Unity's `CombineMeshes` +- fix: data loader was preventing multi-threaded imports from working +- fix: compilation error when `TMPro` package is not present +- fix: TMPro detection when `com.unity.ugui@2.0.0` is present which has TMPro embedded +- fix: normal map color space was wrong on non-standalone target platforms when normal import settings is set to DXT5nm, which is default on Unity 2021.3+ on some platforms +- fix: normal maps were not marked as Normal on editor import which is required for DXT5nm support +- fix: normal maps imported at runtime now set a `_NormalMapFormatXYZ` flag on their materials to ensure correct display +- fix: assets were not reimported when normal map setting changed between XYZ and DXT5nm (requires domain reload) +- fix: prepare for changed package declarations due to draco/ktx packages moving registries +- fix: GLTFRecorder should respect specified `UseAnimationPointer` setting +- fix: warn after editor import when textures on disk have incorrect linear/normal settings +- change: incorrectly named PBRGraph material option `_AutoSurfaceMode` is now called `_OverrideSurfaceMode` +- change: display texture settings warning above tabbed inspector for better visibility + +## [2.7.1-exp] - 2024-01-08 +- fix: default property deserializer was missing for nested extras objects in `MeshPrimitive` +- fix potential `ImportContext` NullRef +- change: move blend shape target names to mesh, according to https://github.com/KhronosGroup/glTF/pull/1631 +- add: selection export options are also in the GameObject menu now for right-click > export support + +## [2.7.0-exp] - 2024-01-03 +- fix: import scale was not applied to position animation curves +- fix: make sure `GLTFImporter` uses the default plugin import settings +- change: refactored import/export plugins for better control of what's enabled and what's not. This allows shipping experimental/optional plugins earlier. +- change: mark `GLTFSceneExporter.*` static callbacks obsolete. Use plugins instead +- add: allow overrides for which editor import plugins are used +- add: export plugin for `MSFT_lod` +- add: export plugin for `KHR_materials_variants`. Add the `MaterialVariants` component to your root to configure variants. +- add: export plugin to bake particle systems to meshes +- add: export plugin to bake canvas to meshes +- add: export plugin to bake TMPro GameObjects to meshes +- add: per-import settings for which plugins are applied +- add: `BeforeNodeExport` callback for export plugins +- add: warning icon for plugins that e.g. have missing package dependencies + +## [2.6.0-exp] - 2023-12-13 +- fix: verify tangent.w component on animation export (should be exactly -1 or 1) +- fix: recalculate mesh bounds when changing import scale +- fix: ensure correct quaternion continuity on animation import +- fix: sanitize Animator state names on import +- add: allow enabling GPU Instancing for materials on editor import +- add: ability to export files and buffer views, useful for e.g. KHR_audio + +## [2.5.2-exp] - 2023-11-13 +- fix: animation curve sorting running before validation +- add: support to animate camera background color + +## [2.5.1-exp] - 2023-11-08 +- fix: issue where importer context root object was not set +- fix: wrong flipped triangles when it's required to generate them ("Fox"-Test model) + fixed wrong imported vertex data on submeshes +- fix: draco ifdef compiler error +- fix: import reuse joints and weights for submeshes +- fix: import normals when tangents are required +- fix: humanoid importer inspector not being shown when model doesn't have animation data +- fix: animation export for identical clip+node +- fix: exporting glTF with external EXR texture falsely being encoded as PNG +- change: importer exposes node- and mesh-cache + +## [2.5.0-exp] - 2023-10-20 +- fix: default dataloader is now UnityWebRequestLoader +- fix: importing animations at runtime did not work in specific settings combinations +- fix: create default import context when importing files at runtime +- fix: meshes without submeshes but multiple materials behave the same as in Unity now (results in multiple draw calls) +- change: remove animation bounds nodes from GLTFRecorder again, can be added back via callbacks if needed +- feat: add option to import blend shape names or defaults +- feat: add OnBeforeAddAnimationData callback to GLTFRecorder +- feat: expose ExportAccessor(byte[]) and configurable overload for easier arbitrary data export + +## [2.4.2-exp] - 2023-09-28 +- change: always export root level objects / objects explicitly requested to be exported + +## [2.4.1-exp] - 2023-09-11 +- fix: GPU Instancing option was missing in 2021.x +- fix: Prevent ArgumentException when animating same property name on multiple components on the same GameObject +- change: Make glTF material editing opt-in per material +- add: glb textures can now be compressed to platform-default settings at import + +## [2.4.0-exp] - 2023-09-08 +- fix: improvements to light color and value export +- fix: light import color space +- fix: sanitize alpha cutoff value before writing +- fix: convert light and material color spaces when exporting for animation +- add: allow choice between implicit and explicit queue and surface type control (experimental) + +## [2.3.1-exp] - 2023-08-26 +- fix: restore ShouldExportTransform functionality on latest dev branch + +## [2.3.0-exp] - 2023-08-26 +- fix: removed incorrect smoothness property from PBRGraph +- fix: wrong file extension when extracting textures (was ".mat", now ".asset") +- fix: ensure default glTF sampling settings on loaded textures (in case there is no sampling information in the gltf) +- change: warn when importing legacy KHR_materials_pbrSpecularGlossiness extension +- change: remove obsolete GLTFSceneImporter constructors +- change: adjusted repository structure for modern package formats +- change: removed legacy test files and legacy samples that were used for testing (tests should come back at a later point) +- change: removed legacy folders from repository +- add: gltf filename log output when textures or extensions can't be imported + +## [2.2.0-exp] - 2023-08-16 +- fix: serialize/deserialize ExtTextureTransform for textures in material extensions +- fix: compiler warnings in unity 2023.1 +- fix: animation interpolation on import (unwanted smoothing of animation curves) +- fix: blendshapes with sparse accessors on import (results in distorted meshes) +- fix: quantize decoding (wrong data type conversion) +- fix: when exporting baked humanoid animation data with KHR_animation_pointer enabled, additional tracks were created for the already baked animation +- fix: relative paths containing ".." were not resolved correctly when importing in the Editor +- change: add external images to import dependencies (was conflicting with the ktx2 importer) +- change: import non referenced materials and textures (Use GLTFSceneImporter.LoadUnreferencedImagesAndMaterials to enable it) - In editor import: default is true, runtime: false +- change: don't export submeshes with 0 vertices +- change: RoughRefractionFeature (RenderFeature) to support 2023.1 +- add: uv channel support for export +- add: textures without names on import get a temp. name (will get removed on export again) +- add: clearcoat support (Normals are still not supported in pbrgraph shader) +- add: log error when trying to load exr textures (not supported) +- add: per texture transforms in pbrgraph (uv, rotation, scale/offset) +- add: stream length check in LoadBufferView, to prevent infinite loop when trying to read more data +- add: new import options in Gltf loading at runtime: Normals, Tangents, SwapUVs (see ImportOptions) +- add: meshOpt import support (requires package: com.unity.meshopt.decompress) + +## [2.1.2-exp] - 2023-08-03 +- fix: export of humanoid animations where both transforms as well as blendshapes are animated + +## [2.1.1-exp] - 2023-07-31 +- fix: export texture transform for metallicRoughness + +## [2.1.0-exp] - 2023-06-19 +- add: draco import support (requires package: com.atteneder.draco) +- add: KTX2 import support (requires package: com.atteneder.ktx) + +## [2.0.4-exp] - 2023-06-02 +- fix: sampled animations need individual GLTFAnimations since sampling another avatar is not transferrable +- fix: switching from URP/Lit or Standard to PBRGraph should set cutoff correctly so it matches the UI / shader expectations (#68) +- fix: conversion with _EMISSION keyword off was still setting emissive values (#86) +- fix: typo in TMPro shader (#83) +- fix: animated property validation was incorrect for 3-component color values and camera properties + +## [2.0.3-exp] - 2023-05-15 +- fix: import path retargeting exception in some cases +- fix: Range shader property type was missing from propery validation +- feat: allow changing GLTFRecorderClip animation output name + +## [2.0.2-exp] - 2023-05-08 +- remove: unnecessary forced texture transform setting +- fix: make sure default animation state is first in clip list on export +- fix: regarget animation clip paths when stripping empty hierarchy nodes +- fix: watch current render pipeline for changes so that we can trigger reimports +- fix: texture_ST properties aren't properly saved since ShaderGraph marks the textures as [NoScaleOffset} (IN-16486) +- fix: ArgumentException when animated property doesnt exist anymore on assigned shader where the PropertyType can not be resolved then + +## [2.0.1-exp] - 2023-05-05 +- add: sorting of animation clips +- change: dont export animation if expected channel count is not met (e.g. Vector2 has only one channel) +- fix: compilation warning +- fix: extracting multiple materials would throw error in serialized object access +- fix: "Calculate Mikktspace" tangents can be NaN in some cases +- internal: remove GradientSkybox shader from tests + +## [2.0.0-exp.2] - 2023-04-20 +- fix: fresh project reimport was breaking ImportPlugin API +- fix: editor import in 2021.x, added ShaderGraph dependency now +- fix: blendshape frame weight was incorrectly calculated on export +- fix: player compilation +- change: bump Unity dependency to 2020.3 + +## [2.0.0-exp] - 2023-04-18 +- add: ImportPlugin API with ``GltfImportPlugin`` and ``GltfImportPluginContext`` for receiving callbacks during import + +## [1.24.1-pre] - 2023-04-17 +- add: option to disable baking of AnimatorState speed value into animationclip +- fix: doublesided import when shader already had that set explicitly to false + +## [1.24.0-pre.3] - 2023-03-31 +- fix: sampling animation rigging wasn't working anymore +- fix: added warning about obsolete code and what to do +- fix: exposed `GLTFImporterHelper.TextureImportSettingsAreCorrect` and `GLTFImporterHelper.FixTextureImportSettings` again + +## [1.24.0-pre.2] - 2023-03-28 +- fix: nullref when importing files without animation in the editor + +## [1.24.0-pre] - 2023-03-27 +- feat: allow Mecanim Humanoid import in Editor with Avatar creation +- feat: better structure for glTF importer with tabs +- fix: don't try to generate UV coordinates for non-triangle meshes +- fix: don't attempt to recalculate normals/tangents for non-triangle meshes +- fix: wrap material extraction in StartEditing/StopEditing calls (fixes #81) +- fix: imports that failed on first try (e.g. missing textures, other errors) would keep using the old asset identifier instead of defaulting to the new one +- fix: runtime recording of SkinnedMeshRenderers without blend shapes was failing in some cases (fixes #80) +- fix: disabling Volume from PBRGraph would still use volume values +- fix: imported animation blendshape frame weights were not roundtripping well +- fix: some animations not imported in Mecanim mode +- fix: compilation issues with ShaderGraph package not present + +## [1.23.1-pre] - 2023-03-15 +- fix: ExportMesh not exporting submeshes in some cases +- fix: missing export mesh marker + +## [1.23.0-pre] - 2023-03-03 +- fix: revert other possible modifications when recording animations +- fix: exporting animation curves failed for blendshape animations on missing targets +- fix: better info for which object has missing curves on animation export +- feat: transparent/double-sided materials can now be upgraded from 2020.x to 2021.x+ + +## [1.22.4-pre] - 2023-02-25 +- fix: revert prefab modifications when recording humanoid animation from prefab assets to work around AnimationMode limitations +- fix: creation of duplicated keyframe when there is only one keyframe +- change: clarify log for rotation animation export with wrong number of curves + +## [1.22.3-pre] - 2023-02-09 +- fix: specular extension factor roundtrip was incorrect +- fix: MSFT_lods import created the wrong hierarchy and the culling option wasn't working +- fix: edge case in node/mesh imports in extensions that could lead to a stack overflow +- fix: calling `GLTFImporterInspector.FixTextureImportSettings` could result in an infite loop when called from an AssetPostprocessor + +## [1.22.2-pre] - 2023-02-04 +- fix: set morph target names from mesh extras on import (#70, thanks @emperorofmars) + +## [1.22.1-pre] - 2023-02-04 +- fix: broken texture references prevented files from loading entirely +- fix: .bin file was not properly registered as dependency for the imported .gltf asset +- fix: shader issue with instance ID transfer on 2021.x (#71, thanks @Jerem-35) +- fix: normal map colorspace was wrong on Mac in some cases (#74, thanks @robertlong) +- fix: ORM maps were exported with empty/unneeded alpha channel (#77, thanks @robertlong) + +## [1.22.0-pre] - 2023-02-01 +- feat: expose ExportNode API +- feat: optionally calculate and place bounds markers in GltfRecorder for viewers that don't caclulate bounds from animated skinned meshes properly (experimental) + +## [1.21.1-pre] - 2023-01-20 +- fix: animator being disabled after exporting humanoid animationclip +- fix: ignore MotionT and MotionQ on animator, can't be resolved for KHR_animation, seems to be a magic unity name +- fix: build error by accessing imageContentHash +- change: export HDR textures with zip compression by default + +## [1.21.0-pre] - 2023-01-14 +- feat: allow aborting export when not in Play Mode and meshes are not readable - seems to be a random Unity synchronization context issue +- fix: don't export unsupported light types (e.g. area light has type "rectangle" which is not supported in glTF) +- fix: Export human motion translation +- fix: prevent exporting the same baked humanoid clip for different avatars, needs individual clips since we're baking them (not retargeting at runtime) +- fix: reusing animation clips between objects with different hierarchies caused some targets to be missing, depending on export order +- change: remove warning for KHR_animation_pointer resolving when the unresolved object is a transform, that's part of core + +## [1.20.3-pre] - 2023-01-13 +- fix: wrong texture name in Texture Transform check +- fix: better check if a texture is a normal map and needs the right import settings +- fix: uris with escaped characters didn't correctly import in the editor + +## [1.20.2-pre] - 2023-01-12 +- fix: export of color animations where only one channel is animated +- fix: order of animationcurve properties when exporing animated colors in component where e.g. a user started by animating a single channel first (e.g. alpha) and later added keyframes for other channels + +## [1.20.1-pre] - 2023-01-10 +- fix: issue with exporting shared texture samplers in some cases +- fix: weights on skinned meshes shouldn't be resolved by custom KHR_animation_pointer resolvers as they're part of the core spec +- change: remove logs when caching data +- change: move cache clear button into settings +- add: KHR_materials_clearcoat roundtrip support (no in-editor visualization yet) + +## [1.20.0-pre] - 2023-01-04 +- add: caching of texture bytes on disc for faster export (can be disabled in UnityGLTFSettings) + +## [1.19.1-pre] - 2023-01-03 +- add: AfterPrimitiveExport event + +## [1.19.0-pre] - 2022-12-14 +- add: spritesheet keyframe animation export +- change: print warning when animation pointer cant be resolved and add filtering of objects that cant be resolved before building animation data +- fix: index discrepancy between _exportedMaterials and _root.Materials lead to wrong texture indices being returned in some cases +- fix: don't write and declare IOR when it's at the default value +- fix: importing textures with names resulted in those names not being used (only image names were used) +- fix: importing files without baseMap but using texture transforms for normal or emissive would result in texture transforms not being used + +## [1.18.5-pre] - 2022-12-02 +- fix: default material was missing in build + +## [1.18.4-pre] - 2022-12-02 +- fix: GLTFRecorder didn't properly record with animation pointer off anymore +- fix: unified access to SkinnedMeshRenderer weights on export +- fix: nullrefs in ExportPlan with missing SkinnedMeshRenderer +- feat: allow passing custom settings into GLTFRecorder + +## [1.18.3-pre] - 2022-11-14 +- fix: disabled MeshRenderers and SkinnedMeshRenderers were not exported despite ExportDisabledGameObjects being on +- fix: sample root transform as well in Humanoid export to prevent shifting it around when recording + +## [1.18.2-pre] - 2022-11-10 +- fix: exception thrown when trying to add a material instance id twice + +## [1.18.1-pre] - 2022-11-09 +- fix: ExportMeshes was not exporting new meshes since the internal material check didn't let it through + +## [1.18.0-pre] - 2022-11-07 +- fix: blend shape weight animation wasn't properly exported in some cases +- fix: IOR extension may end up as null when IOR was animated +- fix: rough refracton LOD access is now affected by alpha blending +- feat: HDR render textures can be exported now +- feat: add ExportMesh(Mesh) API as convenience helper +- feat: add material remapping to glTF/GLB importer +- chore: code cleanup for rough refraction and material inspector +- change: animation export code paths have been consolidated, less differences between KHR_animation_pointer and regular export +- change: bumped min Unity version to 2019.4 + +## [1.17.2-pre] - 2022-10-21 +- fix: set linear export setting before accessing texture exporter settings for unknown textures + +## [1.17.1-pre] - 2022-10-19 +- fix: glb export now using utf8 (no BOM) +- fix: simplify and fix normals export + +## [1.17.0-pre] - 2022-10-12 +- add: import options for animation loop and re-enable by default for Mecanim +- fix: reimport assets when colorspace changes +- fix: texture map type needs to be passed into UniqueTexture, otherwise textures used for different things don't get exported correctly +- fix: bake smoothness values into roughness map if there's no good conversion +- fix: alpha cutout export on BiRP +- fix: base color warning should only be shown for transparent objects +- fix: improve alpha cutout inspector for 2020.3 +- fix: smoothness was inverted / removed even if no smoothness map existed +- change: refactor TextureMapType to contain options for conversion to clean up export and introduce ability to convert smoothness +- change: refactor textureSlots, usage of textureSlot names and how they should be called + +## [1.16.3-pre] - 2022-10-06 +- fix: KHR_animation_pointer bug with re-used animations targeting properties on nodes + +## [1.16.2-pre] - 2022-09-30 +- fix: blend shapes and blend shape animations were not imported (note: sparse accessor import not working yet) +- fix: allow doublesided and transparent import on 2020.3 URP with PBRGraph +- fix: make RegisterPrimitivesWithNode API public, belongs to ExportMesh +- fix: UnlitGraph used wrong texture transform in some cases +- fix: BiRP texture import on legacy shaders in < 2020.3 had flipped texture transforms +- fix: ExporterMaterials compilation issue on 2018.x +- fix: some TMPro materials were exported incorrectly + +## [1.16.1-pre] - 2022-09-25 +- fix: first-time import was failing to find shaders on 2020.x in some cases +- fix: TMPro texture conversion one export was blurry at the bottom of the texture +- fix: transmission/volume mat was incorrectly imported +- fix: transparency was incorrectly imported on 2020.x +- fix: material validation on 2021.x wasn't properly turning transparency on for some imports +- fix: no compilation errors on 2018.4 + 2019.4 + +## [1.16.0-pre] - 2022-09-21 +- fix: checking materials for _ST shader properties was failing on specific Unity versions +- fix: AnimationPointerResolver was warning in cases that are allowed / no warning needed +- fix: build compilation issues on 2022+ +- fix: default scene name differed from glTFast, which broke switching importers. Both use "Scene" now +- fix: import warnings for metallicRoughness texture swizzling only print when a metallicRoughness texture is actually used +- feat: tangents are recalculated on import now +- feat: TMPro meshes export with baked texture now instead of SDF texture +- feat: added AfterTextureExportDelegate/BeforeTextureExportDelegate and UniqueTexture hash for modifying textures on export +- change: explicit bool option to turn KHR_materials_volume export on and off +- change: removed outdated samples from package +- change: if a mesh in the glTF doesn't specify a name it will import without name now instead of using a default name + +## [1.15.0-pre] - 2022-09-13 +- fix: workaround for ShaderGraph bug on 2021.2+ that breaks defining baseColorTexture_ST manually +- fix: workaround for Unity regression in 2022.1+ where checking material properties returns wrong results in some cases +- feat: allow exporting of Humanoid animation clips (get baked to generic) +- change: texture aniso values >= 1 now result in LinearMipmapLinear filtering to match visual result in Unity better + +## [1.14-0-pre] - 2022-09-11 +- fix: log error instead of exception for missing textures on export +- feat: allow referencing GameObjects for `KHR_animation_pointer` +- change: animated fields with `KHR_animation_pointer` now try to find their correct Unity properties instead of the serialized field (m_ prefix disappears) + +## [1.13.0-pre] - 2022-09-05 +- add: preliminary HDR texture export in EXT_texture_exr extension +- fix: Unity Editor module related issues +- fix: wrongly exporting two keyframes for animations with only one keyframe +- fix: children of lights and cameras were inverted + +## [1.12.2-pre] - 2022-08-29 +- fix: KHR_animation_pointer export where member is declared on base type + +## [1.12.1-pre] - 2022-08-23 +- fix: nullref in export of missing mesh + +## [1.12.0-pre] - 2022-08-23 +- fix: emissive color alpha was set to 1 in some roundtrip cases when it should have been 0 +- fix: nullref in import when glTF had null textures (against the spec, but other viewers tolerate it) +- fix: unlit double sided was incorrectly imported in BiRP +- fix: PBRGraphUI didn't properly draw infos for SkinnedMeshRenderer +- fix: added safeguards against Shader.Find not working in first imports (fixes #51) +- fix: textures without mipmaps should export closer to intended now +- fix: missing pbrMetallicRoughness property was treated incorrectly +- fix: BeforeSceneExport was missing from gltf+bin exports +- feat: warn in PBRGraphGUI when UV0 isn't present (fixes #52) +- feat: texture channel swizzling on URP/Lit > PBRGraph material conversion in 2022.1+ +- feat: expose ExportMesh API using UniquePrimitive array to export arbitrary meshes from extensions (#55, thanks @robertlong) +- feat: GLTFSettings can now be passed into GLTFSceneExporter directly, falls back to project settings if none are provided +- remove: public settings API on GLTFSceneExporter is now gone. Pass in custom settings via ExportOptions if needed. + +## [1.11.0-pre] - 2022-07-27 +- fix: converting PBRGraph and UnlitGraph to each other shouldn't warn +- fix: multiple animators referencing the same clip exported animations incorrectly with KHR_animation_pointer on +- fix: implemented partial animation target removal when some bindings animate missing objects +- change: asset identifier for imported assets is now an explicit option +- change: removed compilation flag to use new asset identifier, use the explicit option instead + +## [1.10.1-pre] - 2022-07-18 +- fix: accessor submesh primtives were incorrectly assigned after internal duplication +- fix: don't add import dependency on shaders, load them by GUID instead +- fix: URI-escaped file names weren't always resolved correctly +- fix: some KHR_animation_pointer export type fixes (vec3 colors vs. vec4 colors) +- feat: add color helpers to PBRGraphGUI +- feat: add UnlitGraph for 2021.2+ +- feat: new API, GetPrimitivesForMesh to add extensions to exported meshes (e.g. KHR_materials_variants) + +## [1.10.0-pre] - 2022-07-06 +- fix: PBRGraph assignable again from shader dropdown +- fix: various KHR_animation_pointer fixes to extension usage and property names +- fix: compilation fixes for Unity 2018/2019 +- feat: add helper, callbacks and script generator for shader conversion +- change: Importer/Exporter are now multiple partials +- change: change GetAnimationTargetIdFrom[..] to Get[..]Index to clarify what it does + +## [1.9.0-pre] - 2022-06-22 +- fix: properly set BiRP ShaderGraph transparency keywords +- feat: PBRGraph property names now match glTF names directly (breaking change from 1.7.0+) +- feat: PBRGraph now has a custom shader GUI that also validates keywords + +## [1.8.1-pre] - 2022-06-22 +- fixed: same animation used on different objects should result in different pointer values with KHR_animation_pointer used +- fixed: nullref when adding animation data for null object (e.g. unused property clip) +- fixed: too many nodes get overwritten by duplicate animations with animation pointer +- changed: GetAnimationId now takes root transform parameter +- fixed: previously seen KHR_animation_pointer is now added to resolve list (e.g. when using animations on multiple objects and animating component values) + +## [1.8.0-pre.2] - 2022-06-14 +- fixed: OcclusionTexture tiling now defaults to (1,1) +- fixed: build errors on certain platforms + +## [1.8.0-pre] - 2022-06-10 +- fixed: fixed package version, color space changes require minor version bump, not just patch +- fixed: C# version error on 2020.3 + +## [1.7.1-pre.3] - 2022-06-10 +- feat: show extensions and textures in importer inspector +- feat: export texture coord (UV0 / UV1) separately for "occlusionTexture" and "everything else", same as three.js +- fixed: editor import of .gltf files with textures now uses those textures directly instead of creating new ones +- fixed: exporting only includes extensions that are actually used or explicitly enabled +- fixed: no more differences in color space between exporting glTF + textures or glb with embedded textures +- fixed: importer properly declares shaders as dependencies, fixes library reimport errors + +## [1.7.1-pre.2] - 2022-06-08 +- fixed: animation clip import in Editor working again + +## [1.7.1-pre] - 2022-06-07 +- feat: sparse accessors import (partial) +- feat: UV rotation import/export (for baseColorTexture only right now) +- fixed: GLTFRecorderComponent error in play mode when only new input system is present +- fixed: animation export with KHR_animation_pointer and reused nodes +- fixed: passing invalid file names to Export could result in wrong buffer paths in JSON + +## [1.7.0-pre] - 2022-06-01 +- feat: experimental support for KHR_animation_pointer +- feat: experimental URP (2020.3+) & BiRP (2021.2+) Shader Graph for export and import, `UnityGLTF/PBRGraph` +- feat: approximated support for exporting and importing KHR_materials_transmission, KHR_materials_volume, KHR_materials_ior, KHR_materials_iridescence, best used with `UnityGLTF/PBRGraph` +- feat: renderer features and post effect for rough refraction / transmission (for URP and BiRP) +- fixed: light and camera directions were flipped when animated +- fixed: normal textures were exported with wrong color space in .gltf +- fixed: WebRequestLoader edge case with relative paths +- improved: better heuristic for PBR material export and generally better glTF-related material property export + +## [1.6.1-pre.3] - 2022-05-10 +- feat: allow replacing logger for GLTFSceneExporter with a custom one, allows to reduce number of logs +- feat: added more ProfilerMarkers +- removed: removed submodules from repository to make usage as submodule in other projects easier +- fixed: bad performance in GLTFRecorder when recording lots of animation and/or Blendshape weights +- fixed: some mismatched ProfilerMarker.Begin/End calls +- fixed: less allocations when writing accessors + +## [1.6.1-pre.2] - 2022-05-06 +- feat: allow recording root object in worldspace in GLTFRecorder + +## [1.6.1-pre] - 2022-05-06 +- feat: added experimental support for KHR_animation_pointer in-editor animation export (for select properties), can be turned on in `ProjectSettings/UnityGltf` +- feat: added scene export as GLB (fixes #22) +- fixed: roundtrip issues with glTFast when alpha testing is used +- fixed: no build errors in Samples anymore +- fixed: allow exporting skinned mesh animations even when the mesh isn't readable (bone animation is then still exported) + +## [1.6.0-pre] - 2022-04-28 +- feat: added WebGL import support (export was already supported) +- feat: added WebGL animation export support +- feat: added onLoadComplete action to GLTFComponent +- feat: added ProfilerMarkers for export +- feat: import support for KHR_materials_emissive_strength +- changed: replaced FileLoader/WebRequestLoader with simpler UnityWebRequestLoader for better platform support. Use the previous ones if you need streaming. +- removed: removed unused shader variants from BiRP shaders +- fixed: sparse accessor JSON is properly parsed (no sparse accessor import support yet though) +- fixed: no more validation errors regarding minMag filters, bufferView.byteStride for animation samplers, bufferView.target for index/vertex data +- fixed: only export KHR_materials_emissive_strength if emissive intensity > 1 +- fixed: URP roundtrip now works with glTFast imports (#42) +- fixed: better handling of filenames for glTF + bin + textures export (#41, #40) +- fixed: add vertex color alpha support, add _EmissionMap_ST support to BiRP shader +- fixed: exporting Prefab assets directly from Project Window wasn't working properly when ExportDisabled was off +- fixed: regression with serialization and roundtrip behaviour of spotlights + +## [1.5.0-pre.2] - 2022-04-20 +- fixed: incorrect UV offset for tiled textures on export in some cases +- feat: show exported glTF/GLB in explorer after exporting via Menu Item +- feat: expose API for `GetAnimationId` for custom export logic + +## [1.5.0-pre] - 2022-04-08 + +- added: dialogue window will ask when meshes are not readable at runtime in the editor +- added: more samples regarding custom material extension export +- changed: more GltfSceneExporter methods are now public to allow for custom extension exporting +- changed: moving back to proper versioning; big jump from 1.0 to 1.5 to show that lots of changes have happened +- fixed: no more ScriptedImporter collisions between UnityGltf, glTFast and Siccity glTF +- fixed: corrected some export callback orders +- fixed: random hangs when importing .gltf files via ScriptedImporter +- fixed: correctly importing wrapModeS and wrapModeT now +- fixed: correctly importing Mask mode and cutoff now + +## [1.0.4-preview.35] - 2022-03-11 +- added better logs for unsupported animation tracks on export +- added public methods in GLTFSceneExporter to allow for custom animation export +- added first batch of samples for custom extensions export +- fixed: Auto Referenced is back on on AsmDefs to keep legacy behaviour +- fixed: first timeline keyframe was exported incorrectly in some cases +- fixed: skins should be exported even when animation export is off +- fixed: animation clips shouldn't be exported when exporting from Timeline recorder +- fixed: MetallicGlossMap scale was incorrectly exported in some cases + +## [1.0.4-preview.34] - 2022-02-23 +- added Accessor reuse between exported animations when they come from the same AnimationClip/speed pair +- added optional project setting to export animation clips with unique names (lots of viewers don't support that) +- fixed animation clips being merged when the same clip was used in multiple Animators + +## [1.0.4-preview.33] - 2022-02-21 +- added export option to merge animator states with identical names into one animation +- fixed export of multiple animations when they had the same name (was implicitly merged before, now explicit) +- fixed export of multiple animations when they had the same animator state name but different speeds + +## [1.0.4-preview.32] - 2022-02-10 +- fixed compilation issues on older Unity versions +- fixed exporting in memory to GLB byte array +- fixed dependency to Timeline and some modules not being clear / not guarded +- fixed Readme containing outdated install instructions +- fixed compiler errors when building to some platforms + +## [1.0.4-preview.31] - 2022-02-08 +- added ability to record and export blend shapes at runtime +- fixed settings not being loaded from Resources correctly at runtime +- fixed another case of duplicate recorded keyframes + +## [1.0.4-preview.30] - 2022-02-08 +- added start events to recorder, made key methods virtual +- fixed GLTF recorder component global shortcuts; now uses regular keycode during play mode + +## [1.0.4-preview.29] - 2022-02-07 +- added GLTFRecorderComponent to record at runtime +- renamed recorder files to follow existing filenames +- fixed compilation warning in GLTFSceneImporter +- fixed: create export directory if it doesn't exist +- fixed: blendshape export was missing flag to export no blendshapes at all +- fixed: in some cases would attempt to record duplicate timestamps which is not allowed +- fixed build error from GLTFSceneExporter + +## [1.0.4-preview.28] - 2022-02-07 +- added glTF Timeline exporter track that allows for both editor and runtime animation export +- added ability to export RenderTextures instead of erroring out, these can be exported for a while now +- added export callbacks and made an initial set of export methods public to enable custom export extensions (similar to three.js export callbacks) +- added export generator name +- fixed URP/Unlit color not being exported +- fixed light intensity values being incorrect depending on Unity settings +- fixed removeEmptyRootObjects on import not actually removing empty root objects +- fixed warning when exporting texture transforms if _MainTex_ST is present but _MainTex isn't +- fixed non-specific textures using the wrong export type in some cases, asking the AssetImporter now if one exists +- changed menu items, export options are now in "Assets/UnityGltf/" instead of a toplevel "GLTF" menu + +## [1.0.4-preview.27] - 2021-12-02 +- fixed `_scaleFactor` not being applied to child transform positions for editor import +- fixed roundtrip issues when exporting models that have been imported by UnityGLTF or glTFast +- fixed metallicGlossMap being in the wrong color space on export if emission texture was also used +- fixed light/occlusion map being in the wrong color space during roundtrip + +## [1.0.4-preview.26] - 2021-11-16 +- fixed objects with EditorOnly tag being exported, are skipped now + +## [1.0.4-preview.25] - 2021-11-12 +- fixed imported object names potentially not being unique +- fixed normal map export format when build target is Android +- fixed export of animations when multiple exported objects share the same animation name (gets merged on export now) +- moved GLTF serialization from DLL to package to improve platform support (Unity will compile this for all platforms, no need for special DLLs) +- added sparse accessor export for blendshape positions/normals +- added ability to generate secondary UVs in UnityGLTF importer +- added warning when trying to use KTX2 textures which is currently not supported + +## [1.0.4-preview.24] - 2021-06-14 +- fix: don't attempt to export blendshape normals/tangents when mesh doesn't have them +- fix: warn and skip null bones in SkinnedMeshRenderer export +- added: settings for determining texture export type (png/jpeg depending on alpha channel) and JPEG quality +- added: setting to determine if vertex colors should be exported + +## [1.0.4-preview.23] - 2021-05-28 +- fixed animation export from legacy Animation component +- fixed exporting blendshapes for meshes that don't have bones +- fixed empty textures being generated on import +- fixed emission keyword missing on material import when only color but no texture was set +- fixed metallic and fade export not being correct in some cases +- added option to select which properties (normals/tangents) to export with blendshapes + +## [1.0.4-preview.22] - 2021-05-04 +- fixed ScriptedImporter not importing meshes from SkinnedMeshRenderers +- fixed ScriptedImporter not importing AnimationClips +- fixed ScriptedImporter changing material names on import +- fixed blend shape data being exported multiple times when meshes have multiple submeshes +- added blendshape animation export + +## [1.0.4-preview.21] - 2021-04-26 +- fixed settings file directory not being created on settings file creation + +## [1.0.4-preview.20] - 2021-04-24 +- added settings provider to change GLTF settings from `Project Settings/UnityGLTF` +- added settings for control over object export based on visibility (`Camera.cullingMask`) and active state (`GameObject.activeInHierarchy`) +- changed: experimental texture-from-disk export is now disabled by default +- fixed exporting GameObjects with names that contain invalid filename characters +- fixed normal sampling in built-in pipeline which most likely was never correct with scaled normals +- fixed texture sampling for export/import that resulted in incorrect Point sampling in some cases +- fixed some issues with exporting skinned mesh renderers +- fixed regression with multi material/submesh export + +## [1.0.4-preview.18] - 2021-04-16 +- CHANGED: package name is now back to org.khronos.unitygltf +- fixed missing mesh logging an error, is now a warning +- fixed property export order for URP shaders that also have built-in property fallbacks +- fixed export path omitting extensions for cases such as 15-1.0.3.glb +- fixed issue with shared meshes that have different materials not being properly exported (https://github.com/prefrontalcortex/UnityGLTF/issues/15) +- added MenuItem validation methods to disable them if no valid object for export is selected +- added ability to export selected Prefabs from the Project window directly +- changed the GLTFImporter to overrideExt for 2020.1+ so that importer for .glb files can be chosen when multiple are present + +## [1.0.4-preview.17] - 2021-03-23 +- fixed ACCESSOR_INDEX_PRIMITIVE_RESTART for meshes that have exactly 256 or 65536 vertices and used the wrong buffer type +- fixed vertex color import color space and alpha usage +- fixed incorrect keyframe values causing import abort, just warns now +- fixed GLB/GLTF export paths sometimes being incorrect (double or no extension) +- changed: GLB importer now embeds all meshes and textures as sub assets instead of putting them in the project; needs better importer inspector to allow for asset remapping. + +## [1.0.4-preview.16] - 2021-03-15 +- fixed color space issues with vertex colors and emissive +- fixed export of UV offset/tiling for non-main textures +- fixed exporting materials as PBR when they have _Metallic and _Glossiness (required only _MetallicGlossMap before) + +## [1.0.4-preview.15] - 2021-02-23 +- fixed issues with material export in URP where PBR wasn't properly detected and exported + +## [1.0.4-preview.14] - 2021-02-10 +- fixed issues with KHR_materials_pbrSpecularGlossinessExtension and materials that don't have textures + +## [1.0.4-preview.13] - 2021-01-30 +- fixed missing references in materials and prefabs +- fixed issue preventing build with UnityGLTF in project +- moved samples into subfolder +- added support for animation clip speed being set inside Animator States + +## [1.0.4-preview.12] - 2020-12-15 +- fix compilation errors in GLTFSerialization.dll on recompiling +- fix Newtonsoft.Json being copied to output directory +- fix a number of animation export issues +- add KHR_materials_unlit extension import and export + +## [1.0.4-preview.11] - 2020-11-27 +- fix KHR_lights_punctual extension always being set, even if no lights were exported +- fix invalid primitives being exported for meshes with 0 vertices +- removed export rotation offset that caused incorrect rotation in other softwares + +## [1.0.4-preview.10] - 2020-11-16 +- fix error thrown when vertex arrays have 0 elements (this is valid in FBX) +- add light export/import extensions +- merged a number of PRs that fix nullrefs on export/import + +## [1.0.4-preview.9] - 2020-10-03 +- merged in a number of material fix and null ref PRs +- add namespaces to scripts that didn't have them + +## [1.0.4-preview.8] - 2020-09-10 +- built GLTFSerialization.dll against Newtonsoft.JSON 12.0.3 +- removed Newtonsoft.JSON.dll from package +- added dependency on com.unity.nuget.newtonsoft-json@2.0.0 +- added 2020.2 compatibility + +## [1.0.4-preview.7] - 2020-07-24 +- fix sRGB/linear conversion for normal maps depending on Unity color space + +## [1.0.4-preview.6] - 2020-07-15 +- fix sRGB/linear conversion for colors exported from Unity +- fix rotation order for 180° hack +- note: please use Linear color space, normal maps break in Gamma color space right now + +## [1.0.4-preview.5] - 2020-07-13 +- hack: added 180° rotation on export (experimental), needs to be tested with animations, only works with a single root transform on export +- changed back to "preview" instead of "pfc" tag because stupid PackMan + +## [1.0.4-pfc.4] - 2020-07-12 +- fix meta files for Tests folder + +## [1.0.4-pfc.2] - 2020-07-07 +- fix build errors preventing builds +- fix PBR texture roundtrip with incorrect red channel + +## [1.0.4-pfc] - 2020-04-24 +- lots of improvements to animation export +- automatic keyframe reduction +- BREAKING: disabled UV2 and vertex color export for web +- fixed texture export from memory instead of from disk +- fix breaking animations in SceneViewer due to omitted LINEAR sampler specification + +## [1.0.0-pfc.4] - 2020-01-16 +- rebased all pfc feature branches on latest master +- back to org.khronos scope for easier switching between versions +- added animation export +- added PNG/JPG texture export from disk where available + +## [1.0.1] - 2019-04-03 +- Upgraded to 2017.4 +- Included various fixes (will update) +- Includes UPM package + +## [1.0.0] - 2018-09-21 +- first built unity package release of UnityGLTF diff --git a/CHANGELOG.md.meta b/CHANGELOG.md.meta new file mode 100644 index 000000000..4352b4783 --- /dev/null +++ b/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2ac567cb9b76e6a4490f2f54aa52c067 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CODE_OF_CONDUCT.md.meta b/CODE_OF_CONDUCT.md.meta new file mode 100644 index 000000000..c750e908c --- /dev/null +++ b/CODE_OF_CONDUCT.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d53944c3a6a2746769e6c260bd3cbe76 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Editor.meta b/Editor.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor.meta rename to Editor.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts.meta b/Editor/Scripts.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts.meta rename to Editor/Scripts.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFComponentInspector.cs b/Editor/Scripts/GLTFComponentInspector.cs similarity index 92% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFComponentInspector.cs rename to Editor/Scripts/GLTFComponentInspector.cs index 8a47809f3..33ac18acd 100644 --- a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFComponentInspector.cs +++ b/Editor/Scripts/GLTFComponentInspector.cs @@ -15,10 +15,9 @@ public override void OnInspectorGUI() DrawDefaultInspector(); serializedObject.ApplyModifiedProperties(); +#if UNITY_ANIMATION var gltfComponent = serializedObject.targetObject as GLTFComponent; - - if (gltfComponent != null && - gltfComponent.Animations != null) + if (gltfComponent != null && gltfComponent.Animations != null) { EditorGUILayout.LabelField("Animations:"); using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPosition)) @@ -30,6 +29,7 @@ public override void OnInspectorGUI() } } } +#endif } private void DrawAnimation(Animation animation) @@ -38,7 +38,7 @@ private void DrawAnimation(Animation animation) foreach (AnimationState animationState in animation) { - using (var horizontal = new EditorGUILayout.HorizontalScope()) + using (new EditorGUILayout.HorizontalScope()) { var clip = animationState.clip; var clipName = clip.name; diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFComponentInspector.cs.meta b/Editor/Scripts/GLTFComponentInspector.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFComponentInspector.cs.meta rename to Editor/Scripts/GLTFComponentInspector.cs.meta diff --git a/Editor/Scripts/GLTFExportMenu.cs b/Editor/Scripts/GLTFExportMenu.cs new file mode 100644 index 000000000..b3f189f90 --- /dev/null +++ b/Editor/Scripts/GLTFExportMenu.cs @@ -0,0 +1,164 @@ +using System; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace UnityGLTF +{ + public static class GLTFExportMenu + { + private const string MenuPrefix = "Assets/UnityGLTF/"; + private const string MenuPrefixGameObject = "GameObject/UnityGLTF/"; + + private const string ExportGltf = "Export selected as glTF"; + private const string ExportGlb = "Export selected as GLB"; + + public static string RetrieveTexturePath(UnityEngine.Texture texture) + { + var path = AssetDatabase.GetAssetPath(texture); + // texture is a subasset + if (AssetDatabase.GetMainAssetTypeAtPath(path) != typeof(Texture2D)) + { + var ext = System.IO.Path.GetExtension(path); + if (string.IsNullOrWhiteSpace(ext)) return texture.name + ".png"; + path = path.Replace(ext, "-" + texture.name + ext); + } + return path; + } + + private static bool TryGetExportNameAndRootTransformsFromSelection(out string sceneName, out Transform[] rootTransforms) + { + if (Selection.transforms.Length > 1) + { + sceneName = SceneManager.GetActiveScene().name; + rootTransforms = Selection.transforms; + return true; + } + if (Selection.transforms.Length == 1) + { + sceneName = Selection.activeGameObject.name; + rootTransforms = Selection.transforms; + return true; + } + if (Selection.objects.Any() && Selection.objects.All(x => x is GameObject)) + { + sceneName = Selection.objects.First().name; + rootTransforms = Selection.objects.Select(x => (x as GameObject).transform).ToArray(); + return true; + } + + sceneName = null; + rootTransforms = null; + return false; + } + + [MenuItem(MenuPrefix + ExportGltf, true)] + [MenuItem(MenuPrefixGameObject + ExportGltf, true)] + private static bool ExportSelectedValidate() + { + return TryGetExportNameAndRootTransformsFromSelection(out _, out _); + } + + [MenuItem(MenuPrefix + ExportGltf)] + [MenuItem(MenuPrefixGameObject + ExportGltf, false, 33)] + private static void ExportSelected() + { + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms)) + { + Debug.LogError("Can't export: selection is empty"); + return; + } + + Export(rootTransforms, false, sceneName); + } + + [MenuItem(MenuPrefix + ExportGlb, true)] + [MenuItem(MenuPrefixGameObject + ExportGlb, true)] + private static bool ExportGLBSelectedValidate() + { + return TryGetExportNameAndRootTransformsFromSelection(out _, out _); + } + + [MenuItem(MenuPrefix + ExportGlb)] + [MenuItem(MenuPrefixGameObject + ExportGlb, false, 34)] + private static void ExportGLBSelected() + { + if (!TryGetExportNameAndRootTransformsFromSelection(out var sceneName, out var rootTransforms)) + { + Debug.LogError("Can't export: selection is empty"); + return; + } + Export(rootTransforms, true, sceneName); + } + + [MenuItem(MenuPrefix + "Export active scene as glTF")] + private static void ExportScene() + { + var scene = SceneManager.GetActiveScene(); + var gameObjects = scene.GetRootGameObjects(); + var transforms = Array.ConvertAll(gameObjects, gameObject => gameObject.transform); + + Export(transforms, false, scene.name); + } + + [MenuItem(MenuPrefix + "Export active scene as GLB")] + private static void ExportSceneGLB() + { + var scene = SceneManager.GetActiveScene(); + var gameObjects = scene.GetRootGameObjects(); + var transforms = Array.ConvertAll(gameObjects, gameObject => gameObject.transform); + + Export(transforms, true, scene.name); + } + + private static void Export(Transform[] transforms, bool binary, string sceneName) + { + var settings = GLTFSettings.GetOrCreateSettings(); + var exportOptions = new ExportContext(settings) { TexturePathRetriever = RetrieveTexturePath }; + var exporter = new GLTFSceneExporter(transforms, exportOptions); + + var invokedByShortcut = Event.current?.type == EventType.KeyDown; + var path = settings.SaveFolderPath; + if (!invokedByShortcut || !Directory.Exists(path)) + path = EditorUtility.SaveFolderPanel("glTF Export Path", settings.SaveFolderPath, ""); + + if (!string.IsNullOrEmpty(path)) + { + var ext = binary ? ".glb" : ".gltf"; + var resultFile = GLTFSceneExporter.GetFileName(path, sceneName, ext); + settings.SaveFolderPath = path; + if(binary) + exporter.SaveGLB(path, sceneName); + else + exporter.SaveGLTFandBin(path, sceneName); + + Debug.Log("Exported to " + resultFile); + EditorUtility.RevealInFinder(resultFile); + } + } + } + + internal static class GLTFCreateMenu + { + [MenuItem("Assets/Create/UnityGLTF/Material", false)] + private static void CreateNewAsset() + { + ProjectWindowUtil.CreateAssetWithContent("New glTF Material.gltf", @"{ + ""asset"": { + ""generator"": ""UnityGLTF"", + ""version"": ""2.0"" + }, + ""materials"": [ + { + ""name"": ""Material"", + ""pbrMetallicRoughness"": { + ""metallicFactor"": 0.0 + } + } + ] +}"); + } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFExportMenu.cs.meta b/Editor/Scripts/GLTFExportMenu.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFExportMenu.cs.meta rename to Editor/Scripts/GLTFExportMenu.cs.meta diff --git a/Editor/Scripts/GLTFImporter.cs b/Editor/Scripts/GLTFImporter.cs new file mode 100644 index 000000000..f22212aea --- /dev/null +++ b/Editor/Scripts/GLTFImporter.cs @@ -0,0 +1,967 @@ +#if UNITY_2017_1_OR_NEWER + +// glTFast is on the path to being official, so it should have highest priority as importer by default +// This ifdef is included for completeness. +// Other glTF importers should specify this via AsmDef dependency, for example +// `com.atteneder.gltfast@3.0.0: HAVE_GLTFAST` and then checking here `#if HAVE_GLTFAST` +#if HAVE_GLTFAST +#define ANOTHER_IMPORTER_HAS_HIGHER_PRIORITY +#endif + +#if !ANOTHER_IMPORTER_HAS_HIGHER_PRIORITY && !UNITYGLTF_FORCE_DEFAULT_IMPORTER_OFF +#define ENABLE_DEFAULT_GLB_IMPORTER +#endif +#if UNITYGLTF_FORCE_DEFAULT_IMPORTER_ON +#define ENABLE_DEFAULT_GLB_IMPORTER +#endif + +using UnityEditor; +using System.IO; +using UnityEngine; +using System.Collections.Generic; +using System.Linq; +using System; +using Object = UnityEngine.Object; +using UnityGLTF.Loader; +using GLTF; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; +#if UNITY_2020_2_OR_NEWER +using UnityEditor.AssetImporters; +using UnityEditorInternal; +using UnityEngine.Rendering; +#else +using UnityEditor.Experimental.AssetImporters; +#endif + +[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("UnityGLTF.ShaderGraph")] + +namespace UnityGLTF +{ +#if UNITY_2020_2_OR_NEWER +#if ENABLE_DEFAULT_GLB_IMPORTER + [ScriptedImporter(ImporterVersion, new[] { "glb", "gltf" })] +#else + [ScriptedImporter(ImporterVersion, null, overrideExts: new[] { "glb", "gltf" })] +#endif +#else + [ScriptedImporter(ImporterVersion, new[] { "glb" })] +#endif + public class GLTFImporter : ScriptedImporter + { + private const int ImporterVersion = 9; + + private static void EnsureShadersAreLoaded() + { + const string PackagePrefix = "Packages/org.khronos.unitygltf/"; + + // We want to ensure shaders are already imported when they may + // be needed by the importer. + var shaders = new string[] { + PackagePrefix + "Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph", + PackagePrefix + "Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph", + PackagePrefix + "Runtime/Shaders/PbrMetallicRoughness.shader", + PackagePrefix + "Runtime/Shaders/PbrSpecularGlossiness.shader", + PackagePrefix + "Runtime/Shaders/Unlit.shader", + }; + + // Some TextureImporter settings are only available on a concrete TextureImporter + // instance, so we have to keep a texture around to ensure we can access those methods... + var textures = new string[] + { + PackagePrefix + "Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png", + }; + + foreach (var shaderPath in shaders) + { + AssetDatabase.LoadAssetAtPath(shaderPath); + } + foreach (var file in textures) + { + AssetDatabase.LoadAssetAtPath(file); + } + } + + [Tooltip("Turn this off to create an explicit GameObject for the glTF scene. A scene root will always be created if there's more than one root node.")] + [SerializeField] internal bool _removeEmptyRootObjects = true; + [SerializeField] internal float _scaleFactor = 1.0f; + [SerializeField] internal int _maximumLod = 300; + [SerializeField] internal bool _readWriteEnabled = true; + [SerializeField] internal bool _generateColliders = false; + [SerializeField] internal bool _swapUvs = false; + [SerializeField] internal bool _generateLightmapUVs = false; + [Tooltip("When false, the index of the BlendShape is used as name.")] + [SerializeField] internal bool _importBlendShapeNames = true; + [SerializeField] internal GLTFImporterNormals _importNormals = GLTFImporterNormals.Import; + [SerializeField] internal GLTFImporterNormals _importTangents = GLTFImporterNormals.Import; + [SerializeField] internal AnimationMethod _importAnimations = AnimationMethod.Mecanim; + [SerializeField] internal bool _addAnimatorComponent = false; + [SerializeField] internal bool _animationLoopTime = true; + [SerializeField] internal bool _animationLoopPose = false; + [SerializeField] internal bool _importMaterials = true; + [SerializeField] internal bool _enableGpuInstancing = false; + [Tooltip("Enable this to get the same main asset identifiers as glTFast uses. This is recommended for new asset imports. Note that changing this for already imported assets will break their scene references and require manually re-adding the affected assets.")] + [SerializeField] internal bool _useSceneNameIdentifier = false; + [Tooltip("Compress textures after import using the platform default settings. If you need more control, use a .gltf file instead.")] + [SerializeField] internal GLTFImporterTextureCompressionQuality _textureCompression = GLTFImporterTextureCompressionQuality.None; + + // for humanoid importer + [SerializeField] internal bool m_OptimizeGameObjects = false; + [SerializeField] internal HumanDescription m_HumanDescription = new HumanDescription(); + + // asset remapping + [SerializeField] internal Material[] m_Materials = new Material[0]; + [SerializeField] internal Texture[] m_Textures = new Texture[0]; + [SerializeField] internal bool m_HasSceneData = true; + [SerializeField] internal bool m_HasAnimationData = true; + [SerializeField] internal bool m_HasMaterialData = true; + [SerializeField] internal bool m_HasTextureData = true; + [SerializeField] [NonReorderable] private AnimationClipImportInfo[] m_Animations = new AnimationClipImportInfo[0]; + + // Import messages (extensions, warnings, errors, ...) + [NonReorderable] [SerializeField] internal List _extensions; + [NonReorderable] [SerializeField] private List _textures; + [SerializeField] internal string _mainAssetIdentifier; + + internal List Textures => _textures; + + // Import Plugin Overrides + [SerializeField] // but we can serialize their YAML representations as string + internal List _importPlugins = new List(); + + [Serializable] + internal class ExtensionInfo + { + public string name; + [HideInInspector] + public bool supported; + [HideInInspector] + public bool used; + public bool required; + } + + // Matches TextureCompressionQuality and adds "None" as option + internal enum GLTFImporterTextureCompressionQuality + { + None = -50, + Fast = 0, + Normal = 50, + Best = 100 + } + + [Serializable] + public class PluginInfo + { + public string typeName; + public bool overrideEnabled; + public bool enabled; + public string jsonSettings; + } + + [Serializable] + public class TextureInfo + { + public Texture2D texture; + public bool shouldBeLinear; + public bool shouldBeNormalMap; + } + + [Serializable] + public class AnimationClipImportInfo + { + [HideInInspector] + public string name; + + // TODO cutting ain't trivial. One would need to create new keyframes by linear interpolation so that the result is still the same + // public AnimationClip sourceClip; + // public bool loopTime; + // public float startTime; + // public float endTime; + } + +#if !UNIYT_2020_2_OR_NEWER + private class NonReorderableAttribute : Attribute {} +#endif + + private static string[] GatherDependenciesFromSourceFile(string path) + { + var dependencies = new List(); + + // only supported glTF for now - would be harder to check for external references in glb assets. + if (!path.ToLowerInvariant().EndsWith(".gltf")) + return dependencies.ToArray(); + + // read minimal JSON, check if there's a bin buffer, and load that. + // all other assets should be "proper assets" and be found by the asset database, but we're not importing .bin + // since it's too common as a file type. + + var dir = Path.GetDirectoryName(path); + + void CheckAndAddDependency(string uri) + { + var combinedPath = FileLoader.CombinePaths(dir, uri); + if (!File.Exists(Path.Combine(dir, uri))) + uri = Uri.UnescapeDataString(uri); + if (File.Exists(combinedPath)) + dependencies.Add(combinedPath); + // TODO check if inside the project/any package, could be an absolute path + else if (File.Exists(uri)) + dependencies.Add(uri); + } + + using (var reader = new StreamReader(path)) + { + try + { + GLTFParser.ParseJson(reader.BaseStream, out var gltf); + var externalBuffers = gltf?.Buffers?.Where(b => b?.Uri != null && b.Uri.ToLowerInvariant().EndsWith(".bin")); + var externalImages = gltf?.Images?.Where(b => b?.Uri != null); + + if (externalBuffers != null) + { + foreach (var buffer in externalBuffers) + { + CheckAndAddDependency(buffer.Uri); + } + } + + if (externalImages != null) + { + foreach (var image in externalImages) + { + CheckAndAddDependency(image.Uri); + } + } + } + catch (Exception e) + { + Debug.LogError($"Exception when importing glTF dependencies for {path}:\n" + e); + throw; + } + } + return dependencies.Distinct().ToArray(); + } + + public override void OnImportAsset(AssetImportContext ctx) + { + var settings = GLTFSettings.GetDefaultSettings(); + + // make a copy, and apply import override settings + foreach (var importPlugin in _importPlugins) + { + if (importPlugin == null || !importPlugin.overrideEnabled) continue; + var existing = settings.ImportPlugins.Find(x => x.GetType().FullName == importPlugin.typeName); + if (existing) + { + existing.Enabled = importPlugin.enabled; + JsonUtility.FromJsonOverwrite(importPlugin.jsonSettings, existing); + } + } + var context = new GLTFImportContext(ctx, settings) { ImportScaleFactor = _scaleFactor }; + + GameObject gltfScene = null; + AnimationClip[] animations = null; + Mesh[] meshes = null; + + var uniqueNames = new List() { "main asset" }; + EnsureShadersAreLoaded(); + +#if UNITY_2020_2_OR_NEWER && !UNITY_2021_3_OR_NEWER + // We don't need this custom dependency in 2021.3 and later, because there we always use ShaderGraph. + ctx.DependsOnCustomDependency($"{nameof(GraphicsSettings)}.{nameof(GraphicsSettings.currentRenderPipeline)}"); +#endif + + string GetUniqueName(string desiredName) + { + var uniqueName = ObjectNames.GetUniqueName(uniqueNames.ToArray(), desiredName); + if (!uniqueNames.Contains(uniqueName)) uniqueNames.Add(uniqueName); + return uniqueName; + } + +#if UNITY_2017_3_OR_NEWER + // We explicitly turn the new identifier on for new imports, that is, when no meta file existed before this import. + // We do this early, so that when imports fail, we still get the new identifier. Unity already sets import settings on failed imports. + if (!_useSceneNameIdentifier) + { + var importer = GetAtPath(ctx.assetPath); + if (importer.importSettingsMissing) + { + _useSceneNameIdentifier = true; + } + } +#endif + + try + { + CreateGLTFScene(context, out gltfScene, out animations, out var importer); + + if (gltfScene) + { + var rootGltfComponent = gltfScene.GetComponent(); + if (rootGltfComponent) DestroyImmediate(rootGltfComponent); + } + + // Remove empty roots + if (gltfScene && _removeEmptyRootObjects) + { + var t = gltfScene.transform; + var existingAnimator = t.GetComponent(); + var hadAnimator = (bool)existingAnimator; + var existingAvatar = existingAnimator ? existingAnimator.avatar : default; + if (existingAnimator) + DestroyImmediate(existingAnimator); + + var animationPathPrefix = ""; + var originalImportName = gltfScene.name; + while ( + gltfScene.transform.childCount == 1 && + gltfScene.GetComponents().Length == 1) // Transform component + { + var parent = gltfScene; + gltfScene = gltfScene.transform.GetChild(0).gameObject; + var importName = gltfScene.name; + t = gltfScene.transform; + t.parent = null; // To keep transform information in the new parent + DestroyImmediate(parent); // Get rid of the parent + if (animationPathPrefix != "") + animationPathPrefix += "/"; + animationPathPrefix += importName; + } + animationPathPrefix += "/"; + + // Re-add animator if it was removed + if (hadAnimator) + { + var newAnimator = gltfScene.AddComponent(); + newAnimator.avatar = existingAvatar; + } + + // Re-target animation clips - when we strip the root, all animations also change and have a different path now. + if (animations != null) + { + foreach (var clip in animations) + { + if (clip == null) continue; + + // change all animation clip targets + var bindings = AnimationUtility.GetCurveBindings(clip); + var curves = new AnimationCurve[bindings.Length]; + var newBindings = new EditorCurveBinding[bindings.Length]; + for (var index = 0; index < bindings.Length; index++) + { + var binding = bindings[index]; + curves[index] = AnimationUtility.GetEditorCurve(clip, binding); + + var newBinding = bindings[index]; + if (binding.path.StartsWith(animationPathPrefix, StringComparison.Ordinal)) + newBinding.path = binding.path.Substring(animationPathPrefix.Length); + newBindings[index] = newBinding; + } + + var emptyCurves = new AnimationCurve[curves.Length]; + AnimationUtility.SetEditorCurves(clip, bindings, emptyCurves); + AnimationUtility.SetEditorCurves(clip, newBindings, curves); + } + } + + gltfScene.name = originalImportName; + } + + if (gltfScene) + { + // Ensure there are no hide flags present (will cause problems when saving) + gltfScene.hideFlags &= ~(HideFlags.HideAndDontSave); + foreach (Transform child in gltfScene.transform) + { + child.gameObject.hideFlags &= ~(HideFlags.HideAndDontSave); + } + } + + // scale all localPosition values if necessary + if (gltfScene && !Mathf.Approximately(_scaleFactor, 1)) + { + var transforms = gltfScene.GetComponentsInChildren(); + foreach (var tr in transforms) + { + tr.localPosition *= _scaleFactor; + } + } + + // Get meshes + var meshHash = new HashSet(); + var meshFilters = new List<(GameObject gameObject, Mesh sharedMesh)>(); + if (gltfScene) + { + meshFilters = gltfScene.GetComponentsInChildren().Select(x => (x.gameObject, x.sharedMesh)).ToList(); + meshFilters.AddRange(gltfScene.GetComponentsInChildren().Select(x => (x.gameObject, x.sharedMesh))); + } + + var vertexBuffer = new List(); + meshes = meshFilters.Select(mf => + { + var mesh = mf.sharedMesh; + + if (meshHash.Contains(mesh)) + return null; + meshHash.Add(mesh); + + if (!Mathf.Approximately(_scaleFactor, 1.0f)) + { + vertexBuffer.Clear(); + mesh.GetVertices(vertexBuffer); + for (var i = 0; i < vertexBuffer.Count; ++i) + { + vertexBuffer[i] *= _scaleFactor; + } + mesh.SetVertices(vertexBuffer); + + if (mesh.bindposes != null && mesh.bindposes.Length > 0) + { + var bindPoses = mesh.bindposes; + for (var i = 0; i < bindPoses.Length; ++i) + { + bindPoses[i].GetTRSProperties(out var p, out var q, out var s); + bindPoses[i].SetTRS(p * _scaleFactor, q, s); + } + + mesh.bindposes = bindPoses; + } + + } + if (_generateLightmapUVs) + { + var uv2 = mesh.uv2; + if (uv2 == null || uv2.Length < 1) + { + var hasTriangleTopology = true; + for (var i = 0; i < mesh.subMeshCount; i++) + hasTriangleTopology &= mesh.GetTopology(i) == MeshTopology.Triangles; + + // uv2 = Unwrapping.GeneratePerTriangleUV(mesh); + // mesh.SetUVs(1, uv2); + + // There seems to be a bug in Unity's splitting code: + // for some meshes, the result is broken after splitting. + if (hasTriangleTopology) + Unwrapping.GenerateSecondaryUVSet(mesh); + } + } + + mesh.UploadMeshData(!_readWriteEnabled); + mesh.RecalculateBounds(MeshUpdateFlags.DontValidateIndices | MeshUpdateFlags.DontNotifyMeshUsers); + + if (_generateColliders) + { + var collider = mf.gameObject.AddComponent(); + collider.sharedMesh = mesh; + } + + return mesh; + }).Where(x => x).ToArray(); + + if (animations != null) + { + foreach (var clip in animations) + { + ctx.AddObjectToAsset(GetUniqueName(clip.name), clip); + } + } + + // we can't add the Animators as subassets here, since they require their state machines to be direct subassets themselves. + // foreach (var anim in animators) + // { + // ctx.AddObjectToAsset(GetUniqueName(anim.runtimeAnimatorController.name), anim.runtimeAnimatorController as AnimatorController); + // foreach (var layer in (anim.runtimeAnimatorController as AnimatorController).layers) + // { + // ctx.AddObjectToAsset(GetUniqueName(layer.name + "-state"), layer.stateMachine); + // } + // } + + if (gltfScene && _importAnimations == AnimationMethod.MecanimHumanoid) + { + var avatar = HumanoidSetup.AddAvatarToGameObject(gltfScene); + if (avatar && avatar.isValid) + ctx.AddObjectToAsset("avatar", avatar); + } + + var renderers = gltfScene ? gltfScene.GetComponentsInChildren() : Array.Empty(); + + if (_importMaterials) + { + // Get materials + var map = GetExternalObjectMap(); + var materials = new List(); + if (importer._defaultLoadedMaterial != null) + { + importer._defaultLoadedMaterial.UnityMaterialWithVertexColor.name = "Default"; + materials.Add(importer._defaultLoadedMaterial.UnityMaterialWithVertexColor); + } + + foreach (var entry in importer.MaterialCache) + { + if (entry != null && entry.UnityMaterialWithVertexColor) + { + var mat = entry.UnityMaterialWithVertexColor; + var matName = string.IsNullOrEmpty(mat.name) ? mat.shader.name : mat.name; + if (matName == mat.shader.name) + { + matName = matName.Substring(Mathf.Min( + matName.LastIndexOf("/", StringComparison.Ordinal) + 1, matName.Length - 1)); + } + + mat.name = matName; + mat.enableInstancing = _enableGpuInstancing; + materials.Add(mat); + } + } + + // apply material remap + foreach (var r in renderers) + { + // remap materials to external objects + var m = r.sharedMaterials; + for (var i = 0; i < m.Length; i++) + { + var mat = m[i]; + if (mat) + { + var si = new SourceAssetIdentifier(mat); + if (map.TryGetValue(si, out var value)) + { + if (!value) map.Remove(si); + else m[i] = value as Material; + } + } + } + r.sharedMaterials = m; + }; + + // Get textures - only the ones actually referenced by imported materials + /* + var textureHash = new HashSet(); + var texMaterialMap = new Dictionary>(); + var textures = materials.SelectMany(mat => + { + if (!mat) return Enumerable.Empty(); + var shader = mat.shader; + if (!shader) return Enumerable.Empty(); + + var matTextures = new List(); + for (var i = 0; i < ShaderUtil.GetPropertyCount(shader); ++i) + { + if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv) + { + var propertyName = ShaderUtil.GetPropertyName(shader, i); + var tex = mat.GetTexture(propertyName) as Texture2D; + if (tex) + { + if (textureHash.Add(tex)) + { + var texName = tex.name; + if (string.IsNullOrEmpty(texName)) + { + if (propertyName.StartsWith("_")) texName = propertyName.Substring(Mathf.Min(1, propertyName.Length - 1)); + tex.name = texName; + } + matTextures.Add(tex); + } + + List materialMaps; + if (!texMaterialMap.TryGetValue(tex, out materialMaps)) + { + materialMaps = new List(); + texMaterialMap.Add(tex, materialMaps); + } + + materialMaps.Add(new TexMaterialMap(mat, propertyName, propertyName == "_BumpMap" || propertyName == "normalTexture" || propertyName.EndsWith("NormalTexture"))); + } + } + } + return matTextures; + }).Distinct().ToList(); + */ + + // all imported textures - the ones that are directly referenced and + // the ones that are invalid (missing files with temp generated data) + var invalidTextures = importer.InvalidImageCache + .Select(x => x) + .Where(x => x) + .ToList(); + + var textures = importer.TextureCache + .Where(x => x != null) + .Select(x => x.Texture) + .Where(x => x) + .Union(invalidTextures).Distinct().ToList(); + + // if we're not importing materials or textures, we can clear the lists + // so that no assets are actually created. + if (!_importMaterials) + { + materials.Clear(); + textures.Clear(); + } + + /* + // texture asset remapping + foreach (var entry in texMaterialMap) + { + var tex = entry.Key; + var texPropertyList = entry.Value; + foreach (var propertyEntry in texPropertyList) + { + var si = new SourceAssetIdentifier(tex); + if (map.TryGetValue(si, out var value)) + { + propertyEntry.Material.SetTexture(propertyEntry.Property, value as Texture); + tex.hideFlags = HideFlags.HideInHierarchy; + } + else if (tex.hideFlags == HideFlags.HideInInspector) + { + // clean up mock textures we only generated on import for remapping + propertyEntry.Material.SetTexture(propertyEntry.Property, null); + textures.Remove(tex); + } + } + } + */ + + // Save textures as separate assets and rewrite refs + // TODO: Support for other texture types + if (textures.Count > 0) + { + foreach (var tex in textures) + { + if (AssetDatabase.Contains(tex) && AssetDatabase.GetAssetPath(tex) != ctx.assetPath) + { +#if UNITY_2020_2_OR_NEWER + ctx.DependsOnArtifact( +#else + ctx.DependsOnSourceAsset( +#endif + AssetDatabase.GetAssetPath(tex)); + } + else + { + if (invalidTextures.Contains(tex)) + tex.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + + if (_textureCompression != GLTFImporterTextureCompressionQuality.None) + { + // platform-dependant texture compression + var buildTargetName = BuildPipeline.GetBuildTargetName(ctx.selectedBuildTarget); + var format = TextureImporterHelper.GetAutomaticFormat(tex, buildTargetName); + var convertedFormat = (TextureFormat)(int)format; + if ((int)convertedFormat > -1) + { + //Debug.Log("Compressing texture " + tex.name + "(format: " + tex.format + ", mips: " + tex.mipmapCount + ") to: " + convertedFormat); + EditorUtility.CompressTexture(tex, convertedFormat, (TextureCompressionQuality) (int) _textureCompression); + // Debug.Log("Mips now: " + tex.mipmapCount); // TODO figure out why mipmaps disappear here + } + } + + ctx.AddObjectToAsset(GetUniqueName(tex.name), tex); + } + } + } + +#if !UNITY_2022_1_OR_NEWER + AssetDatabase.Refresh(); +#endif + + // Save materials as separate assets and rewrite refs + if (materials.Count > 0) + { + foreach (var mat in materials) + { + if (!mat) continue; + // ensure materials that are overriden aren't shown in the hierarchy. + var si = new SourceAssetIdentifier(mat); + if (map.TryGetValue(si, out var remappedMaterial) && remappedMaterial) + mat.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + + ctx.AddObjectToAsset(GetUniqueName(mat.name), mat); + } + } + + m_Materials = materials.ToArray(); + m_Textures = textures.ToArray(); + m_HasSceneData = gltfScene; + m_HasMaterialData = importer.Root.Materials != null && importer.Root.Materials.Count > 0; + m_HasTextureData = importer.Root.Textures != null && importer.Root.Textures.Count > 0; + m_HasAnimationData = importer.Root.Animations != null && importer.Root.Animations.Count > 0; + var newAnimations = new AnimationClipImportInfo[animations != null ? animations.Length : 0]; + if (animations != null) + { + for (var i = 0; i < animations.Length; ++i) + { + // get previous import info if it exists + // TODO won't work if there are multiple animations with the same name in the source + // We need to find the source instance index (e.g. 3rd time a clip is named "DoSomething") + // And then find the matching name index (also the 3rd occurrence of "DoSomething" in m_Animations) + var prev = Array.Find(m_Animations, x => x.name == animations[i].name); + if (prev != null) + { + newAnimations[i] = prev; + } + else + { + var newClipInfo = new AnimationClipImportInfo(); + newClipInfo.name = animations[i].name; + // newClipInfo.startTime = 0; + // newClipInfo.endTime = animations[i].length; + // newClipInfo.loopTime = true; + newAnimations[i] = newClipInfo; + } + } + } + m_Animations = newAnimations; + +#if !UNITY_2022_1_OR_NEWER + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); +#endif + } + else + { + // Workaround to get the default primitive material for the current render pipeline + var temp = GameObject.CreatePrimitive(PrimitiveType.Plane); + temp.SetActive(false); + var defaultMat = new[] { temp.GetComponent().sharedMaterial }; + DestroyImmediate(temp); + + foreach (var rend in renderers) + { + rend.sharedMaterials = defaultMat; + } + } + } + catch (Exception e) + { + Debug.LogException(e); + if (gltfScene) DestroyImmediate(gltfScene); + throw; + } + +#if UNITY_2017_3_OR_NEWER + if (gltfScene) + { + if (!_useSceneNameIdentifier) + { + // Set main asset + _mainAssetIdentifier = "main asset"; + ctx.AddObjectToAsset(_mainAssetIdentifier, gltfScene); + } + else + { + // This will be a breaking change, but would be aligned to the import naming from glTFast - allows switching back and forth between importers. + _mainAssetIdentifier = $"scenes/{gltfScene.name}"; + ctx.AddObjectToAsset(_mainAssetIdentifier, gltfScene); + } + } + + // Add meshes + foreach (var mesh in meshes) + { + try + { + ctx.AddObjectToAsset(GetUniqueName("mesh-" + mesh.name), mesh); + } catch(System.InvalidOperationException e) { + Debug.LogWarning(e.ToString(), mesh); + } + } + +#if UNITY_2020_2_OR_NEWER + ctx.DependsOnCustomDependency(ColorSpaceDependency); + ctx.DependsOnCustomDependency(NormalMapEncodingDependency); +#endif + if (gltfScene) + { + ctx.SetMainObject(gltfScene); + } + else if (m_Materials.Length > 0) + { + if (m_Materials.Length == 1) + { + ctx.SetMainObject(m_Materials[0]); + } + } +#else + // Set main asset + ctx.SetMainAsset("main asset", gltfScene); + + // Add meshes + foreach (var mesh in meshes) + { + try { + ctx.AddSubAsset("mesh " + mesh.name, mesh); + } catch (System.InvalidOperationException e) { + Debug.LogWarning(e.ToString(), mesh); + } + } +#endif + + foreach(var plugin in context.Plugins) + plugin.OnAfterImport(); + + // run texture verification and warn about wrong configuration + if (!GLTFImporterHelper.TextureImportSettingsAreCorrect(this)) + Debug.LogWarning("Some Textures have incorrect linear/sRGB settings. Use the \"Fix All\" button in the importer to adjust."); + + } + + private const string ColorSpaceDependency = nameof(GLTFImporter) + "_" + nameof(PlayerSettings.colorSpace); + private const string NormalMapEncodingDependency = nameof(GLTFImporter) + "_normalMapEncoding"; + +#if UNITY_2020_2_OR_NEWER + [InitializeOnLoadMethod] + private static void UpdateCustomDependencies() + { + AssetDatabase.RegisterCustomDependency(ColorSpaceDependency, Hash128.Compute((int) PlayerSettings.colorSpace)); + AssetDatabase.RegisterCustomDependency(NormalMapEncodingDependency, Hash128.Compute((int) PlayerSettings.GetNormalMapEncoding(BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget)))); + } + +#if UNITY_2021_3_OR_NEWER + // This asset postprocessor ensures that dependencies are updated whenever any asset is reimported. + // So for example if any texture is reimported (because color spaces or texture encoding settings have been changed) + // then we can update the custom dependencies here and potentially reimport required glTF assets. + class UpdateCustomDependenciesAfterImport : AssetPostprocessor + { + private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + UpdateCustomDependencies(); + } + } +#endif +#endif + + private void CreateGLTFScene(GLTFImportContext context, out GameObject scene, + out AnimationClip[] animationClips, out GLTFSceneImporter importer) + { + var projectFilePath = context.AssetContext.assetPath; + + // TODO: replace with GltfImportContext + var importOptions = new ImportOptions + { + DataLoader = new FileLoader(Path.GetDirectoryName(projectFilePath)), + AnimationMethod = _importAnimations, + AnimationLoopTime = _animationLoopTime, + AnimationLoopPose = _animationLoopPose, + ImportContext = context, + SwapUVs = _swapUvs, + ImportNormals = _importNormals, + ImportTangents = _importTangents, + ImportBlendShapeNames = _importBlendShapeNames + }; + + using (var stream = File.OpenRead(projectFilePath)) + { + GLTFParser.ParseJson(stream, out var gltfRoot); + stream.Position = 0; // Make sure the read position is changed back to the beginning of the file + var loader = new GLTFSceneImporter(gltfRoot, stream, importOptions); + loader.LoadUnreferencedImagesAndMaterials = true; + loader.MaximumLod = _maximumLod; + loader.IsMultithreaded = true; + + // Need to call with RunSync, otherwise the draco loader will freeze the editor + AsyncHelpers.RunSync(() => loader.LoadSceneAsync()); + + if (gltfRoot.ExtensionsUsed != null) + { + _extensions = gltfRoot.ExtensionsUsed + .Select(x => new ExtensionInfo() + { + name = x, + supported = true, + used = true, + required = gltfRoot.ExtensionsRequired?.Contains(x) ?? false, + }) + .ToList(); + } + else + { + _extensions = new List(); + } + + _textures = loader.TextureCache + .Where(x => x != null) + .Select(x => new TextureInfo() { texture = x.Texture, shouldBeLinear = x.IsLinear, shouldBeNormalMap = x.IsNormal }) + .ToList(); + + scene = loader.LastLoadedScene; + animationClips = loader.CreatedAnimationClips; + + + importer = loader; + } + } + + private void CopyOrNew(T asset, string assetPath, Action replaceReferences) where T : Object + { + var existingAsset = AssetDatabase.LoadAssetAtPath(assetPath); + if (existingAsset) + { + EditorUtility.CopySerialized(asset, existingAsset); + replaceReferences(existingAsset); + return; + } + + AssetDatabase.CreateAsset(asset, assetPath); + } + + private class TexMaterialMap + { + public UnityEngine.Material Material { get; set; } + public string Property { get; set; } + public bool IsNormalMap { get; set; } + + public TexMaterialMap(UnityEngine.Material material, string property, bool isNormalMap) + { + Material = material; + Property = property; + IsNormalMap = isNormalMap; + } + } + + public override bool SupportsRemappedAssetType(Type type) + { + if (type == typeof(Material)) + return true; + if (type == typeof(Texture)) + return true; + return base.SupportsRemappedAssetType(type); + } + } + +#if UNITY_2020_2_OR_NEWER && !UNITY_2021_3_OR_NEWER + class RenderPipelineWatcher + { + [InitializeOnLoadMethod] + static void RegisterForRenderPipelineChanges() + { +#if UNITY_2021_2_OR_NEWER + RenderPipelineManager.activeRenderPipelineTypeChanged += OnRenderPipelineTypeChanged; +#else + var lastPipeline = GraphicsSettings.currentRenderPipeline; + EditorApplication.update += () => + { + if (GraphicsSettings.currentRenderPipeline != lastPipeline) + { + lastPipeline = GraphicsSettings.currentRenderPipeline; + OnRenderPipelineTypeChanged(); + } + }; +#endif + } + + static void OnRenderPipelineTypeChanged() + { + var pipelineName = GraphicsSettings.currentRenderPipeline ? GraphicsSettings.currentRenderPipeline.GetType().Name : "BuiltIn"; + AssetDatabase.RegisterCustomDependency($"{nameof(GraphicsSettings)}.{nameof(GraphicsSettings.currentRenderPipeline)}", Hash128.Compute(pipelineName)); + AssetDatabase.Refresh(); + } + } +#endif + +} +#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporter.cs.meta b/Editor/Scripts/GLTFImporter.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporter.cs.meta rename to Editor/Scripts/GLTFImporter.cs.meta diff --git a/Editor/Scripts/GLTFImporterInspector.cs b/Editor/Scripts/GLTFImporterInspector.cs new file mode 100644 index 000000000..ba0ab2af1 --- /dev/null +++ b/Editor/Scripts/GLTFImporterInspector.cs @@ -0,0 +1,504 @@ +#if UNITY_2017_1_OR_NEWER +using System; +using System.IO; +using System.Linq; +using System.Text; +using JetBrains.Annotations; +using UnityEditor; + +using UnityEngine; +#if UNITY_2020_2_OR_NEWER +using UnityEditor.AssetImporters; +using UnityGLTF.Plugins; + +#else +using UnityEditor.Experimental.AssetImporters; +#endif + +namespace UnityGLTF +{ + [CustomEditor(typeof(GLTFImporter))] + [CanEditMultipleObjects] + internal class GLTFImporterInspector : UnityGLTFTabbedEditor + { + private string[] _importNormalsNames; + + public override void OnEnable() + { + if (!this) return; + + var m_HasSceneData = serializedObject.FindProperty(nameof(GLTFImporter.m_HasSceneData)); + if (m_HasSceneData.boolValue) + AddTab(new GLTFAssetImporterTab(this, "Model", ModelInspectorGUI)); + + AddTab(new GLTFAssetImporterTab(this, "Animation", AnimationInspectorGUI)); + + var m_HasMaterialData = serializedObject.FindProperty(nameof(GLTFImporter.m_HasMaterialData)); + var m_HasTextureData = serializedObject.FindProperty(nameof(GLTFImporter.m_HasTextureData)); + if (m_HasMaterialData.boolValue || m_HasTextureData.boolValue) + AddTab(new GLTFAssetImporterTab(this, "Materials", MaterialInspectorGUI)); + + AddTab(new GLTFAssetImporterTab(this, "Used Extensions", ExtensionInspectorGUI)); + + base.OnEnable(); + } + + public override void OnInspectorGUI() + { + var t = target as GLTFImporter; + TextureWarningsGUI(t); + EditorGUILayout.Space(); + base.OnInspectorGUI(); + } + + private void TextureWarningsGUI(GLTFImporter t) + { + if (!t) return; + if (!GLTFImporterHelper.TextureImportSettingsAreCorrect(t)) + { + EditorGUILayout.HelpBox("Some Textures have incorrect linear/sRGB settings. Results might be incorrect.", MessageType.Warning); + if (GUILayout.Button("Fix All")) + { + GLTFImporterHelper.FixTextureImportSettings(t); + } + } + } + + private void ModelInspectorGUI() + { + var t = target as GLTFImporter; + if (!t) return; + + // serializedObject.Update(); + if (_importNormalsNames == null) + { + _importNormalsNames = Enum.GetNames(typeof(GLTFImporterNormals)) + .Select(n => ObjectNames.NicifyVariableName(n)) + .ToArray(); + } + EditorGUILayout.LabelField("Scene", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._removeEmptyRootObjects))); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._scaleFactor))); + // EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._maximumLod)), new GUIContent("Maximum Shader LOD")); + EditorGUILayout.Separator(); + + EditorGUILayout.LabelField("Meshes", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._readWriteEnabled)), new GUIContent("Read/Write")); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._generateColliders))); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._importBlendShapeNames))); + + EditorGUILayout.Separator(); + + EditorGUILayout.LabelField("Geometry", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + var importNormalsProp = serializedObject.FindProperty(nameof(GLTFImporter._importNormals)); + var importNormals = EditorGUILayout.Popup("Normals", importNormalsProp.intValue, _importNormalsNames); + if (EditorGUI.EndChangeCheck()) + { + importNormalsProp.intValue = importNormals; + } + EditorGUI.BeginChangeCheck(); + var importTangentsProp = serializedObject.FindProperty(nameof(GLTFImporter._importTangents)); + var importTangents = EditorGUILayout.Popup("Tangents", importTangentsProp.intValue, _importNormalsNames); + if (EditorGUI.EndChangeCheck()) + { + importTangentsProp.intValue = importTangents; + } + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._swapUvs)), new GUIContent("Swap UVs")); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._generateLightmapUVs)), new GUIContent("Generate Lightmap UVs")); + EditorGUILayout.Separator(); + + // Show texture compression UI if there are any imported textures + var importedTextures = serializedObject.FindProperty("m_Textures"); + if (importedTextures.arraySize > 0) + { + EditorGUILayout.LabelField("Compression", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._textureCompression))); + } + } + + private const string TextureRemappingKey = nameof(GLTFImporterInspector) + "_TextureRemapping"; + private bool EnableTextureRemapping + { + get => SessionState.GetBool(TextureRemappingKey + target.GetInstanceID(), false); + set => SessionState.SetBool(TextureRemappingKey + target.GetInstanceID(), value); + } + private static readonly GUIContent RemapTexturesToggleContent = new GUIContent("Experimental", "(experimental) Remap textures inside the glTF to textures that are already in your project."); + + private void AnimationInspectorGUI() + { + var t = target as GLTFImporter; + if (!t) return; + + var hasAnimationData = serializedObject.FindProperty(nameof(GLTFImporter.m_HasAnimationData)).boolValue; + + if (!hasAnimationData) + { + EditorGUILayout.HelpBox("File doesn't contain animation data.", MessageType.None); + } + + var anim = serializedObject.FindProperty(nameof(GLTFImporter._importAnimations)); + EditorGUILayout.PropertyField(anim, new GUIContent("Animation Type")); + if (hasAnimationData && anim.enumValueIndex > 0) + { + var loopTime = serializedObject.FindProperty(nameof(GLTFImporter._animationLoopTime)); + EditorGUILayout.PropertyField(loopTime, new GUIContent("Loop Time")); + if (loopTime.boolValue) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._animationLoopPose)), new GUIContent("Loop Pose")); + EditorGUI.indentLevel--; + } + } + + // show animations for clip import editing + var animations = serializedObject.FindProperty("m_Animations"); + if (animations.arraySize > 0) + { + EditorGUILayout.Space(); + EditorGUILayout.PropertyField(animations, new GUIContent("Animations"), true); + } + + // warn if Humanoid rig import has failed + if (!HasModified() && anim.enumValueIndex == (int) AnimationMethod.MecanimHumanoid && !AssetDatabase.LoadAssetAtPath(t.assetPath)) + { + EditorGUILayout.Separator(); + EditorGUILayout.HelpBox("The model doesn't contain a valid Humanoid rig. See the console for more information.", MessageType.Error); + } + } + + private void MaterialInspectorGUI() + { + var t = target as GLTFImporter; + if (!t) return; + + var importMaterialsProp = serializedObject.FindProperty(nameof(GLTFImporter._importMaterials)); + EditorGUILayout.PropertyField(importMaterialsProp); + if (importMaterialsProp.boolValue) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._enableGpuInstancing)), new GUIContent("GPU Instancing")); + EditorGUI.indentLevel--; + } + var importedMaterials = serializedObject.FindProperty("m_Materials"); + if (importedMaterials.arraySize > 0) + { + RemappingUI(t, importedMaterials, "Materials", ".mat"); + } + + // There's a bunch of known edge cases with texture remapping that can go wrong, + // So it's disabled for now. + var current = EnableTextureRemapping; + var val = EditorGUILayout.Toggle(RemapTexturesToggleContent, EnableTextureRemapping); + if (val != current) EnableTextureRemapping = val; + var importedTextures = serializedObject.FindProperty("m_Textures"); + if (EnableTextureRemapping && importedTextures.arraySize > 0) + { + RemappingUI(t, importedTextures, "Textures", ".asset"); + } + + var identifierProp = serializedObject.FindProperty(nameof(GLTFImporter._useSceneNameIdentifier)); + if (!identifierProp.boolValue) + { + EditorGUILayout.Space(); + EditorGUILayout.HelpBox("This asset uses the old main asset identifier. Upgrade to the new one if you want to seamlessly switch between glTFast and UnityGLTF on import.\nNOTE: This will break existing scene references.", MessageType.Info); + if (GUILayout.Button("Update Asset Identifier")) + { + identifierProp.boolValue = true; + serializedObject.ApplyModifiedProperties(); + try + { +#if UNITY_2022_2_OR_NEWER + SaveChanges(); +#else + ApplyAndImport(); +#endif + GUIUtility.ExitGUI(); + } + catch + { + // ignore - seems in some cases the GameObjectInspector will throw + } + } + } + + EditorGUILayout.Separator(); + } + + private void RemappingUI(GLTFImporter t, SerializedProperty importedData, string subDirectoryName, string fileExtension) where T: UnityEngine.Object + { + // extract and remap materials + if (importedData != null && importedData.serializedObject != null) + { + EditorGUI.indentLevel++; + + var externalObjectMap = t.GetExternalObjectMap(); + // TODO this also counts old remaps that are not used anymore + var remapCount = externalObjectMap.Values.Count(x => x is T); + + void ExtractAsset(T subAsset, bool importImmediately) + { + if (!subAsset) return; + var filename = SanitizePath(subAsset.name); + var dirName = Path.GetDirectoryName(t.assetPath) + "/" + subDirectoryName; + if (!Directory.Exists(dirName)) + Directory.CreateDirectory(dirName); + var destinationPath = dirName + "/" + filename + fileExtension; + var assetPath = AssetDatabase.GetAssetPath(subAsset); + + var clone = Instantiate(subAsset); + AssetDatabase.CreateAsset(clone, destinationPath); + + var assetImporter = AssetImporter.GetAtPath(assetPath); + assetImporter.AddRemap(new AssetImporter.SourceAssetIdentifier(subAsset), clone); + + if (importImmediately) + { + AssetDatabase.WriteImportSettingsIfDirty(assetPath); + AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate); + } + } + + string remapFoldoutKey = nameof(GLTFImporterInspector) + "_Remap_" + subDirectoryName + "_Foldout"; + var remapFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(SessionState.GetBool(remapFoldoutKey, false), "Remapped " + subDirectoryName + " (" + remapCount + " / " + importedData.arraySize + ")"); + SessionState.SetBool(remapFoldoutKey, remapFoldout); + if (remapFoldout) + { + if (remapCount > 0) + { + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Restore all " + subDirectoryName)) + { + for (var i = 0; i < importedData.arraySize; i++) + { + var mat = importedData.GetArrayElementAtIndex(i).objectReferenceValue as T; + if (!mat) continue; + t.RemoveRemap(new AssetImporter.SourceAssetIdentifier(mat)); + } + + // also remove all old remaps + var oldRemaps = externalObjectMap.Where(x => x.Value is T).ToList(); + foreach (var oldRemap in oldRemaps) + { + t.RemoveRemap(oldRemap.Key); + } + } + + if (typeof(T) == typeof(Material) && GUILayout.Button("Extract all " + subDirectoryName)) + { + var materials = new T[importedData.arraySize]; + for (var i = 0; i < importedData.arraySize; i++) + materials[i] = importedData.GetArrayElementAtIndex(i).objectReferenceValue as T; + + for (var i = 0; i < materials.Length; i++) + { + if (!materials[i]) continue; + AssetDatabase.StartAssetEditing(); + ExtractAsset(materials[i], false); + AssetDatabase.StopAssetEditing(); + var assetPath = AssetDatabase.GetAssetPath(target); + AssetDatabase.WriteImportSettingsIfDirty(assetPath); + AssetDatabase.Refresh(); + } + } + + EditorGUILayout.EndHorizontal(); + } + + for (var i = 0; i < importedData.arraySize; i++) + { + var mat = importedData.GetArrayElementAtIndex(i).objectReferenceValue as T; + if (!mat) continue; + var id = new AssetImporter.SourceAssetIdentifier(mat); + externalObjectMap.TryGetValue(id, out var remap); + EditorGUILayout.BeginHorizontal(); + // EditorGUILayout.ObjectField(/*mat.name,*/ mat, typeof(Material), false); + EditorGUI.BeginChangeCheck(); + var newObj = EditorGUILayout.ObjectField(mat.name, remap, typeof(T), false); + if (EditorGUI.EndChangeCheck()) + { + if (newObj && newObj != mat) + t.AddRemap(id, newObj); + else + t.RemoveRemap(id); + } + + if (!remap) + { + if (GUILayout.Button("Extract", GUILayout.Width(60))) + { + ExtractAsset(mat, true); + GUIUtility.ExitGUI(); + } + } + else + { + if (GUILayout.Button("Restore", GUILayout.Width(60))) + { + t.RemoveRemap(id); +#if UNITY_2022_2_OR_NEWER + SaveChanges(); +#else + ApplyAndImport(); +#endif + GUIUtility.ExitGUI(); + } + } + + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.Space(); + } + EditorGUI.indentLevel--; + } + + EditorGUILayout.EndFoldoutHeaderGroup(); + } + + private void ExtensionInspectorGUI() + { + var t = target as GLTFImporter; + if (!t) return; + + EditorGUI.BeginDisabledGroup(true); + var mainAssetIdentifierProp = serializedObject.FindProperty(nameof(GLTFImporter._mainAssetIdentifier)); + EditorGUILayout.PropertyField(mainAssetIdentifierProp); + + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(GLTFImporter._extensions)), new GUIContent("Extensions")); + EditorGUI.EndDisabledGroup(); + + // TODO add list of supported extensions and links to docs + // Gather list of all plugins + var registeredPlugins = GLTFSettings.GetDefaultSettings().ImportPlugins; + var overridePlugins = t._importPlugins; + + EditorGUILayout.LabelField("OVERRIDE", EditorStyles.miniLabel, GUILayout.Width(60)); + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("", GUILayout.Width(16)); + EditorGUILayout.LabelField("ENABLED", EditorStyles.miniLabel, GUILayout.Width(60)); + EditorGUILayout.EndHorizontal(); + + foreach (var plugin in registeredPlugins) + { + if (plugin.AlwaysEnabled) continue; // no need to show + var pluginType = plugin.GetType().FullName; + // draw override toggle + EditorGUILayout.BeginHorizontal(); + var overridePlugin = overridePlugins.FirstOrDefault(x => x.typeName == pluginType); + var hasOverride = overridePlugin?.overrideEnabled ?? false; + var hasOverride2 = EditorGUILayout.ToggleLeft("", hasOverride, GUILayout.Width(16)); + if (hasOverride2 != hasOverride) + { + hasOverride = hasOverride2; + // add or remove a ScriptableObject with the plugin + if (!hasOverride) + { + if (overridePlugin != null) overridePlugin.overrideEnabled = false; + } + else + { + if (overridePlugin != null) + { + overridePlugin.overrideEnabled = true; + } + else + { + var newPlugin = new GLTFImporter.PluginInfo() + { + typeName = plugin.GetType().FullName, + enabled = plugin.EnabledByDefault, + overrideEnabled = true, + }; + overridePlugin = newPlugin; + t._importPlugins.Add(newPlugin); + } + } + EditorUtility.SetDirty(t); + } + EditorGUI.BeginDisabledGroup(!hasOverride); + var currentlyEnabled = (overridePlugin != null && overridePlugin.overrideEnabled) ? overridePlugin.enabled : plugin.EnabledByDefault; + var enabled = EditorGUILayout.ToggleLeft("", currentlyEnabled, GUILayout.Width(16)); + if (enabled != currentlyEnabled) + { + currentlyEnabled = enabled; + overridePlugin.enabled = enabled; + EditorUtility.SetDirty(t); + } + EditorGUI.EndDisabledGroup(); + EditorGUI.BeginDisabledGroup(false); + EditorGUILayout.LabelField(plugin.DisplayName); + EditorGUI.EndDisabledGroup(); + EditorGUILayout.EndHorizontal(); + } + } + + private static string SanitizePath(string subAssetName) + { + // make filename safe without using Regex + var invalidChars = Path.GetInvalidFileNameChars(); + var sb = new StringBuilder(subAssetName); + for (int i = 0; i < sb.Length; i++) + { + if (invalidChars.Contains(sb[i])) + { + sb[i] = '_'; + } + } + return sb.ToString(); + } + } + + public static class GLTFImporterHelper + { + public static bool TextureImportSettingsAreCorrect(GLTFImporter importer) + { + return importer.Textures.All(x => + { + if (x.texture && AssetDatabase.Contains(x.texture)) + { + var path = AssetDatabase.GetAssetPath(x.texture); + if (AssetImporter.GetAtPath(path) is TextureImporter textureImporter) + { + var correctLinearSetting = textureImporter.sRGBTexture == !x.shouldBeLinear; + var correctNormalSetting = textureImporter.textureType == TextureImporterType.NormalMap == x.shouldBeNormalMap; + return correctLinearSetting && correctNormalSetting; + } + } + return true; + }); + } + + public static void FixTextureImportSettings(GLTFImporter importer) + { + var haveStartedAssetEditing = false; + foreach (var x in importer.Textures) + { + if (!x.texture) continue; + if (!AssetDatabase.Contains(x.texture) || !(AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(x.texture)) is TextureImporter textureImporter)) continue; + + var correctLinearSetting = textureImporter.sRGBTexture == !x.shouldBeLinear; + var correctNormalSetting = textureImporter.textureType == TextureImporterType.NormalMap == x.shouldBeNormalMap; + + // skip if already correct + if (correctLinearSetting && correctNormalSetting) + continue; + + if (!haveStartedAssetEditing) + { + haveStartedAssetEditing = true; + AssetDatabase.StartAssetEditing(); + } + + textureImporter.sRGBTexture = !x.shouldBeLinear; + textureImporter.textureType = x.shouldBeNormalMap ? TextureImporterType.NormalMap : TextureImporterType.Default; + textureImporter.SaveAndReimport(); + } + + if (haveStartedAssetEditing) + AssetDatabase.StopAssetEditing(); + } + } +} +#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterInspector.cs.meta b/Editor/Scripts/GLTFImporterInspector.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterInspector.cs.meta rename to Editor/Scripts/GLTFImporterInspector.cs.meta diff --git a/Editor/Scripts/GLTFSettingsInspector.cs b/Editor/Scripts/GLTFSettingsInspector.cs new file mode 100644 index 000000000..09d04004e --- /dev/null +++ b/Editor/Scripts/GLTFSettingsInspector.cs @@ -0,0 +1,278 @@ +#if UNITY_EDITOR && UNITY_IMGUI +#define SHOW_SETTINGS_EDITOR +#endif + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.UIElements; +using UnityGLTF.Cache; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ +#if SHOW_SETTINGS_EDITOR + internal class GltfSettingsProvider : SettingsProvider + { + internal static Action OnAfterGUI; + private static GLTFSettings settings; + private SerializedProperty showDefaultReferenceNameWarning, showNamingRecommendationHint; + + public override void OnGUI(string searchContext) + { + if (!settings) + { + settings = GLTFSettings.GetOrCreateSettings(); + m_SerializedObject = new SerializedObject(settings); + } + DrawGLTFSettingsGUI(settings, m_SerializedObject); + } + + public override void OnActivate(string searchContext, VisualElement rootElement) + { + base.OnActivate(searchContext, rootElement); + CalculateCacheStats(); + } + + [SettingsProvider] + public static SettingsProvider CreateGltfSettingsProvider() + { + GLTFSettings.GetOrCreateSettings(); + return new GltfSettingsProvider("Project/UnityGLTF", SettingsScope.Project); + } + + public GltfSettingsProvider(string path, SettingsScope scopes, IEnumerable keywords = null) : base(path, scopes, keywords) + { + } + + private static long exportCacheByteLength = 0; + + private static void CalculateCacheStats() + { + var files = new List(); + exportCacheByteLength = ExportCache.CalculateCacheSize(files); + } + + private static SerializedObject m_SerializedObject; + private static int m_ActiveEditorIndex = 0; + private static readonly string[] m_TabNames = new string[2] { "Export", "Import" }; + private static readonly string key = typeof(GLTFSettings) + "ActiveEditorIndex"; + + internal static void DrawGLTFSettingsGUI(GLTFSettings settings, SerializedObject m_SerializedObject) + { + EditorGUIUtility.labelWidth = 220; + m_SerializedObject.Update(); + + using (new GUILayout.HorizontalScope(Array.Empty())) + { + GUILayout.FlexibleSpace(); + EditorPrefs.GetInt(key, 0); + using (EditorGUI.ChangeCheckScope changeCheckScope = new EditorGUI.ChangeCheckScope()) + { + m_ActiveEditorIndex = GUILayout.Toolbar(m_ActiveEditorIndex, m_TabNames, (GUIStyle) "LargeButton", GUI.ToolbarButtonSize.FitToContents); + if (changeCheckScope.changed) + { + EditorPrefs.SetInt(key, m_ActiveEditorIndex); + } + } + GUILayout.FlexibleSpace(); + } + + if (m_ActiveEditorIndex == 1) + { + var tooltip = "These plugins are enabled by default when importing a glTF file at runtime.\nFor assets imported in the editor, adjust plugin settings on the respective importer."; + EditorGUILayout.LabelField(new GUIContent("Import Extensions and Plugins"), EditorStyles.boldLabel); + EditorGUILayout.LabelField(tooltip, EditorStyles.wordWrappedLabel); + EditorGUILayout.Space(); + OnPluginsGUI(settings.ImportPlugins); + EditorGUILayout.Space(); + } + else if (m_ActiveEditorIndex == 0) + { + var tooltip = "These plugins are enabled by default when exporting a glTF file. When using the export API, you can override which plugins are used."; + EditorGUILayout.LabelField(new GUIContent("Export Extensions and Plugins"), EditorStyles.boldLabel); + EditorGUILayout.LabelField(tooltip, EditorStyles.wordWrappedLabel); + EditorGUILayout.Space(); + OnPluginsGUI(settings.ExportPlugins); + EditorGUILayout.Space(); + + var prop = m_SerializedObject.GetIterator(); + prop.NextVisible(true); + if (prop.NextVisible(true)) + { + do + { + EditorGUILayout.PropertyField(prop, true); + switch (prop.name) + { + case nameof(GLTFSettings.UseCaching): + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel(new GUIContent(" ")); + EditorGUILayout.BeginVertical(); + if (GUILayout.Button( + $"Clear Cache ({(exportCacheByteLength / (1024f * 1024f)):F2} MB)")) + { + ExportCache.Clear(); + CalculateCacheStats(); + } + + if (GUILayout.Button("Open Cache Directory ↗")) + ExportCache.OpenCacheDirectory(); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndHorizontal(); + break; + } + } while (prop.NextVisible(false)); + } + EditorGUILayout.Space(); + + if (m_SerializedObject.hasModifiedProperties) + { + m_SerializedObject.ApplyModifiedProperties(); + } + } + + // Only for testing - all extension registry items should also show up via Plugins above + /* + EditorGUILayout.LabelField("Registered Deserialization Extensions", EditorStyles.boldLabel); + // All plugins in the extension factory are supported for import. + foreach (var ext in GLTFProperty.RegisteredExtensions) + { + EditorGUILayout.ToggleLeft(ext, true); + } + */ + OnAfterGUI?.Invoke(settings); + } + + private static Dictionary editorCache = new Dictionary(); + + internal static void OnPluginsGUI(IEnumerable plugins, bool allowDisabling = true) + { + var lastAssembly = ""; + foreach (var plugin in plugins + .OrderBy(x => + { + var displayName = x.GetType().Assembly.GetName().Name; + if (displayName == "UnityGLTFScripts") displayName = "____"; + return displayName; + }) + .ThenBy(x => x ? x.DisplayName : "ZZZ")) + { + if (!plugin) continue; + var pluginAssembly = plugin.GetType().Assembly.GetName().Name; + if (pluginAssembly == "UnityGLTFScripts") pluginAssembly = "UnityGLTF"; + if (lastAssembly != pluginAssembly) + { + lastAssembly = pluginAssembly; + EditorGUILayout.Space(); + EditorGUILayout.LabelField(new GUIContent(pluginAssembly), EditorStyles.miniLabel); + } + + EditorGUI.indentLevel++; + var displayName = plugin.DisplayName ?? plugin.name; + if (string.IsNullOrEmpty(displayName)) + displayName = ObjectNames.NicifyVariableName(plugin.GetType().Name); + var key = plugin.GetType().FullName + "_SettingsExpanded"; + var expanded = SessionState.GetBool(key, false); + using (new GUILayout.HorizontalScope()) + { + if (plugin.AlwaysEnabled || !allowDisabling) + { + plugin.Enabled = true; + // EditorGUI.BeginDisabledGroup(true); + // GUILayout.Toggle(true, new GUIContent("", "Always enabled."), GUILayout.Width(12)); + // EditorGUI.EndDisabledGroup(); + if (allowDisabling) + GUILayout.Label(GUIContent.none, GUILayout.Width(11)); + } + else + { + plugin.Enabled = GUILayout.Toggle(plugin.Enabled, "", GUILayout.Width(12)); + } + + var label = new GUIContent(displayName, plugin.Description); + EditorGUI.BeginDisabledGroup(!plugin.Enabled); + var expanded2 = EditorGUILayout.Foldout(expanded, label); + var lastFoldoutRect = GUILayoutUtility.GetLastRect(); + // check for right click so we can show a context menu + EditorGUI.EndDisabledGroup(); + if (Event.current.type == EventType.MouseDown && lastFoldoutRect.Contains(Event.current.mousePosition)) + { + if (Event.current.button == 0) + { + expanded2 = !expanded2; + } + else if (Event.current.button == 1) + { + var menu = new GenericMenu(); + menu.AddItem(new GUIContent("Ping Script"), false, () => { + var script = MonoScript.FromScriptableObject(plugin); + EditorGUIUtility.PingObject(script); + }); + menu.AddItem(new GUIContent("Edit Script"), false, () => { + var script = MonoScript.FromScriptableObject(plugin); + AssetDatabase.OpenAsset(script); + }); + menu.ShowAsContext(); + Event.current.Use(); + } + } + + EditorGUI.BeginDisabledGroup(!plugin.Enabled); + if (plugin.Enabled && !string.IsNullOrEmpty(plugin.Warning)) + { + // calculate space that the label needed + var labelSize = EditorStyles.foldout.CalcSize(label); + var warningIcon = EditorGUIUtility.IconContent("console.infoicon.sml"); + warningIcon.tooltip = plugin.Warning; + // show warning if needed + var lastRect = GUILayoutUtility.GetLastRect(); + var warningRect = new Rect(lastRect.x + labelSize.x + 4, lastRect.y, 32, 16); + EditorGUI.LabelField(warningRect, warningIcon); + } + + EditorGUI.EndDisabledGroup(); + if (expanded2 != expanded) + { + expanded = expanded2; + SessionState.SetBool(key, expanded2); + } + } + + if (expanded) + { + EditorGUI.indentLevel += 1; + EditorGUILayout.HelpBox(plugin.Description, MessageType.None); + if (!string.IsNullOrEmpty(plugin.Warning)) + EditorGUILayout.HelpBox(plugin.Warning, MessageType.Info); + EditorGUI.BeginDisabledGroup(!plugin.Enabled); + editorCache.TryGetValue(plugin.GetType(), out var editor); + Editor.CreateCachedEditor(plugin, null, ref editor); + editorCache[plugin.GetType()] = editor; + editor.OnInspectorGUI(); + EditorGUI.EndDisabledGroup(); + EditorGUI.indentLevel -= 1; + } + + GUILayout.Space(2); + + EditorGUI.indentLevel--; + } + } + + } + + [CustomEditor(typeof(GLTFSettings))] + internal class GLTFSettingsEditor : Editor + { + public override void OnInspectorGUI() + { + GLTFSettings.GetOrCreateSettings(); + GltfSettingsProvider.DrawGLTFSettingsGUI(target as GLTFSettings, serializedObject); + } + } +#endif +} \ No newline at end of file diff --git a/Editor/Scripts/GLTFSettingsInspector.cs.meta b/Editor/Scripts/GLTFSettingsInspector.cs.meta new file mode 100644 index 000000000..677078e08 --- /dev/null +++ b/Editor/Scripts/GLTFSettingsInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 122ad858b5c954f558f2c9ae993d5dbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal.meta b/Editor/Scripts/Internal.meta new file mode 100644 index 000000000..b1b047790 --- /dev/null +++ b/Editor/Scripts/Internal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 043bcd2f8cd689d4298a4ff9f11d1056 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/AsyncHelpers.cs b/Editor/Scripts/Internal/AsyncHelpers.cs new file mode 100644 index 000000000..fe3569295 --- /dev/null +++ b/Editor/Scripts/Internal/AsyncHelpers.cs @@ -0,0 +1,138 @@ +// Source: https://social.msdn.microsoft.com/Forums/en-US/163ef755-ff7b-4ea5-b226-bbe8ef5f4796/is-there-a-pattern-for-calling-an-async-method-synchronously?forum=async + +using System; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; + +namespace UnityGLTF +{ + public static class AsyncHelpers + { + /// + /// Execute's an async Task method which has a void return value synchronously + /// + /// Task method to execute + public static void RunSync(Func task) + { + var oldContext = SynchronizationContext.Current; + var synch = new ExclusiveSynchronizationContext(); + SynchronizationContext.SetSynchronizationContext(synch); + synch.Post(async _ => + { + try + { + await task(); + } + catch (Exception e) + { + synch.InnerException = e; + throw; + } + finally + { + synch.EndMessageLoop(); + } + }, null); + synch.BeginMessageLoop(); + + SynchronizationContext.SetSynchronizationContext(oldContext); + } + + /// + /// Execute's an async Task method which has a T return type synchronously + /// + /// Return Type + /// Task method to execute + /// + public static T RunSync(Func> task) + { + var oldContext = SynchronizationContext.Current; + var synch = new ExclusiveSynchronizationContext(); + SynchronizationContext.SetSynchronizationContext(synch); + T ret = default(T); + synch.Post(async _ => + { + try + { + ret = await task(); + } + catch (Exception e) + { + synch.InnerException = e; + throw; + } + finally + { + synch.EndMessageLoop(); + } + }, null); + synch.BeginMessageLoop(); + SynchronizationContext.SetSynchronizationContext(oldContext); + return ret; + } + + private class ExclusiveSynchronizationContext : SynchronizationContext + { + private bool done; + public Exception InnerException { get; set; } + readonly AutoResetEvent workItemsWaiting = new AutoResetEvent(false); + + readonly Queue> items = + new Queue>(); + + public override void Send(SendOrPostCallback d, object state) + { + throw new NotSupportedException("We cannot send to our same thread"); + } + + public override void Post(SendOrPostCallback d, object state) + { + lock (items) + { + items.Enqueue(Tuple.Create(d, state)); + } + + workItemsWaiting.Set(); + } + + public void EndMessageLoop() + { + Post(_ => done = true, null); + } + + public void BeginMessageLoop() + { + while (!done) + { + Tuple task = null; + lock (items) + { + if (items.Count > 0) + { + task = items.Dequeue(); + } + } + + if (task != null) + { + task.Item1(task.Item2); + if (InnerException != null) // the method threw an exeption + { + throw new AggregateException("AsyncHelpers.Run method threw an exception.", InnerException); + } + } + else + { + workItemsWaiting.WaitOne(); + } + } + } + + public override SynchronizationContext CreateCopy() + { + return this; + } + } + } +} diff --git a/Editor/Scripts/Internal/AsyncHelpers.cs.meta b/Editor/Scripts/Internal/AsyncHelpers.cs.meta new file mode 100644 index 000000000..587bdef91 --- /dev/null +++ b/Editor/Scripts/Internal/AsyncHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 978a3250c76650a428914d9da042b50c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/AvatarUtils.cs b/Editor/Scripts/Internal/AvatarUtils.cs new file mode 100644 index 000000000..d147a5224 --- /dev/null +++ b/Editor/Scripts/Internal/AvatarUtils.cs @@ -0,0 +1,219 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UnityGLTF +{ + internal class AvatarUtils + { + // A static dictionary containing the mapping from joint/bones names in the model + // to the names Unity uses for them internally. + // In this case they match the naming from the included Mixamo model on the left + // and the Unity equivalent name on the right. + // This does not need to be hard-coded. + public static Dictionary HumanSkeletonNames = new Dictionary() + { + {"mixamorig:Spine1", "Chest"}, + {"mixamorig:Head", "Head" }, + {"mixamorig:Hips", "Hips" }, + {"mixamorig:LeftHandIndex3", "Left Index Distal" }, + {"mixamorig:LeftHandIndex2", "Left Index Intermediate" }, + {"mixamorig:LeftHandIndex1", "Left Index Proximal" }, + {"mixamorig:LeftHandPinky3", "Left Little Distal" }, + {"mixamorig:LeftHandPinky2", "Left Little Intermediate" }, + {"mixamorig:LeftHandPinky1", "Left Little Proximal" }, + {"mixamorig:LeftHandMiddle3", "Left Middle Distal" }, + {"mixamorig:LeftHandMiddle2", "Left Middle Intermediate" }, + {"mixamorig:LeftHandMiddle1", "Left Middle Proximal" }, + {"mixamorig:LeftHandRing3", "Left Ring Distal" }, + {"mixamorig:LeftHandRing2", "Left Ring Intermediate" }, + {"mixamorig:LeftHandRing1", "Left Ring Proximal" }, + {"mixamorig:LeftHandThumb3", "Left Thumb Distal" }, + {"mixamorig:LeftHandThumb2", "Left Thumb Intermediate" }, + {"mixamorig:LeftHandThumb1", "Left Thumb Proximal" }, + {"mixamorig:LeftFoot", "LeftFoot" }, + {"mixamorig:LeftHand", "LeftHand" }, + {"mixamorig:LeftForeArm", "LeftLowerArm" }, + {"mixamorig:LeftLeg", "LeftLowerLeg" }, + {"mixamorig:LeftShoulder", "LeftShoulder" }, + {"mixamorig:LeftToeBase", "LeftToes" }, + {"mixamorig:LeftArm", "LeftUpperArm" }, + {"mixamorig:LeftUpLeg", "LeftUpperLeg" }, + {"mixamorig:Neck", "Neck" }, + {"mixamorig:RightHandIndex3", "Right Index Distal" }, + {"mixamorig:RightHandIndex2", "Right Index Intermediate" }, + {"mixamorig:RightHandIndex1", "Right Index Proximal" }, + {"mixamorig:RightHandPinky3", "Right Little Distal" }, + {"mixamorig:RightHandPinky2", "Right Little Intermediate" }, + {"mixamorig:RightHandPinky1", "Right Little Proximal" }, + {"mixamorig:RightHandMiddle3", "Right Middle Distal" }, + {"mixamorig:RightHandMiddle2", "Right Middle Intermediate" }, + {"mixamorig:RightHandMiddle1", "Right Middle Proximal" }, + {"mixamorig:RightHandRing3", "Right Ring Distal" }, + {"mixamorig:RightHandRing2", "Right Ring Intermediate" }, + {"mixamorig:RightHandRing1", "Right Ring Proximal" }, + {"mixamorig:RightHandThumb3", "Right Thumb Distal" }, + {"mixamorig:RightHandThumb2", "Right Thumb Intermediate" }, + {"mixamorig:RightHandThumb1", "Right Thumb Proximal" }, + {"mixamorig:RightFoot", "RightFoot" }, + {"mixamorig:RightHand", "RightHand" }, + {"mixamorig:RightForeArm", "RightLowerArm" }, + {"mixamorig:RightLeg", "RightLowerLeg" }, + {"mixamorig:RightShoulder", "RightShoulder" }, + {"mixamorig:RightToeBase", "RightToes" }, + {"mixamorig:RightArm", "RightUpperArm" }, + {"mixamorig:RightUpLeg", "RightUpperLeg" }, + {"mixamorig:Spine", "Spine" }, + {"mixamorig:Spine2", "UpperChest" }, + + // Other common Avatar formats can also be added here + // { "root", "" }, + { "hips", "Hips" }, + { "spine", "Spine" }, + { "chest", "Chest" }, + { "upperChest", "UpperChest" }, + { "neck", "Neck" }, + { "head", "Head" }, + { "leftEye", "LeftEye" }, + // { "eyeL_end", "" }, + { "rightEye", "RightEye" }, + // { "eyeR_end", "" }, + { "leftShoulder", "LeftShoulder" }, + { "leftUpperArm", "LeftUpperArm" }, + { "leftLowerArm", "LeftLowerArm" }, + { "leftHand", "LeftHand" }, + // { "leftThumbMetacarpal", "" }, + // { "leftThumbProximal", "" }, + // { "leftThumbDistal", "" }, + // { "thumbdistalL_end", "" }, + // { "leftIndexProximal", "" }, + // { "leftIndexIntermediate", "" }, + // { "leftIndexDistal", "" }, + // { "indexdistalL_end", "" }, + // { "leftMiddleProximal", "" }, + // { "leftMiddleIntermediate", "" }, + // { "leftMiddleDistal", "" }, + // { "middledistalL_end", "" }, + // { "leftRingProximal", "" }, + // { "leftRingIntermediate", "" }, + // { "leftRingDistal", "" }, + // { "ringdistalL_end", "" }, + // { "leftLittleProximal", "" }, + // { "leftLittleIntermediate", "" }, + // { "leftLittleDistal", "" }, + // { "littledistalL_end", "" }, + { "rightShoulder", "RightShoulder" }, + { "rightUpperArm", "RightUpperArm" }, + { "rightLowerArm", "RightLowerArm" }, + { "rightHand", "RightHand" }, + // { "rightThumbMetacarpal", "" }, + // { "rightThumbProximal", "" }, + // { "rightThumbDistal", "" }, + // { "thumbdistalR_end", "" }, + // { "rightIndexProximal", "" }, + // { "rightIndexIntermediate", "" }, + // { "rightIndexDistal", "" }, + // { "indexdistalR_end", "" }, + // { "rightMiddleProximal", "" }, + // { "rightMiddleIntermediate", "" }, + // { "rightMiddleDistal", "" }, + // { "middledistalR_end", "" }, + // { "rightRingProximal", "" }, + // { "rightRingIntermediate", "" }, + // { "rightRingDistal", "" }, + // { "ringdistalR_end", "" }, + // { "rightLittleProximal", "" }, + // { "rightLittleIntermediate", "" }, + // { "rightLittleDistal", "" }, + // { "littledistalR_end", "" }, + { "leftUpperLeg", "LeftUpperLeg" }, + { "leftLowerLeg", "LeftLowerLeg" }, + { "leftFoot", "LeftFoot" }, + { "leftToes", "LeftToes" }, + // { "toesL_end", "" }, + { "rightUpperLeg", "RightUpperLeg" }, + { "rightLowerLeg", "RightLowerLeg" }, + { "rightFoot", "RightFoot" }, + { "rightToes", "RightToes" }, + // { "toesR_end", "" }, + + }; + + /// + /// Create a HumanDescription out of an avatar GameObject. + /// The HumanDescription is what is needed to create an Avatar object + /// using the AvatarBuilder API. This function takes care of + /// creating the HumanDescription by going through the avatar's + /// hierarchy, defining its T-Pose in the skeleton, and defining + /// the transform/bone mapping in the HumanBone array. + /// + /// Root of your avatar object + /// A HumanDescription which can be fed to the AvatarBuilder API + public static HumanDescription CreateHumanDescription(GameObject avatarRoot) + { + HumanDescription description = new HumanDescription() + { + armStretch = 0.05f, + feetSpacing = 0f, + hasTranslationDoF = false, + legStretch = 0.05f, + lowerArmTwist = 0.5f, + lowerLegTwist = 0.5f, + upperArmTwist = 0.5f, + upperLegTwist = 0.5f, + skeleton = CreateSkeleton(avatarRoot), + human = CreateHuman(avatarRoot), + }; + return description; + } + + //Create a SkeletonBone array out of an Avatar GameObject + //This assumes that the Avatar as supplied is in a T-Pose + //The local positions of its bones/joints are used to define this T-Pose + private static SkeletonBone[] CreateSkeleton(GameObject avatarRoot) + { + List skeleton = new List(); + + Transform[] avatarTransforms = avatarRoot.GetComponentsInChildren(); + foreach (Transform avatarTransform in avatarTransforms) + { + SkeletonBone bone = new SkeletonBone() + { + name = avatarTransform.name, + position = avatarTransform.localPosition, + rotation = avatarTransform.localRotation, + scale = avatarTransform.localScale + }; + + skeleton.Add(bone); + } + return skeleton.ToArray(); + } + + //Create a HumanBone array out of an Avatar GameObject + //This is where the various bones/joints get associated with the + //joint names that Unity understands. This is done using the + //static dictionary defined at the top. + private static HumanBone[] CreateHuman(GameObject avatarRoot) + { + List human = new List(); + + Transform[] avatarTransforms = avatarRoot.GetComponentsInChildren(); + foreach (Transform avatarTransform in avatarTransforms) + { + if (HumanSkeletonNames.TryGetValue(avatarTransform.name, out string humanName)) + { + HumanBone bone = new HumanBone + { + boneName = avatarTransform.name, + humanName = humanName, + limit = new HumanLimit() + }; + bone.limit.useDefaultValues = true; + + human.Add(bone); + } + } + return human.ToArray(); + } + } +} diff --git a/Editor/Scripts/Internal/AvatarUtils.cs.meta b/Editor/Scripts/Internal/AvatarUtils.cs.meta new file mode 100644 index 000000000..fcaf10446 --- /dev/null +++ b/Editor/Scripts/Internal/AvatarUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 15daddec8a84e584db94b127e7bd05b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/DefaultImportSettings.meta b/Editor/Scripts/Internal/DefaultImportSettings.meta new file mode 100644 index 000000000..bbfba6963 --- /dev/null +++ b/Editor/Scripts/Internal/DefaultImportSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e88d614baf1b41b8a6cbb3fab6b4af3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png b/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png new file mode 100644 index 000000000..57c2ab7f8 Binary files /dev/null and b/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png differ diff --git a/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png.meta b/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png.meta new file mode 100644 index 000000000..a6a3fcbaa --- /dev/null +++ b/Editor/Scripts/Internal/DefaultImportSettings/DefaultTexture.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 7b7ff3cec11c24c599d6f12443877d5e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 5 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 2 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/GLTFMaterialHelper.cs b/Editor/Scripts/Internal/GLTFMaterialHelper.cs new file mode 100644 index 000000000..213c562bd --- /dev/null +++ b/Editor/Scripts/Internal/GLTFMaterialHelper.cs @@ -0,0 +1,268 @@ +#if !NO_INTERNALS_ACCESS + +using System.Linq; +using System.Text; +using UnityEngine; + +#if UNITY_EDITOR +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEditorInternal; +#endif + +namespace UnityGLTF +{ + public static class GLTFMaterialHelper + { + /// + /// Return false if other delegates should take over. Only return true if you did work and assigned material.shader = newShader. + /// + public delegate bool ConvertMaterialToGLTFDelegate(Material material, Shader oldShader, Shader newShader); + private static event ConvertMaterialToGLTFDelegate ConvertMaterialDelegates; + + public static void RegisterMaterialConversionToGLTF(ConvertMaterialToGLTFDelegate converter) => ConvertMaterialDelegates += converter; + public static void UnregisterMaterialConversionToGLTF(ConvertMaterialToGLTFDelegate converter) => ConvertMaterialDelegates -= converter; + + public static void ConvertMaterialToGLTF(Material material, Shader oldShader, Shader newShader) + { + if (ConvertMaterialDelegates != null) + { + var list = ConvertMaterialDelegates.GetInvocationList(); + foreach (var entry in list) + { + var cb = (ConvertMaterialToGLTFDelegate) entry; + if (cb != null && cb.Invoke(material, oldShader, newShader)) + { + return; + } + } + } + + // IDEA ideally this would use the same code path as material export/import - would reduce the amount of code duplication considerably. + // E.g. calling something like + // var glTFMaterial = ExportMaterial(material); + // ImportAndOverrideMaterial(material, glTFMaterial); + // that uses all the same heuristics, texture conversions, ... + + var msg = "No automatic conversion\nfrom " + oldShader.name + "\nto " + newShader.name + "\nfound.\n\nYou can create a conversion script, adjust which old properties map to which new properties, and switch the shader again."; + +#if UNITY_EDITOR + var choice = EditorUtility.DisplayDialogComplex("Shader Conversion", msg, "Just set shader", "Cancel", "Create and open conversion script"); + switch (choice) + { + case 0: // OK + material.shader = newShader; + break; + case 1: // Cancel + break; + case 2: // Alt + var path = ShaderConversion.CreateConversionScript(oldShader, newShader); + InternalEditorUtility.OpenFileAtLineExternal(path, 0); + break; + } +#else + Debug.Log(msg + " Make sure your material properties match the new shader. You can add your own conversion callbacks via `RegisterMaterialConversionToGLTF`. If you think this should have been converted automatically: please open a feature request!"); + material.shader = newShader; +#endif + } + + public static void ValidateMaterialKeywords(Material material) + { + // TODO ensure we're setting correct keywords for + // - existence of a normal map + // - existence of emission color values or texture + // - + + // var needsVolumeTransmission = false; + // needsVolumeTransmission |= material.HasProperty(thicknessFactor) && material.GetFloat(thicknessFactor) > 0; + // needsVolumeTransmission |= material.HasProperty(transmissionFactor) && material.GetFloat(transmissionFactor) > 0; + // material.SetKeyword("_VOLUME_TRANSMISSION", needsVolumeTransmission); + // + // var needsIridescence = material.HasProperty(iridescenceFactor) && material.GetFloat(iridescenceFactor) > 0; + // material.SetKeyword("_IRIDESCENCE", needsIridescence); + // + // var needsSpecular = material.HasProperty(specularFactor) && material.GetFloat(specularFactor) > 0; + // material.SetKeyword("_SPECULAR", needsSpecular); + var isImplicitBlendMode = true; + + const string blendModeProp = "_OverrideSurfaceMode"; + if (material.HasProperty(blendModeProp)) + { + var blendMode = material.GetInt(blendModeProp); + isImplicitBlendMode = blendMode == 0; + } + + if (isImplicitBlendMode) + { + if (material.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON")) + { + // We want to enforce opaque rendering if + // - Transmission is enabled + // - Roughness is > 0 + // - The material isn't set to explicitly render as transparent + + // enforce Opaque + if (material.HasProperty("_BUILTIN_Surface")) material.SetFloat("_BUILTIN_Surface", 0); + if (material.HasProperty("_Surface")) material.SetFloat("_Surface", 0); + material.DisableKeyword("_SURFACE_TYPE_TRANSPARENT"); + material.DisableKeyword("_BUILTIN_SURFACE_TYPE_TRANSPARENT"); + + // enforce queue control and render queue 3000 + if (material.HasProperty("_QueueControl")) material.SetFloat("_QueueControl", 1); + if (material.HasProperty("_BUILTIN_QueueControl")) material.SetFloat("_BUILTIN_QueueControl", 1); + + // not a great choice: using 2999 as magic value for "we automatically set the queue for you" + // so the change can be reverted if someone toggles transmission on and then off again. + material.renderQueue = 2999; + } + else + { + if (material.renderQueue == 2999) + { + if (material.HasProperty("_QueueControl")) material.SetFloat("_QueueControl", 0); + if (material.HasProperty("_BUILTIN_QueueControl")) material.SetFloat("_BUILTIN_QueueControl", 0); + material.renderQueue = -1; + } + } + } + + if (material.HasProperty("emissiveFactor")) + material.globalIlluminationFlags = MaterialEditor.FixupEmissiveFlag(material.GetColor("emissiveFactor"), material.globalIlluminationFlags); + } + + public static void SetKeyword(Material material, string keyword, bool state) + { + if (state) + { + material.EnableKeyword(keyword + "_ON"); + material.EnableKeyword(keyword); + } + else + { + material.DisableKeyword(keyword + "_ON"); + material.DisableKeyword(keyword); + } + + if (material.HasProperty(keyword)) + material.SetFloat(keyword, state ? 1 : 0); + } + } + +#if UNITY_EDITOR + internal static class ShaderConversion + { + public static string CreateConversionScript(Shader oldShader, Shader newShader) + { + var classShaderName = oldShader.name + .Replace("/", "_") + .Replace(" ", "_") + .Replace("\\", "_"); + + var scriptFile = ShaderConversionScriptTemplate; + scriptFile = scriptFile.Replace("", classShaderName); + scriptFile = scriptFile.Replace("", oldShader.name); + + var sb = new StringBuilder(); + foreach(var (propName, propDisplayName, type) in GetShaderProperties(oldShader)) + { + sb.AppendLine($"\t\tvar {propName} = material.{MethodFromType("Get", type)}(\"{propName}\"); // {propDisplayName}"); + } + + var sb2 = new StringBuilder(); + foreach(var (propName, propDisplayName, type) in GetShaderProperties(newShader)) + { + sb2.AppendLine($"\t\t// material.{MethodFromType("Set", type)}(\"{propName}\", insert_value_here); // {propDisplayName}"); + } + + scriptFile = scriptFile.Replace("\t\t", sb.ToString()); + scriptFile = scriptFile.Replace("\t\t", sb2.ToString()); + + const string dir = "Assets/Editor/ShaderConversions"; + Directory.CreateDirectory(dir); + var fileName = dir + "/" + classShaderName + ".cs"; + if (!File.Exists(fileName) || EditorUtility.DisplayDialog("File already exists", $"The file \"{fileName}\" already exists. Replace?", "Replace", "Cancel")) + File.WriteAllText(fileName, scriptFile); + + AssetDatabase.Refresh(); + + return fileName; + } + + private static IEnumerable<(string propName, string propDisplayName, ShaderUtil.ShaderPropertyType type)> GetShaderProperties(Shader shader) + { + var c = ShaderUtil.GetPropertyCount(shader); + for (var i = 0; i < c; i++) + { + if (ShaderUtil.IsShaderPropertyHidden(shader, i)) continue; + if (ShaderUtil.IsShaderPropertyNonModifiableTexureProperty(shader, i)) continue; + + var propName = ShaderUtil.GetPropertyName(shader, i); + if(propName.StartsWith("unity_")) continue; + + var propDisplayName = ShaderUtil.GetPropertyDescription(shader, i); + var type = ShaderUtil.GetPropertyType(shader, i); + yield return (propName, propDisplayName, type); + } + } + + private static string MethodFromType(string prefix, ShaderUtil.ShaderPropertyType propertyType) + { + switch (propertyType) + { + case ShaderUtil.ShaderPropertyType.Color: return prefix + "Color"; + case ShaderUtil.ShaderPropertyType.Float: return prefix + "Float"; +#if UNITY_2021_1_OR_NEWER + case ShaderUtil.ShaderPropertyType.Int: return prefix + "Int"; +#endif + case ShaderUtil.ShaderPropertyType.Range: return prefix + "Float"; + case ShaderUtil.ShaderPropertyType.Vector: return prefix + "Vector"; + case ShaderUtil.ShaderPropertyType.TexEnv: return prefix + "Texture"; + } + + return prefix + "UnknownPropertyType"; // compiler error + } + + private const string ShaderConversionScriptTemplate = +@"using UnityEditor; +using UnityEngine; +using UnityGLTF; + +class Convert__to_GLTF +{ + const string shaderName = """"; + + [InitializeOnLoadMethod] + private static void Register() + { + GLTFMaterialHelper.RegisterMaterialConversionToGLTF(ConvertMaterialProperties); + } + + private static bool ConvertMaterialProperties(Material material, Shader oldShader, Shader newShader) + { + if (oldShader.name != shaderName) return false; + + // Reading old shader properties. + + + material.shader = newShader; + + // Assigning new shader properties. + // Uncomment lines you need, and set properties from values from the section above. + + + + // Ensure keywords are correctly set after conversion. + // Example: + // if (material.GetFloat(""_VERTEX_COLORS"") > 0.5f) material.EnableKeyword(""_VERTEX_COLORS_ON""); + + ShaderGraphHelpers.ValidateMaterialKeywords(material); + return true; + } +} +"; + } +#endif +} + +#endif diff --git a/Editor/Scripts/Internal/GLTFMaterialHelper.cs.meta b/Editor/Scripts/Internal/GLTFMaterialHelper.cs.meta new file mode 100644 index 000000000..38df10af7 --- /dev/null +++ b/Editor/Scripts/Internal/GLTFMaterialHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad1a4409c80a9004781468cca77d6224 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/HumanoidSetup.cs b/Editor/Scripts/Internal/HumanoidSetup.cs new file mode 100644 index 000000000..5219881f6 --- /dev/null +++ b/Editor/Scripts/Internal/HumanoidSetup.cs @@ -0,0 +1,102 @@ +using System; +using System.Reflection; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace UnityGLTF +{ + internal static class HumanoidSetup + { + private static MethodInfo _SetupHumanSkeleton; + + internal static Avatar AddAvatarToGameObject(GameObject gameObject) + { + HumanDescription description = AvatarUtils.CreateHumanDescription(gameObject); + var bones = description.human; + SetupHumanSkeleton(gameObject, ref bones, out var skeletonBones, out var hasTranslationDoF); + description.human = bones; + description.skeleton = skeletonBones; + description.hasTranslationDoF = hasTranslationDoF; + + Avatar avatar = AvatarBuilder.BuildHumanAvatar(gameObject, description); + avatar.name = "Avatar"; + + if (!avatar.isValid) + { + Object.DestroyImmediate(avatar); + return null; + } + + var animator = gameObject.GetComponent(); + if (animator) animator.avatar = avatar; + return avatar; + } + + private static void SetupHumanSkeleton( + GameObject modelPrefab, + ref HumanBone[] humanBoneMappingArray, + out SkeletonBone[] skeletonBones, + out bool hasTranslationDoF) + { + _SetupHumanSkeleton = typeof(AvatarSetupTool).GetMethod(nameof(SetupHumanSkeleton), (BindingFlags)(-1)); + skeletonBones = Array.Empty(); + hasTranslationDoF = false; + + _SetupHumanSkeleton?.Invoke(null, new object[] + { + modelPrefab, + humanBoneMappingArray, + skeletonBones, + hasTranslationDoF + }); + } + + + // AvatarSetupTools + // AvatarBuilder.BuildHumanAvatar + // AvatarConfigurationStage.CreateStage + // AssetImporterTabbedEditor + // ModelImporterRigEditor + +#if TESTING + [MenuItem("Tools/Copy Hierarchy Array")] + static void _Copy(MenuCommand command) + { + var gameObject = Selection.activeGameObject; + var sb = new System.Text.StringBuilder(); + + void Traverse(Transform tr) + { + sb.AppendLine(tr.name); + foreach (Transform child in tr) + { + Traverse(child); + } + } + + Traverse(gameObject.transform); + EditorGUIUtility.systemCopyBuffer = sb.ToString(); + } + + [MenuItem("Tools/Setup Humanoid")] + static void _Do(MenuCommand command) + { + var gameObject = Selection.activeGameObject; + // SetupHumanSkeleton(go, ref humanBoneMappingArray, out var skeletonBones, out var hasTranslationDoF); + AddAvatarToGameObject(gameObject); + } + + [MenuItem("Tools/Open Avatar Editor")] + static void _OpenEditor(MenuCommand command) + { + var gameObject = Selection.activeGameObject; + var avatar = gameObject.GetComponent().avatar; + var e = (AvatarEditor) Editor.CreateEditor(avatar, typeof(AvatarEditor)); + e.m_CameFromImportSettings = true; + Selection.activeObject = e; + e.SwitchToEditMode(); + } +#endif + } +} diff --git a/Editor/Scripts/Internal/HumanoidSetup.cs.meta b/Editor/Scripts/Internal/HumanoidSetup.cs.meta new file mode 100644 index 000000000..e97453b48 --- /dev/null +++ b/Editor/Scripts/Internal/HumanoidSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 977986ddaa6e7594c81ccb48155a39a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/TextureImporterHelper.cs b/Editor/Scripts/Internal/TextureImporterHelper.cs new file mode 100644 index 000000000..522565761 --- /dev/null +++ b/Editor/Scripts/Internal/TextureImporterHelper.cs @@ -0,0 +1,51 @@ +using System; +using System.Reflection; +using UnityEditor; +using UnityEditor.Build; +using UnityEngine; + +namespace UnityGLTF +{ + public class TextureImporterHelper + { + private static MethodInfo GetFixedPlatformName; + private const string DefaultTextureAssetGuid = "7b7ff3cec11c24c599d6f12443877d5e"; + + public static TextureImporterFormat GetAutomaticFormat(Texture2D texture, string platform) + { + var defaultTextureImporter = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(DefaultTextureAssetGuid)) as TextureImporter; + // defaultTextureImporter = new TextureImporter(); + + if (GetFixedPlatformName == null) + GetFixedPlatformName = typeof(TextureImporter) + .GetMethod("GetFixedPlatformName", BindingFlags.Static | BindingFlags.NonPublic); + + if (GetFixedPlatformName == null) + throw new MissingMethodException("TextureImporter.GetFixedPlatformName"); + + platform = GetFixedPlatformName.Invoke(null, new object[] { platform }) as string; + TextureImporterSettings importerSettings = new TextureImporterSettings(); + + importerSettings.aniso = 5; + importerSettings.wrapMode = texture.wrapMode; + importerSettings.filterMode = texture.filterMode; + importerSettings.mipmapEnabled = texture.mipmapCount > 1; + importerSettings.alphaSource = TextureImporterAlphaSource.FromInput; + + var hasAlpha = TextureUtil.HasAlphaTextureFormat(texture.format); + var isHDR = TextureUtil.IsHDRFormat(texture.format); + + // var platformSettings = new TextureImporterPlatformSettings(); + + foreach (BuildPlatform validPlatform in BuildPlatforms.instance.GetValidPlatforms()) + { + // TextureImporter.RecommendedFormatsFromTextureTypeAndPlatform + if (validPlatform.name == platform) + return TextureImporter.DefaultFormatFromTextureParameters(importerSettings, defaultTextureImporter.GetPlatformTextureSettings(platform), hasAlpha, isHDR, validPlatform.defaultTarget); + } + + // This should never happen + return TextureImporterFormat.Automatic; + } + } +} \ No newline at end of file diff --git a/Editor/Scripts/Internal/TextureImporterHelper.cs.meta b/Editor/Scripts/Internal/TextureImporterHelper.cs.meta new file mode 100644 index 000000000..dd99339ae --- /dev/null +++ b/Editor/Scripts/Internal/TextureImporterHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6301556340654c09aa8e389bfc561e81 +timeCreated: 1694362715 \ No newline at end of file diff --git a/Editor/Scripts/Internal/UnityGLTF.Internal.asmref b/Editor/Scripts/Internal/UnityGLTF.Internal.asmref new file mode 100644 index 000000000..34419fe8e --- /dev/null +++ b/Editor/Scripts/Internal/UnityGLTF.Internal.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:343deaaf83e0cee4ca978e7df0b80d21" +} \ No newline at end of file diff --git a/Editor/Scripts/Internal/UnityGLTF.Internal.asmref.meta b/Editor/Scripts/Internal/UnityGLTF.Internal.asmref.meta new file mode 100644 index 000000000..c52f02230 --- /dev/null +++ b/Editor/Scripts/Internal/UnityGLTF.Internal.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9c9262dcd4069cd4aafbfe7eabf0bf41 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs b/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs new file mode 100644 index 000000000..35362a8e8 --- /dev/null +++ b/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using UnityEditor; +using UnityEditor.AssetImporters; +using UnityEngine; + +[assembly: InternalsVisibleTo("UnityGLTFEditor")] + +namespace UnityGLTF +{ + internal class UnityGLTFTabbedEditor : AssetImporterTabbedEditor + { + private readonly List _tabs = new List(); + internal int TabCount => _tabs.Count; + internal BaseAssetImporterTabUI __ActiveTab => activeTab; + + protected void AddTab(GLTFAssetImporterTab tab) + { + if (tab == null) return; + if (!_tabs.Contains(tab)) _tabs.Add(tab); + tabs = _tabs.Select(x => (BaseAssetImporterTabUI) x).ToArray(); + m_TabNames = _tabs.Select(t => t.Label).ToArray(); + } + + public GLTFAssetImporterTab GetTab(int index) + { + if (_tabs == null || _tabs.Count < 1) return null; + if (index < 0) index = 0; + if (index >= _tabs.Count) index = _tabs.Count - 1; + return _tabs[index]; + } + + public override void OnEnable() + { + // sanitize tab index + // from AssetImporterTabbedEditor.cs + if (activeTab == null) + { + var key = GetType().Name + "ActiveEditorIndex"; + var expectedTab = EditorPrefs.GetInt(key, 0); + if (tabs.Length <= expectedTab) + EditorPrefs.SetInt(key, 0); + } + base.OnEnable(); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + } + } + + internal class GLTFAssetImporterTab : BaseAssetImporterTabUI + { + internal readonly string Label; + private readonly Action _tabGui; + + public GLTFAssetImporterTab(AssetImporterEditor panelContainer, string label, Action tabGui) : base(panelContainer) + { + this.Label = label; + this._tabGui = tabGui; + } + + internal override void OnEnable() { } + public override void OnInspectorGUI() => _tabGui?.Invoke(); + } +} diff --git a/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs.meta b/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs.meta new file mode 100644 index 000000000..3e2d81d10 --- /dev/null +++ b/Editor/Scripts/Internal/UnityGLTFTabbedEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 198f536c3cf84dfe9d5617d32d40d7b0 +timeCreated: 1678788492 \ No newline at end of file diff --git a/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs b/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs new file mode 100644 index 000000000..6b4d46c0f --- /dev/null +++ b/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace UnityGLTF +{ + public interface IUnityGltfShaderUpgradeMeta + { + Shader SourceShader { get; } + bool IsUnlit { get; } + bool IsTransparent { get; } + bool IsDoublesided { get; } + } + + public class UnityGltfShaderUpgradeMeta : ScriptableObject + { + public Shader sourceShader; + public bool isTransparent = false; + public bool isDoublesided = false; + + internal string GenerateNameString() + { + var isUnlit = sourceShader && sourceShader.name.Contains("Unlit"); + return (isTransparent ? "_tr" : "") + (isDoublesided ? "_ds" : "") + (isUnlit ? "_unlit" : ""); + } + } +} diff --git a/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs.meta b/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs.meta new file mode 100644 index 000000000..d986ced8a --- /dev/null +++ b/Editor/Scripts/Internal/UnityGltfShaderUpgradeMeta.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 26fa35d7d798408bb796a50daa5a8a6f +timeCreated: 1677690411 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/PbrShaderGUI.cs b/Editor/Scripts/PbrShaderGUI.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/PbrShaderGUI.cs rename to Editor/Scripts/PbrShaderGUI.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/PbrShaderGUI.cs.meta b/Editor/Scripts/PbrShaderGUI.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/PbrShaderGUI.cs.meta rename to Editor/Scripts/PbrShaderGUI.cs.meta diff --git a/Editor/Scripts/Plugins.meta b/Editor/Scripts/Plugins.meta new file mode 100644 index 000000000..b0feb4068 --- /dev/null +++ b/Editor/Scripts/Plugins.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 19691dff57934cda97994d1368964715 +timeCreated: 1680101655 \ No newline at end of file diff --git a/Editor/Scripts/Plugins/GLTFPluginEditor.cs b/Editor/Scripts/Plugins/GLTFPluginEditor.cs new file mode 100644 index 000000000..670d97907 --- /dev/null +++ b/Editor/Scripts/Plugins/GLTFPluginEditor.cs @@ -0,0 +1,102 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + [CustomEditor(typeof(GLTFPlugin), true)] + public class GLTFPluginEditor: Editor + { + // Follows the default implementation of OnInspectorGUI, but skips the script field + public override void OnInspectorGUI() + { + serializedObject.Update(); + var iterator = serializedObject.GetIterator(); + // skip script field + iterator.NextVisible(true); + while (iterator.NextVisible(false)) + EditorGUILayout.PropertyField(iterator, true); + serializedObject.ApplyModifiedProperties(); + } + } + + internal abstract class PackageInstallEditor : GLTFPluginEditor + { + private bool isInstalling = false; + protected abstract string PackageName { get; } + private static GUIStyle IndentedButton; + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + var t = target as GLTFPlugin; + if (!t || string.IsNullOrEmpty(t.Warning)) + { + var rect = GUILayoutUtility.GetLastRect(); + if (Event.current.type == EventType.ContextClick && rect.Contains(Event.current.mousePosition)) + { + var menu = new GenericMenu(); + menu.AddItem(new GUIContent("Uninstall Package"), false, () => { + Client.Remove(PackageName); + }); + menu.ShowAsContext(); + Event.current.Use(); + } + + return; + } + + if (isInstalling) + { + EditorGUI.BeginDisabledGroup(true); + GUILayout.Button("Installing..."); + EditorGUI.EndDisabledGroup(); + return; + } + + EditorGUI.indentLevel++; + if (IndentedButton == null) + { + IndentedButton = new GUIStyle(EditorStyles.miniButton); + IndentedButton.margin = new RectOffset(EditorGUI.indentLevel * 16, 0, 0, 0); + } + + if (GUILayout.Button("Install " + PackageName, IndentedButton)) + { + isInstalling = true; + var request = Client.Add(PackageName); + + void WatchInstall() + { + if (!request.IsCompleted) return; + + isInstalling = false; + if (request.Status >= StatusCode.Failure) + Debug.LogError(request.Error.message); + EditorApplication.update -= WatchInstall; + } + + EditorApplication.update += WatchInstall; + } + EditorGUI.indentLevel--; + } + } + + [CustomEditor(typeof(DracoImport))] + internal class DracoImportEditor : PackageInstallEditor + { + protected override string PackageName => "com.unity.cloud.draco"; + } + + [CustomEditor(typeof(MeshoptImport))] + internal class MeshoptImportEditor : PackageInstallEditor + { + protected override string PackageName => "com.unity.meshopt.decompress"; + } + + [CustomEditor(typeof(Ktx2Import))] + internal class Ktx2ImportEditor : PackageInstallEditor + { + protected override string PackageName => "com.unity.cloud.ktx"; + } +} \ No newline at end of file diff --git a/Editor/Scripts/Plugins/GLTFPluginEditor.cs.meta b/Editor/Scripts/Plugins/GLTFPluginEditor.cs.meta new file mode 100644 index 000000000..8836cc080 --- /dev/null +++ b/Editor/Scripts/Plugins/GLTFPluginEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5df1106545064293aebd7efc2fc87905 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/Plugins/RegisteredImportPlugins.cs b/Editor/Scripts/Plugins/RegisteredImportPlugins.cs new file mode 100644 index 000000000..f7b13d309 --- /dev/null +++ b/Editor/Scripts/Plugins/RegisteredImportPlugins.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + internal static class RegisteredImportPlugins + { + internal static readonly List Plugins = new List(); + + [InitializeOnLoadMethod] + public static void Init() + { + } + + private static void OnAfterGUI(GltfSettingsProvider obj) + { + } + } +} diff --git a/Editor/Scripts/Plugins/RegisteredImportPlugins.cs.meta b/Editor/Scripts/Plugins/RegisteredImportPlugins.cs.meta new file mode 100644 index 000000000..e4f79c76a --- /dev/null +++ b/Editor/Scripts/Plugins/RegisteredImportPlugins.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c336fc934d29489b99919ae62cb2a2c8 +timeCreated: 1680101663 \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph.meta b/Editor/Scripts/ShaderGraph.meta new file mode 100644 index 000000000..337c70c3a --- /dev/null +++ b/Editor/Scripts/ShaderGraph.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f9d8791ed9e9674d871b47bf1c186ea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph.meta new file mode 100644 index 000000000..1bf69ad53 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f708e30d7503fc42998ad4dc358d3d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs new file mode 100644 index 000000000..0be9a1c62 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs @@ -0,0 +1,632 @@ +#if !NO_INTERNALS_ACCESS +#if UNITY_2021_3_OR_NEWER +#define HAVE_BUILTIN_SHADERGRAPH +#define HAVE_CATEGORIES +#endif + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +#if HAVE_BUILTIN_SHADERGRAPH +using UnityEditor.Rendering; +using UnityEditor.Rendering.BuiltIn.ShaderGraph; +#endif +using UnityEngine; +using UnityEngine.Rendering; + +namespace UnityGLTF +{ + public class PBRGraphGUI : +#if HAVE_BUILTIN_SHADERGRAPH + BuiltInBaseShaderGUI +#else + ShaderGUI +#endif + { +#if UNITY_2021_1_OR_NEWER + public override void ValidateMaterial(Material material) + { + base.ValidateMaterial(material); + GLTFMaterialHelper.ValidateMaterialKeywords(material); + } +#endif + + protected MaterialEditor materialEditor; + protected MaterialProperty[] properties; + private MaterialInfo currentMaterialInfo; + +#if HAVE_CATEGORIES + private readonly MaterialHeaderScopeList m_MaterialScopeList = new MaterialHeaderScopeList(uint.MaxValue & ~(uint)Expandable.Advanced); + private const int ExpandableMeshProperties = 1 << 8; + private static readonly GUIContent MeshProperties = new GUIContent("Mesh Properties"); + + private bool immutableMaterialCanBeModified = false; + + public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) + { + this.materialEditor = materialEditor; + this.properties = properties; + + Material targetMat = materialEditor.target as Material; + if (!targetMat || !targetMat.shader) return; + + if (m_FirstTimeApply) + { + OnOpenGUI(targetMat, materialEditor, properties); + + if (MaterialModificationTracker.CanEdit(materialEditor.target as Material)) + immutableMaterialCanBeModified = true; + + m_FirstTimeApply = false; + } + + // Force GUI changes to be allowed, despite being in an immutable context. + // We can store the changes back to .glTF when saving. + if (immutableMaterialCanBeModified) + { + GUI.enabled = true; + EditorGUILayout.HelpBox("This material is part of a glTF asset. If you enable editing (experimental), changes will be stored back to the .glTF file when saving.", MessageType.None); + + // looks like GetInstanceID() changes per import; so we use the path instead + var path = AssetDatabase.GetAssetPath(targetMat) + "_" + targetMat.name; + var materialEditingKey = nameof(PBRGraphGUI) + ".AllowGltfMaterialEditing." + path; + var isAllowed = SessionState.GetBool(materialEditingKey, false); + var allowMaterialEditing = EditorGUILayout.Toggle("Allow Editing", isAllowed); + if (allowMaterialEditing != isAllowed) + SessionState.SetBool(materialEditingKey, allowMaterialEditing); + + if (allowMaterialEditing) + EditorGUILayout.HelpBox("glTF editing is enabled. This is highly experimental. Make sure you have a backup!", MessageType.Warning); + + GUI.enabled = allowMaterialEditing; + EditorGUILayout.Space(); + } + + // Need to set these via reflection... + // m_MaterialEditor = materialEditor; + // m_Properties = properties; + if (m_MaterialEditor == null) m_MaterialEditor = typeof(BuiltInBaseShaderGUI).GetField(nameof(m_MaterialEditor), BindingFlags.Instance | BindingFlags.NonPublic); + if (m_Properties == null) m_Properties = typeof(BuiltInBaseShaderGUI).GetField(nameof(m_Properties), BindingFlags.Instance | BindingFlags.NonPublic); + + if (m_MaterialEditor == null || m_Properties == null) + { + Debug.LogError("Internal fields \"m_MaterialEditor\" and/or \"m_Properties\" not found on type BuiltInBaseShaderGUI. Please report this error to the UnityGLTF developers along with the Unity version you're using, there has probably been a Unity API change."); + return; + } + + m_MaterialEditor.SetValue(this, materialEditor); + m_Properties.SetValue(this, properties); + + var assetPath = AssetDatabase.GetAssetPath(targetMat); + var fullPath = string.IsNullOrEmpty(assetPath) ? "" : System.IO.Path.GetFullPath(assetPath); + var isMutable = string.IsNullOrEmpty(assetPath) && !fullPath.Contains("Library/PackageCache") && !fullPath.Contains("Library\\PackageCache"); + if (targetMat && targetMat.shader.name.StartsWith("Hidden/UnityGLTF")) + { + if (isMutable) + { + DrawFixMeBox("This is a legacy shader. Please click \"Fix\" to upgrade to PBRGraph/UnlitGraph.", MessageType.Warning, () => + { + var isUnlit = targetMat.shader.name.Contains("Unlit"); + var newShaderGuid = isUnlit ? "59541e6caf586ca4f96ccf48a4813a51" : "478ce3626be7a5f4ea58d6b13f05a2e4"; + var newShader = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(newShaderGuid)); + Undo.RegisterCompleteObjectUndo(targetMat, "Convert to UnityGltf shader"); + GLTFMaterialHelper.ConvertMaterialToGLTF(targetMat, targetMat.shader, newShader); + }); + } + else + { + DrawFixMeBox("This is a legacy shader. Upgrade to PBRGraph/UnlitGraph for more options.", MessageType.Warning, null); + } + } + + m_MaterialScopeList.DrawHeaders(materialEditor, targetMat); + } + + private FieldInfo m_MaterialEditor; + private FieldInfo m_Properties; + + public override void OnOpenGUI(Material material, MaterialEditor materialEditor, MaterialProperty[] properties) + { + m_MaterialScopeList.RegisterHeaderScope(Styles.SurfaceOptions, (uint)Expandable.SurfaceOptions, DrawSurfaceOptions); + m_MaterialScopeList.RegisterHeaderScope(MeshProperties, (uint)ExpandableMeshProperties, DrawGameObjectInfo); + m_MaterialScopeList.RegisterHeaderScope(Styles.SurfaceInputs, (uint)Expandable.SurfaceInputs, DrawSurfaceInputs); + m_MaterialScopeList.RegisterHeaderScope(Styles.AdvancedLabel, (uint)Expandable.Advanced, DrawAdvancedOptions); + } + + protected override void DrawAdvancedOptions(Material material) + { + base.DrawAdvancedOptions(material); + materialEditor.EnableInstancingField(); + } +#else + public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) + { + this.materialEditor = materialEditor; + this.properties = properties; + + Material targetMat = materialEditor.target as Material; + + DrawGameObjectInfo(targetMat); +#if !UNITY_2021_1_OR_NEWER + DrawSurfaceOptions(targetMat); +#endif + _DrawSurfaceInputs(targetMat); + } +#endif + + private struct MaterialInfo + { + public bool hasColor; + public bool hasUV0; + public bool hasUV1; + public int occlusionTextureTexCoord; + public int baseColorTextureTexCoord; + } + + private static bool HasAnyTextureAssigned(Material targetMaterial) + { + var s = targetMaterial.shader; + var propertyCount = ShaderUtil.GetPropertyCount(s); + for (var i = 0; i < propertyCount; i++) + { + if (ShaderUtil.GetPropertyType(s, i) != ShaderUtil.ShaderPropertyType.TexEnv) continue; + if (ShaderUtil.IsShaderPropertyHidden(s, i)) continue; + var tex = targetMaterial.GetTexture(ShaderUtil.GetPropertyName(s, i)); + if (tex) return true; + } + return false; + } + +#if !UNITY_2021_1_OR_NEWER + private static readonly Dictionary ShaderNameToGuid = new Dictionary() + { + { "UnityGLTF/PBRGraph", "478ce3626be7a5f4ea58d6b13f05a2e4" }, + { "UnityGLTF/PBRGraph-Transparent", "0a931320a74ca574b91d2d7d4557dcf1" }, + { "UnityGLTF/PBRGraph-Transparent-Double", "54352a53405971b41a6587615f947085" }, + { "UnityGLTF/PBRGraph-Double", "8bc739b14fe811644abb82057b363ba8" }, + + { "UnityGLTF/UnlitGraph", "59541e6caf586ca4f96ccf48a4813a51" }, + { "UnityGLTF/UnlitGraph-Transparent", "83f2caca07949794fb997734c4b0520f" }, + { "UnityGLTF/UnlitGraph-Transparent-Double", "8a8841b4fb2f63644896f4e2b36bc06d" }, + { "UnityGLTF/UnlitGraph-Double", "33ee70a7f505ddb4e80d235c3d70766d" }, + }; + + private void DrawSurfaceOptions(Material targetMaterial) + { + EditorGUILayout.Space(); + + var shaderName = targetMaterial.shader.name.Replace("Hidden/", ""); + var isTransparent = shaderName.Contains("-Transparent"); + var isDoubleSided = shaderName.Contains("-Double"); + var isCutout = targetMaterial.GetFloat("alphaCutoff") >= 0; + var indexOfDash = shaderName.IndexOf("-", StringComparison.Ordinal); + var baseShaderName = indexOfDash < 0 ? shaderName : shaderName.Substring(0, indexOfDash); + // EditorGUILayout.LabelField("Shader Name", baseShaderName); + + void SetShader() + { + var newName = baseShaderName + (isTransparent ? "-Transparent" : "") + (isDoubleSided ? "-Double" : ""); + Undo.RegisterCompleteObjectUndo(targetMaterial, "Set Material Options"); + targetMaterial.shader = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(ShaderNameToGuid[newName])); + var currentCutoff = targetMaterial.GetFloat("alphaCutoff"); + if (!isCutout && currentCutoff == 0) currentCutoff = -0.0001f; // Hack to ensure we can actually switch states here + targetMaterial.SetFloat("alphaCutoff", Mathf.Abs(currentCutoff) * (isCutout ? 1 : -1)); + } + + var newT = EditorGUILayout.Toggle("Transparent", isTransparent); + if (newT != isTransparent) + { + isTransparent = newT; + SetShader(); + } + var newD = EditorGUILayout.Toggle("Double Sided", isDoubleSided); + if (newD != isDoubleSided) + { + isDoubleSided = newD; + SetShader(); + } + var newA = EditorGUILayout.Toggle("Cutout", isCutout); + if (newA != isCutout) + { + isCutout = newA; + SetShader(); + } + + EditorGUILayout.Space(); + } +#endif + + private void DrawGameObjectInfo(Material targetMaterial) + { + var singleSelection = Selection.objects != null && Selection.objects.Length < 2; + + // Strict Mode + // - texture transforms only for baseColorTexture, is used for all others as well + // - occlusion MUST use UV2 if present + var renderer = ShaderGraphHelpers.GetRendererForMaterialEditor(materialEditor); + var haveDrawnSomething = false; + + if (renderer && !singleSelection) + { + EditorGUI.BeginDisabledGroup(true); + EditorGUI.showMixedValue = true; + EditorGUILayout.ObjectField("Target Mesh", null, typeof(Mesh), true); + EditorGUI.showMixedValue = false; + EditorGUI.EndDisabledGroup(); + EditorGUILayout.HelpBox("Multiple objects selected. Can't show mesh properties.", MessageType.Info); + haveDrawnSomething = true; + } + + currentMaterialInfo.hasColor = true; + currentMaterialInfo.hasUV0 = true; + currentMaterialInfo.hasUV1 = true; + currentMaterialInfo.occlusionTextureTexCoord = targetMaterial.HasProperty("occlusionTextureTexCoord") ? Mathf.RoundToInt(targetMaterial.GetFloat("occlusionTextureTexCoord")) : 0; + currentMaterialInfo.baseColorTextureTexCoord = targetMaterial.HasProperty("baseColorTextureTexCoord") ? Mathf.RoundToInt(targetMaterial.GetFloat("baseColorTextureTexCoord")) : 0; + + if (renderer && singleSelection) + { + var mesh = default(Mesh); + if (renderer is SkinnedMeshRenderer smr) + mesh = smr.sharedMesh; + else if (renderer is MeshRenderer mr && mr.GetComponent()) + mesh = mr.GetComponent()?.sharedMesh; + + if (mesh) + { + currentMaterialInfo.hasColor = mesh.HasVertexAttribute(VertexAttribute.Color); + currentMaterialInfo.hasUV0 = mesh.HasVertexAttribute(VertexAttribute.TexCoord0); + currentMaterialInfo.hasUV1 = mesh.HasVertexAttribute(VertexAttribute.TexCoord1); + + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Target Mesh", mesh, typeof(Mesh), true); + EditorGUILayout.Toggle("Has Vertex Colors", currentMaterialInfo.hasColor); + EditorGUI.EndDisabledGroup(); + + if (currentMaterialInfo.hasColor != targetMaterial.IsKeywordEnabled("_VERTEX_COLORS_ON")) + { + EditorGUI.indentLevel++; + var msg = ""; + var msgType = MessageType.Info; + if (currentMaterialInfo.hasColor) + { + msg = "Mesh has vertex colors but \"Enable Vertex Colors\" is off. Exported glTF files will look different since vertex color is stored per-mesh, not per-material."; + msgType = MessageType.Warning; + } + // else + // { + // // doesn't really make sense to encourage turning vertex colors OFF - export will have them anyways. + // EditorGUILayout.HelpBox("Mesh has no vertex colors but \"Enable Vertex Colors\" is on.", MessageType.Info); + // } + + if (!string.IsNullOrEmpty(msg)) + { + DrawFixMeBox(msg, msgType, () => + { + if (currentMaterialInfo.hasColor) + { + targetMaterial.EnableKeyword("_VERTEX_COLORS_ON"); + targetMaterial.SetFloat("_VERTEX_COLORS", 1); + } + else + { + targetMaterial.DisableKeyword("_VERTEX_COLORS_ON"); + targetMaterial.SetFloat("_VERTEX_COLORS", 0); + } + }); + } + EditorGUI.indentLevel--; + } + + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.Toggle("Has UV0", currentMaterialInfo.hasUV0); + EditorGUILayout.Toggle("Has UV1", currentMaterialInfo.hasUV1); + EditorGUI.EndDisabledGroup(); + + if (!currentMaterialInfo.hasUV0 && HasAnyTextureAssigned(targetMaterial)) + { + EditorGUI.indentLevel++; + EditorGUILayout.HelpBox("This mesh has no UV coordinates but has textures assigned.", MessageType.Warning); + EditorGUI.indentLevel--; + } + + if (currentMaterialInfo.hasUV1 && targetMaterial.HasProperty("occlusionTexture") && targetMaterial.GetTexture("occlusionTexture")) + { + EditorGUI.indentLevel++; + var texCoord = Mathf.RoundToInt(targetMaterial.GetFloat("occlusionTextureTexCoord")); + if (texCoord != 1) + { + DrawFixMeBox("This mesh has an Occlusion Texture and UV1 vertex data.\nWhen exporting to three.js, UV1 will be used independent of TexCoord setting.", MessageType.Warning, () => + { + Undo.RegisterCompleteObjectUndo(targetMaterial, "Set occlusionTextureTexCoord to 1"); + targetMaterial.SetFloat("occlusionTextureTexCoord", 1); + }); + } + EditorGUI.indentLevel--; + } + + if (!currentMaterialInfo.hasUV1) + { + if (currentMaterialInfo.baseColorTextureTexCoord > 0) + { + DrawFixMeBox("This mesh does not have UV1 vertex data but Base Texture is set to use UV1. This will lead to unexpected results.", MessageType.Warning, () => + { + Undo.RegisterCompleteObjectUndo(targetMaterial, "Set baseColorTextureTexCoord to 0"); + targetMaterial.SetFloat("baseColorTextureTexCoord", 0); + }); + } + if (currentMaterialInfo.occlusionTextureTexCoord > 0) + { + DrawFixMeBox("This mesh does not have UV1 vertex data but Occlusion Texture is set to use UV1. This will lead to unexpected results.", MessageType.Warning, () => + { + Undo.RegisterCompleteObjectUndo(targetMaterial, "Set occlusionTextureTexCoord to 0"); + targetMaterial.SetFloat("occlusionTextureTexCoord", 0); + }); + } + } + + // check if this uses transmission + // TODO we need to expose some kind of interface so that other scripts (e.g. the rough refraction components) + // can attach to this inspector here. + /* + if (targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON")) + { + // requires extra setup for BiRP / URP to render properly + if (!GraphicsSettings.currentRenderPipeline && !Camera.main.gameObject.GetComponent()) + { + // warn + } + else + { + // check if assigned renderer has the rough refraction feature, offer to add it otherwise + Camera.main.gameObject.GetComponent() + } + } + */ + } + haveDrawnSomething = true; + } + + if (targetMaterial.HasProperty("_Surface") && targetMaterial.GetFloat("_Surface") == 0 && + targetMaterial.renderQueue <= (int) RenderQueue.AlphaTest + 50 && + !Mathf.Approximately(targetMaterial.GetColor("baseColorFactor").a, 1)) + { + DrawFixMeBox("Material is opaque but baseColorFactor has an alpha value != 1. This object might render unexpectedly in some viewers that blend results (e.g. AR, Babylon, Stager).", MessageType.Warning, () => + { + Undo.RegisterCompleteObjectUndo(materialEditor.targets, "Set baseColorFactor.a to 1"); + foreach (var t in materialEditor.targets) + { + var mat = (Material)t; + var color = mat.GetColor("baseColorFactor"); + color.a = 1; + mat.SetColor("baseColorFactor", color); + EditorUtility.SetDirty(mat); + } + }); + haveDrawnSomething = true; + } + + if (!renderer && !haveDrawnSomething) + { + EditorGUILayout.HelpBox("Select a Renderer to see additional info", MessageType.None); + } + } + + private static void DrawFixMeBox(string msg, MessageType msgType, Action action) + { +#if HAVE_BUILTIN_SHADERGRAPH && false + CoreEditorUtils.DrawFixMeBox(msg, msgType, action); +#else + EditorGUILayout.HelpBox(msg, msgType); + if (action != null && GUILayout.Button("Fix")) action(); +#endif + } + +#if HAVE_CATEGORIES + protected override void DrawSurfaceInputs(Material mat) => _DrawSurfaceInputs(mat); +#endif + protected void _DrawSurfaceInputs(Material mat) + { + var targetMaterial = materialEditor.target as Material; + if (!targetMaterial) return; + + + materialEditor.SetDefaultGUIWidths(); + + EditorGUI.BeginChangeCheck(); + + DrawProperties(targetMaterial, properties); + + if (EditorGUI.EndChangeCheck()) + { + foreach (var t in materialEditor.targets) + { + if (t is Material material) + GLTFMaterialHelper.ValidateMaterialKeywords(material); + } + + // We only need to do this for non-editable materials, so we can flush the changes back out to disk. + // These can be sub-assets of a ScriptedImporter or the main asset. + // We probably only want to allow storing material changes back to .gltf; to be discussed. + // TODO if textures are assigned, we need to think about how to handle that, as they should be externally referenced and not written to disk + if (targetMaterial.hideFlags.HasFlag(HideFlags.NotEditable)) + MaterialModificationTracker.MarkDirty(targetMaterial); + } + } + + private static bool HasPropertyButNoTex(Material targetMaterial, string name) + { + // turns out HasProperty can return true when someone sets the property on a material - but the shader doesn't actually have that property + var hasProperty = targetMaterial.shader.FindPropertyIndex(name) > -1; +#if UNITY_2021_2_OR_NEWER + hasProperty &= targetMaterial.HasTexture(name); +#endif + return hasProperty && !targetMaterial.GetTexture(name); + } + + private void DrawProperties(Material targetMaterial, MaterialProperty[] properties) + { + // filter properties based on keywords + var propertyList = properties.ToList(); + if (!targetMaterial.IsKeywordEnabled("_TEXTURE_TRANSFORM_ON")) + { + propertyList.RemoveAll(x => x.name.EndsWith("_ST", StringComparison.Ordinal) || x.name.EndsWith("Rotation", StringComparison.Ordinal)); + + // Unity draws the tiling & offset properties based on the scale offset flag, so we need to ensure that's off here + // so that the property fields are not displayed. Otherwise it's confusing that editing them doesn't do anything. + foreach (var prop in propertyList) + { + if (prop.type == MaterialProperty.PropType.Texture) + ShaderGraphHelpers.SetNoScaleOffset(prop); + } + } + // want to remove the _ST properties since they are drawn inline already on 2021.2+ + #if UNITY_2021_2_OR_NEWER + { + propertyList.RemoveAll(x => x.name.EndsWith("_ST", StringComparison.Ordinal)); + } + #endif + if (!targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON")) + { + propertyList.RemoveAll(x => x.name.StartsWith("transmission", StringComparison.Ordinal)); + } + if (!targetMaterial.HasProperty("_VOLUME_ON") || !(targetMaterial.GetFloat("_VOLUME_ON") > 0.5f)) + { + propertyList.RemoveAll(x => x.name.StartsWith("thickness", StringComparison.Ordinal) || x.name.StartsWith("attenuation", StringComparison.Ordinal)); + } + if (!targetMaterial.IsKeywordEnabled("_IRIDESCENCE_ON")) + { + propertyList.RemoveAll(x => x.name.StartsWith("iridescence", StringComparison.Ordinal)); + } + if (!targetMaterial.IsKeywordEnabled("_SPECULAR_ON")) + { + propertyList.RemoveAll(x => x.name.StartsWith("specular", StringComparison.Ordinal)); + } + if (!targetMaterial.IsKeywordEnabled("_CLEARCOAT_ON")) + { + propertyList.RemoveAll(x => x.name.StartsWith("clearcoat", StringComparison.Ordinal)); + } + if (HasPropertyButNoTex(targetMaterial, "occlusionTexture")) + { + propertyList.RemoveAll(x => x.name == "occlusionStrength" || (x.name.StartsWith("occlusionTexture", StringComparison.Ordinal) && x.name != "occlusionTexture")); + } + // remove UV-related properties + if (HasPropertyButNoTex(targetMaterial, "baseColorTexture") && HasPropertyButNoTex(targetMaterial,"metallicRoughnessTexture") && HasPropertyButNoTex(targetMaterial,"normalTexture") && HasPropertyButNoTex(targetMaterial,"emissiveTexture")) + { + propertyList.RemoveAll(x => x.name.StartsWith("baseColorTexture", StringComparison.Ordinal) && x.name != "baseColorTexture"); + } + if (HasPropertyButNoTex(targetMaterial,"normalTexture")) + { + propertyList.RemoveAll(x => x.name == "normalScale"); + } + if (!currentMaterialInfo.hasUV0 && !currentMaterialInfo.hasUV1) + { + // hide all texture properties if no UVs + propertyList.RemoveAll(x => x.name.Contains("texture")); + } + if (!currentMaterialInfo.hasUV1 && currentMaterialInfo.occlusionTextureTexCoord == 0 && currentMaterialInfo.baseColorTextureTexCoord == 0) + { + propertyList.RemoveAll(x => x.name.EndsWith("TextureTexCoord", StringComparison.Ordinal)); + } + +#if UNITY_2021_1_OR_NEWER + var isBirp = !GraphicsSettings.currentRenderPipeline; + if ((isBirp && !targetMaterial.IsKeywordEnabled("_BUILTIN_ALPHATEST_ON")) || + (!isBirp && !targetMaterial.IsKeywordEnabled("_ALPHATEST_ON"))) +#else + if (targetMaterial.GetFloat("alphaCutoff") < 0) +#endif + { + propertyList.RemoveAll(x => x.name == "alphaCutoff"); + } + + // remove advanced properties that we want to draw a foldout for + var overrideSurfaceMode = propertyList.FirstOrDefault(x => x.name == "_OverrideSurfaceMode"); + var normalMapFormatXYZ = propertyList.FirstOrDefault(x => x.name == "_NormalMapFormatXYZ"); + if (overrideSurfaceMode != null) propertyList.Remove(overrideSurfaceMode); + if (normalMapFormatXYZ != null) propertyList.Remove(normalMapFormatXYZ); + + // TODO we probably want full manual control, all this internal access is horrible... + // E.g. impossible to render inline texture properties... + ShaderGraphHelpers.DrawShaderGraphGUI(materialEditor, propertyList); + + // draw a foldout with the advanced properties + const string key = nameof(PBRGraphGUI) + "_AdvancedFoldout"; + var val = SessionState.GetBool(key, false); + var newVal = EditorGUILayout.Foldout(val, "Mode Overrides", true); + if (newVal != val) SessionState.SetBool(key, newVal); + if (newVal) + { + EditorGUI.indentLevel++; + if (overrideSurfaceMode != null) materialEditor.ShaderProperty(overrideSurfaceMode, + new GUIContent(overrideSurfaceMode.displayName, "When disabled, surface mode and queue are set by default based on material options. For example, transmissive objects will be set to \"transparent\". For some cases, explicit control over the surface mode helps with render order, e.g. nested transparency sorting.")); + if (normalMapFormatXYZ != null) materialEditor.ShaderProperty(normalMapFormatXYZ, + new GUIContent(normalMapFormatXYZ.displayName, "When disabled, normal maps are assumed to be in the specified project format (XYZ or DXT5nm). Normal maps imported at runtime are always in XYZ, so this option is enabled for materials imported at runtime.")); + EditorGUI.indentLevel--; + } + } + + public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader) + { + GLTFMaterialHelper.ConvertMaterialToGLTF(material, oldShader, newShader); + } + + public delegate void OnImmutableMaterialChanged(Material material); + public static event OnImmutableMaterialChanged ImmutableMaterialChanged; + + internal static void InvokeMaterialChangedEvent(Material material) + { + try + { + ImmutableMaterialChanged?.Invoke(material); + } + catch (Exception e) + { + Debug.LogException(e); + } + } + } + + // TODO check if we can lose in-flight changes on domain reload this way + internal class MaterialModificationTracker : AssetModificationProcessor + { + private static readonly List ObjectsToSave = new List(); + private static readonly Dictionary CanEditCache = new Dictionary(); + + internal static void MarkDirty(UnityEngine.Object obj) + { + if (!ObjectsToSave.Contains(obj)) + ObjectsToSave.Add(obj); + } + + private static string[] OnWillSaveAssets(string[] paths) + { + // we don't really care about the assets, we just want to flush changes for changed glTF materials + var copy = new List(ObjectsToSave); + foreach (var obj in copy) + { + if (obj is Material material) + { + PBRGraphGUI.InvokeMaterialChangedEvent(material); + } + } + copy.Clear(); + ObjectsToSave.Clear(); + return paths; + } + + internal static bool CanEdit(Material materialEditorTarget) + { + if (CanEditCache.TryGetValue(materialEditorTarget, out var canEdit)) + return canEdit; + + // we can only edit this material if it's from a .gltf file right now. We're caching this here to avoid having to re-parse the file + canEdit = AssetDatabase.GetAssetPath(materialEditorTarget).EndsWith(".gltf", StringComparison.OrdinalIgnoreCase); + CanEditCache.Add(materialEditorTarget, canEdit); + return canEdit; + } + } +} + +#endif diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs.meta new file mode 100644 index 000000000..a96df2a0a --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/PBRGraphGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7fd38ac84daf5a14180dde4bc5949e25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs new file mode 100644 index 000000000..9eccbeeed --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs @@ -0,0 +1,92 @@ +#if !NO_INTERNALS_ACCESS +#if UNITY_2021_3_OR_NEWER +#define HAVE_CATEGORIES +#endif + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +#if HAVE_CATEGORIES +using UnityEditor.ShaderGraph.Drawing; +#endif +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; + +namespace UnityGLTF +{ + public static class ShaderGraphHelpers + { + private static FieldInfo m_Flags; + + public static void DrawShaderGraphGUI(MaterialEditor materialEditor, List properties) + { +#if HAVE_CATEGORIES + ShaderGraphPropertyDrawers.DrawShaderGraphGUI(materialEditor, properties); +#else + if (m_Flags == null) m_Flags = typeof(MaterialProperty).GetField("m_Flags", (BindingFlags)(-1)); + + // This is a workaround for serialization bug IN-16486 + // Changes made to texture with a specific a _ST property marked as [NoScaleOffset] in the Inspector are shown but not saved + // We're explicitly removing the _ST property from the list of properties to be drawn, + // and we mark all textures that actually have _ST properties so that they're rendering inline properties again. + if (m_Flags != null) + { + var names = properties.Select(x => x.name).ToList(); + var removals = new List(); + foreach (var p in properties) + { + if (p.flags.HasFlag(MaterialProperty.PropFlags.NoScaleOffset) && names.Contains(p.name + "_ST")) + m_Flags.SetValue(p, (ShaderPropertyFlags) m_Flags.GetValue(p) & ~ShaderPropertyFlags.NoScaleOffset); + + if (p.name.EndsWith("_ST", StringComparison.Ordinal) && p.type == MaterialProperty.PropType.Vector) + removals.Add(p); + } + + foreach (var r in removals) + properties.Remove(r); + } + + materialEditor.PropertiesDefaultGUI(properties.ToArray()); +#endif + } + + private static Type propertyView; + private static PropertyInfo propertyViewer; + private static PropertyInfo tracker; + + // matches logic in MaterialEditor.ShouldEditorBeHidden to find the right renderer this material is inspected on. + public static Renderer GetRendererForMaterialEditor(MaterialEditor materialEditor) + { + if (propertyViewer == null) propertyViewer = typeof(Editor).GetProperty(nameof(propertyViewer), BindingFlags.Instance | BindingFlags.NonPublic); + if (propertyView == null) propertyView = typeof(Editor).Assembly.GetType("UnityEditor.IPropertyView"); + if (tracker == null) tracker = propertyView?.GetProperty("tracker", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + + var iPropertyViewer = propertyViewer?.GetValue(materialEditor) as Object; + if (!iPropertyViewer) return null; + + var editorTracker = tracker?.GetValue(iPropertyViewer) as ActiveEditorTracker; + if (editorTracker == null) return null; + + GameObject target = editorTracker.activeEditors[0].target as GameObject; + if (!target) return null; + Renderer c = target.GetComponent(); + if (!c) c = target.GetComponent(); + return c; + } + + [Obsolete("Use GLTFMaterialHelper.ValidateMaterialKeywords instead. (UnityUpgradeable) -> UnityGLTF.GLTFMaterialHelper.ValidateMaterialKeywords", false)] + public static void ValidateMaterialKeywords(Material material) {} + + public static void SetNoScaleOffset(MaterialProperty prop) + { + if (m_Flags == null) m_Flags = typeof(MaterialProperty).GetField("m_Flags", (BindingFlags)(-1)); + if (m_Flags == null) return; + m_Flags.SetValue(prop, (ShaderPropertyFlags) m_Flags.GetValue(prop) | ShaderPropertyFlags.NoScaleOffset); + } + } +} + +#endif diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs.meta new file mode 100644 index 000000000..27c4a3adc --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a60cd145bbb31542ab7932da93de3f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs new file mode 100644 index 000000000..8e93b1a69 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs @@ -0,0 +1,108 @@ +#if !NO_INTERNALS_ACCESS && UNITY_2020_1_OR_NEWER + +using System.IO; +using UnityEditor; +using UnityEditor.ShaderGraph; +using UnityEngine; +#if UNITY_2020_2_OR_NEWER +using UnityEditor.AssetImporters; +#else +using UnityEditor.Experimental.AssetImporters; +#endif + +namespace UnityGLTF +{ + [ScriptedImporter(0, ".override-graph", -500)] + internal class ShaderGraphOverrideImporter : ShaderGraphImporter, IUnityGltfShaderUpgradeMeta + { + [HideInInspector] + public Shader sourceShader; + + [HideInInspector] + public Shader upgradeShader; + + public bool forceTransparent = true; + public bool forceDoublesided = false; + public bool hideShader = true; + + public Shader SourceShader => sourceShader; + public bool IsTransparent => forceTransparent; + public bool IsDoublesided => forceDoublesided; + public bool IsUnlit => sourceShader.name.Contains("Unlit"); + + public override void OnImportAsset(AssetImportContext ctx) + { + if (!sourceShader) + return; + +#if UNITY_2021_1_OR_NEWER && false + // we don't need extra shaders on 2021.1+, + // as Shader Graph allows overriding the material properties there. + // but we do want to allow upgrading the materials, so we need to import something and allow upgrading through ShaderGraphUpdater + + var meta = ScriptableObject.CreateInstance(); + meta.name = "Shader Upgrade Meta"; + meta.hideFlags = HideFlags.HideInInspector; + meta.sourceShader = sourceShader; + meta.isTransparent = forceTransparent; + meta.isDoublesided = forceDoublesided; + + const string shaderName = "Hidden/UnityGltf/UpgradeShader"; + var shaderText = File.ReadAllText(AssetDatabase.GetAssetPath(upgradeShader)) + .Replace(shaderName, shaderName + meta.GenerateNameString()); + var shader = ShaderUtil.CreateShaderAsset(ctx, shaderText, true); + ctx.AddObjectToAsset("MainAsset", shader); + ctx.AddObjectToAsset("UpgradeMeta", meta); + ctx.SetMainObject(shader); +#else + // cache write time, we want to reset the file again afterwards + var lastWriteTimeUtc = File.GetLastWriteTimeUtc(ctx.assetPath); + + var path = AssetDatabase.GetAssetPath(sourceShader); + ctx.DependsOnArtifact(AssetDatabase.GUIDFromAssetPath(path)); + var graphData = File.ReadAllText(path); + +#if UNITY_2021_1_OR_NEWER + // disable material overrides on 2021.1+ - we want people to use the proper shader for that + graphData = graphData.Replace("\"m_AllowMaterialOverride\": true", "\"m_AllowMaterialOverride\": false"); +#endif + + // modify: + // switch to transparent + if (forceTransparent) + graphData = graphData.Replace("\"m_SurfaceType\": 0", "\"m_SurfaceType\": 1"); + + // for 2021+ + // if (forceDoublesided) + // graphData = graphData + // .Replace("\"m_RenderFace\": 2", "\"m_RenderFace\": 0") + // .Replace("\"m_RenderFace\": 1", "\"m_RenderFace\": 0"); + + // for 2020+ + if (forceDoublesided) + if (!graphData.Contains("m_TwoSided")) + graphData = graphData + .Replace("\"m_SurfaceType\": 0", "\"m_SurfaceType\": 0" + ",\n" + "\"m_TwoSided\": true") + .Replace("\"m_SurfaceType\": 1", "\"m_SurfaceType\": 1" + ",\n" + "\"m_TwoSided\": true"); + else + graphData = graphData.Replace("\"m_TwoSided\": false", "\"m_TwoSided\": true"); + + if (hideShader) + graphData = graphData.Replace("\"m_Path\": \"", "\"m_Path\": \"Hidden/"); + + File.WriteAllText(ctx.assetPath, graphData); + + // run import on the modified shader + base.OnImportAsset(ctx); + + // clean the file on disk again + File.WriteAllText(ctx.assetPath, ""); + + // reset write time to what it was before - avoids AssetDB reload + File.SetLastWriteTimeUtc(ctx.assetPath, lastWriteTimeUtc); +#endif + } + } +} + +#endif diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs.meta new file mode 100644 index 000000000..0ea1814b6 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe431e399c52971408121c6c40cde979 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs new file mode 100644 index 000000000..ef9410c6d --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs @@ -0,0 +1,26 @@ +#if !NO_INTERNALS_ACCESS && UNITY_2020_1_OR_NEWER + +using UnityEditor; +#if UNITY_2020_2_OR_NEWER +using UnityEditor.AssetImporters; +#else +using UnityEditor.Experimental.AssetImporters; +#endif + +namespace UnityGLTF +{ + [CustomEditor(typeof(ShaderGraphOverrideImporter))] + class ShaderGraphOverrideImporterEditor : ScriptedImporterEditor + { + public override void OnInspectorGUI() + { +#if UNITY_2021_1_OR_NEWER + EditorGUILayout.HelpBox("Deprecated. Use material overrides on UnityGLTF/PBRGraph and UnityGLTF/UnlitGraph instead of separate shaders.", MessageType.Warning); +#endif + DrawDefaultInspector(); + ApplyRevertGUI(); + } + } +} + +#endif diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs.meta new file mode 100644 index 000000000..8215707a7 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/ShaderGraphOverrideImporterEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 511b21f4c3344c54689aed102b11724a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref b/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref new file mode 100644 index 000000000..6f5b7c273 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:be0903cd8e1546f498710afdc59db5eb" +} \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref.meta b/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref.meta new file mode 100644 index 000000000..87c0b661c --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalShaderGraph/UnityGLTF.ShaderGraph.Internal.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d60ff41bbebf9024dac1e4f0dc004a57 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalURP.meta b/Editor/Scripts/ShaderGraph/InternalURP.meta new file mode 100644 index 000000000..6cc4398c6 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalURP.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f369a0c649cfa54799cb62645da047f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs b/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs new file mode 100644 index 000000000..64157198a --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs @@ -0,0 +1,57 @@ +#if !NO_INTERNALS_ACCESS +#if UNITY_2021_3_OR_NEWER +#define HAVE_CATEGORIES +#endif + +using System; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace UnityGLTF +{ + // matches ShaderGraphLitGUI.cs + public class PBRGraphUniversalGUI : PBRGraphGUI + { +#if HAVE_CATEGORIES + private PropertyInfo materialEditorPropertyAccessor; + private ShaderGraphLitGUI litGuiForwarder; + + public override void ValidateMaterial(Material material) + { + if (material == null) throw new ArgumentNullException(nameof(material)); + + base.ValidateMaterial(material); + + var automaticRenderQueue = GetAutomaticQueueControlSetting(material); + BaseShaderGUI.UpdateMaterialSurfaceOptions(material, automaticRenderQueue); + } + + protected override void DrawSurfaceOptions(Material material) + { + if (material == null) throw new ArgumentNullException(nameof(material)); + + // Use default labelWidth + EditorGUIUtility.labelWidth = 0f; + + if (litGuiForwarder == null) litGuiForwarder = new ShaderGraphLitGUI(); + if (materialEditorPropertyAccessor == null) materialEditorPropertyAccessor = typeof(BaseShaderGUI).GetProperty("materialEditor", (BindingFlags) (-1)); + if (materialEditorPropertyAccessor != null) materialEditorPropertyAccessor.SetValue(litGuiForwarder, materialEditor); // forwarder.materialEditor = materialEditor; + + litGuiForwarder.FindProperties(properties); + litGuiForwarder.workflowMode = null; + litGuiForwarder.DrawSurfaceOptions(material); + } + + protected override void DrawAdvancedOptions(Material material) + { + base.DrawAdvancedOptions(material); + + materialEditor.DoubleSidedGIField(); + materialEditor.LightmapEmissionFlagsProperty(0, enabled: true, ignoreEmissionColor: true); + } +#endif + } +} + +#endif diff --git a/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs.meta b/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs.meta new file mode 100644 index 000000000..6a8f99093 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalURP/PBRGraphUniversalGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86a2b51891c425a468a0a4d61f8b2a6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref b/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref new file mode 100644 index 000000000..583b71c76 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:c579267770062bf448e75eb160330b7f" +} \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref.meta b/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref.meta new file mode 100644 index 000000000..0c6e13448 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/InternalURP/UnityGLTF.URP.Internal.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cd3b604407efbd641a4d40520de58a76 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs new file mode 100644 index 000000000..fc1d6993b --- /dev/null +++ b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs @@ -0,0 +1,94 @@ +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace UnityGLTF +{ + internal static class MaterialEditorBridge + { + [InitializeOnLoadMethod] + private static void ConnectGltfExporterToPbrGraphGUI() + { + PBRGraphGUI.ImmutableMaterialChanged += OnImmutableMaterialChanged; + } + + private static void OnImmutableMaterialChanged(Material material) + { + if (!material) return; + if (!AssetDatabase.Contains(material)) return; + + var assetPath = AssetDatabase.GetAssetPath(material); + + // TODO handle case where mainAsset is a GameObject; we can still write materials back in that case + // var mainAsset = AssetDatabase.LoadMainAssetAtPath(assetPath); + + // Transform[] rootTransforms = null; + var exporter = new GLTFSceneExporter((Transform[]) null, new ExportContext()); + // load all materials from mainAsset + var importer = AssetImporter.GetAtPath(assetPath) as GLTFImporter; + if (!importer) return; + + // var allObjects = AssetDatabase.LoadAllAssetsAtPath(assetPath); + foreach (var obj in importer.m_Materials) + { + if (!(obj is Material mat)) + { + // TODO warn that there are extra objects we can't store right now + continue; + } + + exporter.ExportMaterial(mat); + } + + var path = Path.GetDirectoryName(assetPath); + var name = Path.GetFileName(assetPath); + + // Save file and make sure we reimport it + exporter.SaveGLTFandBin(path, name, false); + AssetDatabase.ImportAsset(path); + + // add texture remaps, so that the textures we just exported with stay valid. + // We want to always have default paths in the file, and remapping is done on the Unity side to a project specific path, + // to avoid breaking references all the time when paths change. + var exportedTextures = exporter.GetRoot().Textures; + var importedTextures = importer.m_Textures; + // If these don't match, we could only try by name... not ideal. + // They may not match due to different sampler settings etc. + if (exportedTextures.Count == importedTextures.Length) + { + for (int i = 0; i < exportedTextures.Count; i++) + { + var exported = exportedTextures[i]; + var imported = importedTextures[i]; + // TODO could we also use the imported texture definitions instead of the actual imported textures? + // Then we wouldn't need to create mock textures on import for all missing/remapped ones. + if (exported.Name != imported.name) + { + Debug.LogWarning($"Texture name mismatch: {exported.Name} != {imported.name}"); + } + + var sourceTextureForExportedTexture = exporter.GetSourceTextureForExportedTexture(exported); + + // we should not remap if that is actually the same texture + if (imported == sourceTextureForExportedTexture) continue; + + importer.AddRemap(new AssetImporter.SourceAssetIdentifier(imported), sourceTextureForExportedTexture); + } + importer.SaveAndReimport(); + } + + // TODO we should get rid of this, but without it currently the inspector doesn't repaint + // after importing a changed material, which can be confusing. Could be caching inside PBRGraphGUI + AssetDatabase.Refresh(); + + EditorApplication.update += () => + { + // Repaint Inspector, newly imported values can be different if we're not perfectly round tripping + foreach (var editor in ActiveEditorTracker.sharedTracker.activeEditors) + { + editor.Repaint(); + } + }; + } + } +} diff --git a/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs.meta b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs.meta new file mode 100644 index 000000000..a3d7ab10d --- /dev/null +++ b/Editor/Scripts/ShaderGraph/MaterialEditorBridge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43a458fb10960e7448fe44d2c3f4e4d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs b/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs new file mode 100644 index 000000000..c3cf73799 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs @@ -0,0 +1 @@ +internal class NoCompilationWarning { } diff --git a/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs.meta b/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs.meta new file mode 100644 index 000000000..fa3b0de38 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/NoCompilationWarning.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ea8663e2a74bdc4cb6f6d53769532df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Scripts/ShaderGraph/ShaderConverters.cs b/Editor/Scripts/ShaderGraph/ShaderConverters.cs new file mode 100644 index 000000000..680eeb4a7 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/ShaderConverters.cs @@ -0,0 +1,320 @@ +using System; +using System.Linq; +using GLTF.Schema; +using UnityEngine; +using Object = UnityEngine.Object; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF +{ + public static class ShaderConverters + { + [InitializeOnLoadMethod] + static void InitShaderConverters() + { + GLTFMaterialHelper.RegisterMaterialConversionToGLTF(ConvertStandardAndURPLit); + GLTFMaterialHelper.RegisterMaterialConversionToGLTF(ConvertUnityGLTFGraphs); + } + + private static bool ConvertUnityGLTFGraphs(Material material, Shader oldShader, Shader newShader) + { + // update legacy shaders that didn't have material overrides available + if (oldShader.name.StartsWith("Hidden/UnityGLTF/PBRGraph") || oldShader.name.StartsWith("Hidden/UnityGLTF/UnlitGraph")) + { + material.shader = newShader; + + var meta = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(material.shader)) as IUnityGltfShaderUpgradeMeta; + if (meta != null) + { + // Debug.Log("Updating shader from " + material.shader + " to " + meta.SourceShader + + // " (transparent: " + meta.IsTransparent + ", double sided: " + meta.IsDoublesided + ")"); + + var isUnlit = meta.SourceShader.name.Contains("Unlit"); + material.shader = meta.SourceShader; + + var mapper = isUnlit ? (IUniformMap) new UnlitMap(material) : new PBRGraphMap(material); + if (meta.IsTransparent) + mapper.AlphaMode = AlphaMode.BLEND; + if (meta.IsDoublesided) + mapper.DoubleSided = true; + + EditorUtility.SetDirty(material); + } + + return true; + } + + if (oldShader.name != "UnityGLTF/UnlitGraph" && oldShader.name != "UnityGLTF/PBRGraph") return false; + + material.shader = newShader; + return true; + } + + private static bool ConvertStandardAndURPLit(Material material, Shader oldShader, Shader newShader) + { + var allowedConversions = new[] { + StandardShader, + UnlitColorShader, + UnlitTextureShader, + UnlitTransparentShader, + UnlitTransparentCutoutShader, + URPLitShader, + URPUnlitShader, + }; + + var unlitSources = new[] { + UnlitColorShader, + UnlitTextureShader, + URPUnlitShader, + UnlitTransparentShader, + UnlitTransparentCutoutShader, + }; + + var birpShaders = new[] { + StandardShader, + UnlitColorShader, + UnlitTextureShader, + UnlitTransparentShader, + UnlitTransparentCutoutShader, + }; + + if (!allowedConversions.Contains(oldShader.name)) return false; + + var sourceIsUnlit = unlitSources.Contains(oldShader.name); + var targetIsUnlit = newShader.name == URPUnlitShader; + var sourceIsTransparent = oldShader.name == UnlitTransparentShader || oldShader.name == UnlitTransparentCutoutShader; + + var sourceIsBirp = birpShaders.Contains(oldShader.name); + var needsEmissiveColorSpaceConversion = sourceIsBirp && QualitySettings.activeColorSpace == ColorSpace.Linear; + var colorProp = sourceIsBirp ? _Color : _BaseColor; + var colorTexProp = sourceIsBirp ? _MainTex : _BaseMap; + + var color = material.GetColor(colorProp, Color.white); + var albedo = material.GetTexture(colorTexProp, null); + var albedoOffset = material.GetTextureOffset(colorTexProp, Vector2.zero); + var albedoTiling = material.GetTextureScale(colorTexProp, Vector2.one); + var isTransparent = material.GetTag("RenderType", false) == "Transparent" || sourceIsTransparent; + + var metallic = material.GetFloat(_Metallic, 0); + var smoothness = material.HasProperty(_Smoothness) ? material.GetFloat(_Smoothness, 0) : + material.HasProperty(_Glossiness) ? material.GetFloat(_Glossiness, 0) : 0.5f; + var metallicGloss = material.GetTexture(_MetallicGlossMap, null); + var normal = material.GetTexture(_BumpMap, null); + var normalStrength = material.GetFloat(_BumpScale, 1); + var occlusion = material.GetTexture(_OcclusionMap, null); + var occlusionStrength = material.GetFloat(_Strength, 1); + var emission = material.GetTexture(_EmissionMap, null); + var emissionColor = material.GetColor(_EmissionColor, Color.black); + + // if emission is OFF we don't want to set it to ON during conversion + if ((oldShader.name == StandardShader || oldShader.name == URPLitShader) && !material.IsKeywordEnabled("_EMISSION")) + { + emission = null; + emissionColor = Color.black; + } + + var cutoff = material.GetFloat(_Cutoff, 0.5f); + + var isCutoff = material.IsKeywordEnabled("_ALPHATEST_ON") || + material.IsKeywordEnabled("_BUILTIN_ALPHATEST_ON") || + material.IsKeywordEnabled("_BUILTIN_AlphaClip") || + oldShader.name == UnlitTransparentCutoutShader; + + material.shader = newShader; + + material.SetColor(baseColorFactor, color); + material.SetTexture(baseColorTexture, albedo); + material.SetTextureOffset(baseColorTexture, albedoOffset); + material.SetTextureScale(baseColorTexture, albedoTiling); + if (albedoOffset != Vector2.zero || albedoTiling != Vector2.one) + GLTFMaterialHelper.SetKeyword(material, "_TEXTURE_TRANSFORM", true); + + material.SetFloat(metallicFactor, metallic); + material.SetFloat(roughnessFactor, 1 - smoothness); + const string ConversionWarning = "The Metallic (R) Smoothness (A) texture needs to be converted to Roughness (B) Metallic (G). "; +#if UNITY_EDITOR && UNITY_2022_1_OR_NEWER + var importerPath = AssetDatabase.GetAssetPath(metallicGloss); + var importer = AssetImporter.GetAtPath(importerPath) as TextureImporter; + if (importer && importer.swizzleG != TextureImporterSwizzle.OneMinusR) // can't really detect if this has been done on the texture already, this is just a heuristic... + { + if (EditorUtility.DisplayDialog("Texture Conversion", + ConversionWarning + "This is done by swizzling texture channels in the importer. Do you want to proceed?", + "OK", DialogOptOutDecisionType.ForThisSession, nameof(GLTFMaterialHelper) + "_texture_conversion")) + { + importer.swizzleR = TextureImporterSwizzle.B; + importer.swizzleG = TextureImporterSwizzle.OneMinusR; + importer.swizzleB = TextureImporterSwizzle.G; + Undo.RegisterImporterUndo(importerPath, "Texture Swizzles (M__G > _RM_)"); + importer.SaveAndReimport(); + } + } + else + { + Debug.LogWarning(ConversionWarning + "This currently needs to be done manually. Please swap channels in an external software.", material); + } +#else + if (metallicGloss) + Debug.LogWarning(ConversionWarning + "This currently needs to be done manually. Please swap channels in an external software.", material); +#endif + // TODO: convert metallicGloss to metallicRoughnessTexture format: Metallic (R) + Smoothness (A) → Roughness (G) + Metallic (B) + // TODO: when smoothness is not 0 or 1 and there's a texture, need to convert to a texture and set roughness = 1, otherwise the math doesn't match + // TODO: figure out where to put the newly created texture, and how to avoid re-creating it several times when multiple materials may use it. + material.SetTexture(metallicRoughnessTexture, metallicGloss); + material.SetTexture(normalTexture, normal); + material.SetFloat(normalScale, normalStrength); + material.SetTexture(occlusionTexture, occlusion); + material.SetFloat(occlusionStrength1, occlusionStrength); + material.SetTexture(emissiveTexture, emission); + material.SetFloat(alphaCutoff, isCutoff ? cutoff : -cutoff); // bit hacky, but that avoids an additional keyword for determining alpha cutoff right now + + var map = new PBRGraphMap(material); + map.AlphaMode = isCutoff ? AlphaMode.MASK : (isTransparent ? AlphaMode.BLEND : AlphaMode.OPAQUE); + + material.SetColor(emissiveFactor, needsEmissiveColorSpaceConversion ? emissionColor.linear : emissionColor); + + // set the flags on conversion, otherwise it's confusing why they're not on - can't easily replicate the magic that Unity does in their inspectors when changing emissive on/off + if (material.globalIlluminationFlags == MaterialGlobalIlluminationFlags.None || material.globalIlluminationFlags == MaterialGlobalIlluminationFlags.EmissiveIsBlack) + material.globalIlluminationFlags = MaterialGlobalIlluminationFlags.BakedEmissive; + + // ensure keywords are correctly set after conversion + GLTFMaterialHelper.ValidateMaterialKeywords(material); + + return true; + } + + // ReSharper disable InconsistentNaming + private const string StandardShader = "Standard"; + private const string UnlitColorShader = "Unlit/Color"; + private const string UnlitTextureShader = "Unlit/Texture"; + private const string UnlitTransparentShader = "Unlit/Transparent"; + private const string UnlitTransparentCutoutShader = "Unlit/Transparent Cutout"; + private const string URPLitShader = "Universal Render Pipeline/Lit"; + private const string URPUnlitShader = "Universal Render Pipeline/Unlit"; + + // Standard and URP-Lit property names + private static readonly int _Color = Shader.PropertyToID("_Color"); + private static readonly int _BaseColor = Shader.PropertyToID("_BaseColor"); + private static readonly int _MainTex = Shader.PropertyToID("_MainTex"); + private static readonly int _BaseMap = Shader.PropertyToID("_BaseMap"); + private static readonly int _Metallic = Shader.PropertyToID("_Metallic"); + private static readonly int _Glossiness = Shader.PropertyToID("_Glossiness"); + private static readonly int _Smoothness = Shader.PropertyToID("_Smoothness"); + private static readonly int _MetallicGlossMap = Shader.PropertyToID("_MetallicGlossMap"); + private static readonly int _BumpMap = Shader.PropertyToID("_BumpMap"); + private static readonly int _BumpScale = Shader.PropertyToID("_BumpScale"); + private static readonly int _OcclusionMap = Shader.PropertyToID("_OcclusionMap"); + private static readonly int _Strength = Shader.PropertyToID("_OcclusionStrength"); + private static readonly int _EmissionMap = Shader.PropertyToID("_EmissionMap"); + private static readonly int _EmissionColor = Shader.PropertyToID("_EmissionColor"); + private static readonly int _Cutoff = Shader.PropertyToID("_Cutoff"); + + // glTF property names + private static readonly int baseColorFactor = Shader.PropertyToID("baseColorFactor"); + private static readonly int baseColorTexture = Shader.PropertyToID("baseColorTexture"); + private static readonly int metallicFactor = Shader.PropertyToID("metallicFactor"); + private static readonly int roughnessFactor = Shader.PropertyToID("roughnessFactor"); + private static readonly int metallicRoughnessTexture = Shader.PropertyToID("metallicRoughnessTexture"); + private static readonly int normalTexture = Shader.PropertyToID("normalTexture"); + private static readonly int normalScale = Shader.PropertyToID("normalScale"); + private static readonly int occlusionTexture = Shader.PropertyToID("occlusionTexture"); + private static readonly int occlusionStrength1 = Shader.PropertyToID("occlusionStrength"); + private static readonly int emissiveTexture = Shader.PropertyToID("emissiveTexture"); + private static readonly int emissiveFactor = Shader.PropertyToID("emissiveFactor"); + private static readonly int alphaCutoff = Shader.PropertyToID("alphaCutoff"); + // ReSharper restore InconsistentNaming + + private static readonly string[] emissivePropNames = new[] { "emissiveFactor", "_EmissionColor" }; + + [MenuItem("CONTEXT/Material/UnityGLTF Material Helpers/Convert Emissive Colors > sRGB - weaker, darker")] + private static void ConvertToSRGB(MenuCommand command) + { + if (!(command.context is Material mat)) return; + Undo.RegisterCompleteObjectUndo(mat, "Convert emissive colors to sRGB"); + foreach(var propName in emissivePropNames) + if (mat.HasProperty(propName)) mat.SetColor(propName, mat.GetColor(propName).gamma); + } + + [MenuItem("CONTEXT/Material/UnityGLTF Material Helpers/Convert Emissive Colors > Linear - brighter, stronger")] + private static void ConvertToLinear(MenuCommand command) + { + if (!(command.context is Material mat)) return; + Undo.RegisterCompleteObjectUndo(mat, "Convert emissive colors to sRGB"); + foreach(var propName in emissivePropNames) + if (mat.HasProperty(propName)) mat.SetColor(propName, mat.GetColor(propName).linear); + } + + [MenuItem("CONTEXT/Material/UnityGLTF Material Helpers/ Select all materials with this shader", false, -1000)] + private static void SelectAllMaterialsWithShader(MenuCommand command) + { + if (!(command.context is Material mat)) return; + var allMaterials = AssetDatabase.FindAssets("t:Material") + .Select(AssetDatabase.GUIDToAssetPath) + .Select(AssetDatabase.LoadAssetAtPath) + .Where(x => !AssetDatabase.IsSubAsset(x)) + .Where(x => x.shader == mat.shader) + .Cast() + .ToArray(); + foreach (var obj in allMaterials) + EditorGUIUtility.PingObject(obj); + Selection.objects = allMaterials; + } + + private static bool TryGetMetadataOfType(Shader shader, out T obj) where T : ScriptableObject + { + obj = null; + + var path = AssetDatabase.GetAssetPath(shader); + foreach (var asset in AssetDatabase.LoadAllAssetsAtPath(path)) + { + if (asset is T metadataAsset) + { + obj = metadataAsset; + return true; + } + } + + return false; + } + } + + static class MaterialHelper + { + public static float GetFloat(this Material material, int propertyIdx, float fallback) + { + if (material.HasProperty(propertyIdx)) + return material.GetFloat(propertyIdx); + return fallback; + } + + public static Color GetColor(this Material material, int propertyIdx, Color fallback) + { + if (material.HasProperty(propertyIdx)) + return material.GetColor(propertyIdx); + return fallback; + } + + public static Texture GetTexture(this Material material, int propertyIdx, Texture fallback) + { + if (material.HasProperty(propertyIdx)) + return material.GetTexture(propertyIdx); + return fallback; + } + + public static Vector2 GetTextureScale(this Material material, int propertyIdx, Vector2 fallback) + { + if (material.HasProperty(propertyIdx)) + return material.GetTextureScale(propertyIdx); + return fallback; + } + + public static Vector2 GetTextureOffset(this Material material, int propertyIdx, Vector2 fallback) + { + if (material.HasProperty(propertyIdx)) + return material.GetTextureOffset(propertyIdx); + return fallback; + } + } +} diff --git a/Editor/Scripts/ShaderGraph/ShaderConverters.cs.meta b/Editor/Scripts/ShaderGraph/ShaderConverters.cs.meta new file mode 100644 index 000000000..042b83771 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/ShaderConverters.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 77ad4bb761964b0da3ccf68f6b649aab +timeCreated: 1677764644 \ No newline at end of file diff --git a/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef b/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef new file mode 100644 index 000000000..560b72c78 --- /dev/null +++ b/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef @@ -0,0 +1,29 @@ +{ + "name": "UnityGLTF.ShaderGraph", + "rootNamespace": "", + "references": [ + "GUID:be0903cd8e1546f498710afdc59db5eb", + "GUID:18d18f811ba286c49814567a3cfba688", + "GUID:40f39bff7bc9be34182ebe488fcf8228", + "GUID:1a0324566af4ed544918d6837a1f4e11" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_2019_4_OR_NEWER" + ], + "versionDefines": [ + { + "name": "com.unity.modules.imageconversion", + "expression": "0.0.0", + "define": "NO_INTERNALS_ACCESS" + } + ], + "noEngineReferences": false +} diff --git a/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef.meta b/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef.meta new file mode 100644 index 000000000..20045483a --- /dev/null +++ b/Editor/Scripts/ShaderGraph/UnityGLTF.ShaderGraph.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 17181a83a8717a34d8ce050af64edd83 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UnityGLTFEditor.asmdef b/Editor/UnityGLTFEditor.asmdef new file mode 100644 index 000000000..2b883d2f6 --- /dev/null +++ b/Editor/UnityGLTFEditor.asmdef @@ -0,0 +1,52 @@ +{ + "name": "UnityGLTFEditor", + "rootNamespace": "", + "references": [ + "GUID:40f39bff7bc9be34182ebe488fcf8228", + "GUID:18d18f811ba286c49814567a3cfba688" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "GLTFSerialization.dll" + ], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.modules.animation", + "expression": "1.0.0", + "define": "UNITY_ANIMATION" + }, + { + "name": "com.unity.modules.imgui", + "expression": "1.0.0", + "define": "UNITY_IMGUI" + }, + { + "name": "com.atteneder.gltfast", + "expression": "3.0.0", + "define": "HAVE_GLTFAST" + }, + { + "name": "com.unity.cloud.gltfast", + "expression": "1.0.0", + "define": "HAVE_GLTFAST" + }, + { + "name": "com.atteneder.draco", + "expression": "1.0.0", + "define": "HAVE_DRACO" + }, + { + "name": "com.unity.cloud.draco", + "expression": "1.0.0", + "define": "HAVE_DRACO" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/UnityGLTFEditor.asmdef.meta b/Editor/UnityGLTFEditor.asmdef.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/UnityGLTFEditor.asmdef.meta rename to Editor/UnityGLTFEditor.asmdef.meta diff --git a/GLTFSerialization/External/glTF-Binary/.gitignore b/GLTFSerialization/External/glTF-Binary/.gitignore deleted file mode 100644 index 1e38c7908..000000000 --- a/GLTFSerialization/External/glTF-Binary/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*Out* \ No newline at end of file diff --git a/GLTFSerialization/External/glTF-Binary/BoomBox.glb b/GLTFSerialization/External/glTF-Binary/BoomBox.glb deleted file mode 100644 index 7ecef5b0e..000000000 Binary files a/GLTFSerialization/External/glTF-Binary/BoomBox.glb and /dev/null differ diff --git a/GLTFSerialization/External/glTF-Binary/Box.glb b/GLTFSerialization/External/glTF-Binary/Box.glb deleted file mode 100644 index 95ec886b6..000000000 Binary files a/GLTFSerialization/External/glTF-Binary/Box.glb and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.bin b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.bin deleted file mode 100644 index 3efe950ce..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.bin and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.gltf b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.gltf deleted file mode 100644 index c2face9c4..000000000 --- a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern.gltf +++ /dev/null @@ -1,525 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC2", - "max": [ - 0.992169142, - -0.007998445 - ], - "min": [ - 0.0107366741, - -0.992534757 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC4", - "max": [ - 1.0, - 0.9999658, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.962171, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 7.74559927, - 12.8321095, - 2.31570983 - ], - "min": [ - -7.74559927, - -12.8321095, - -2.31570983 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 2616, - "type": "SCALAR", - "max": [ - 925 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 5, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC2", - "max": [ - 0.8007193, - -0.0581455827 - ], - "min": [ - 0.351246148, - -0.361011624 - ] - }, - { - "bufferView": 6, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.999998 - ], - "min": [ - -1.0, - -1.0, - -0.999998 - ] - }, - { - "bufferView": 7, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC4", - "max": [ - 0.9997526, - 1.0, - 0.999752462, - 1.0 - ], - "min": [ - -0.9995128, - -1.0, - -0.999752462, - 1.0 - ] - }, - { - "bufferView": 8, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 0.129208073, - 0.6523504, - 0.129208073 - ], - "min": [ - -0.129208073, - -0.6523504, - -0.129208073 - ] - }, - { - "bufferView": 9, - "byteOffset": 0, - "componentType": 5123, - "count": 3744, - "type": "SCALAR", - "max": [ - 755 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 10, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC2", - "max": [ - 0.9923278, - -0.00728821754 - ], - "min": [ - 0.3673209, - -0.413352221 - ] - }, - { - "bufferView": 11, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 12, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC4", - "max": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 13, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.03408229, - 2.529281, - 1.03408468 - ], - "min": [ - -1.03408229, - -2.529281, - -1.03408468 - ] - }, - { - "bufferView": 14, - "byteOffset": 0, - "componentType": 5123, - "count": 9822, - "type": "SCALAR", - "max": [ - 2462 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 7408 - }, - { - "buffer": 0, - "byteOffset": 7408, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 18520, - "byteLength": 14816 - }, - { - "buffer": 0, - "byteOffset": 33336, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 44448, - "byteLength": 5232 - }, - { - "buffer": 0, - "byteOffset": 49680, - "byteLength": 6048 - }, - { - "buffer": 0, - "byteOffset": 55728, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 64800, - "byteLength": 12096 - }, - { - "buffer": 0, - "byteOffset": 76896, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 85968, - "byteLength": 7488 - }, - { - "buffer": 0, - "byteOffset": 93456, - "byteLength": 19704 - }, - { - "buffer": 0, - "byteOffset": 113160, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 142716, - "byteLength": 39408 - }, - { - "buffer": 0, - "byteOffset": 182124, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 211680, - "byteLength": 19644 - } - ], - "buffers": [ - { - "uri": "Lantern.bin", - "byteLength": 231324 - } - ], - "extensionsUsed": [ - "KHR_materials_pbrSpecularGlossiness" - ], - "images": [ - { - "uri": "Lantern_baseColor.png" - }, - { - "uri": "Lantern_roughnessMetallic.png" - }, - { - "uri": "Lantern_normal.png" - }, - { - "uri": "Lantern_emissive.png" - }, - { - "uri": "Lantern_diffuse.png" - }, - { - "uri": "Lantern_specularGlossiness.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Body" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 5, - "NORMAL": 6, - "TANGENT": 7, - "POSITION": 8 - }, - "indices": 9, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Chain" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 10, - "NORMAL": 11, - "TANGENT": 12, - "POSITION": 13 - }, - "indices": 14, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Lantern" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.214041144, - 0.214041144, - 0.214041144, - 1.0 - ], - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "LanternPost_Mat", - "extensions": { - "KHR_materials_pbrSpecularGlossiness": { - "diffuseTexture": { - "index": 4 - }, - "specularGlossinessTexture": { - "index": 5 - } - } - } - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "translation": [ - -3.82315421, - 13.01603, - 0.0 - ], - "name": "LanternPole_Body" - }, - { - "children": [], - "mesh": 1, - "translation": [ - -9.582001, - 21.0378723, - 0.0 - ], - "name": "LanternPole_Chain" - }, - { - "children": [], - "mesh": 2, - "translation": [ - -9.582007, - 18.0091515, - 0.0 - ], - "name": "LanternPole_Lantern" - }, - { - "children": [ - 0, - 1, - 2 - ], - "scale": [ - 0.06, - 0.06, - 0.06 - ], - "translation": [ - 0.237, - -0.758, - 0.0 - ], - "name": "Lantern" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 3 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - }, - { - "source": 4 - }, - { - "source": 5 - } - ] -} \ No newline at end of file diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_baseColor.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_baseColor.png deleted file mode 100644 index 013ec22d4..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_baseColor.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_diffuse.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_diffuse.png deleted file mode 100644 index 963380953..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_diffuse.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_emissive.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_emissive.png deleted file mode 100644 index e1878cad2..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_emissive.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_normal.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_normal.png deleted file mode 100644 index 5818db91b..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_normal.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png deleted file mode 100644 index 769132d3c..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png b/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png deleted file mode 100644 index 8af6558f8..000000000 Binary files a/GLTFSerialization/External/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png and /dev/null differ diff --git a/GLTFSerialization/External/glTF/BoomBox.gltf b/GLTFSerialization/External/glTF/BoomBox.gltf deleted file mode 100644 index 6178cd7f3..000000000 --- a/GLTFSerialization/External/glTF/BoomBox.gltf +++ /dev/null @@ -1,191 +0,0 @@ -{ - "accessors": [{ - "bufferView": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC2", - "max": [ - 0.9999003, -0.0221377648 - ], - "min": [ - 0.0006585993, -0.996773958 - ] - }, - { - "bufferView": 1, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.9999782 - ], - "min": [-1.0, -1.0, -0.9980823] - }, - { - "bufferView": 2, - "componentType": 5126, - "count": 3575, - "type": "VEC4", - "max": [ - 1.0, - 0.9999976, - 1.0, - 1.0 - ], - "min": [-0.9991289, -0.999907851, -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 0.009921154, - 0.00977163, - 0.0100762453 - ], - "min": [-0.009921154, -0.00977163, -0.0100762453] - }, - { - "bufferView": 4, - "componentType": 5123, - "count": 18108, - "type": "SCALAR", - "max": [ - 3574 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [{ - "buffer": 0, - "byteLength": 28600 - }, - { - "buffer": 0, - "byteOffset": 28600, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 71500, - "byteLength": 57200 - }, - { - "buffer": 0, - "byteOffset": 128700, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 171600, - "byteLength": 36216 - } - ], - "buffers": [{ - "uri": "BoomBox.bin", - "byteLength": 207816 - }], - "images": [{ - "uri": "BoomBox_baseColor.png" - }, - { - "uri": "BoomBox_occlusionRoughnessMetallic.png" - }, - { - "uri": "BoomBox_normal.png" - }, - { - "uri": "BoomBox_emissive.png" - } - ], - "meshes": [{ - "primitives": [{ - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0 - }], - "name": "BoomBox" - }], - "materials": [{ - "pbrMetallicRoughness": { - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "occlusionTexture": { - "index": 1 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "extensions": { - "testExtension": { - "glossiness": 0.8 - } - }, - "name": "BoomBox_Mat" - }], - "nodes": [{ - "mesh": 0, - "name": "BoomBox", - "extras": { - "nodeInfo": 1000.4, - "nodeHierarchy": { - "nodeHierarchy1": { - "nodeInfoBool": true, - "nodeInfoString": "hello_world" - } - } - } - }], - "scene": 0, - "scenes": [{ - "nodes": [ - 0 - ] - }], - "textures": [{ - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - } - ], - "extras": { - "testint": 254, - "teststring": "hello" - } -} \ No newline at end of file diff --git a/GLTFSerialization/External/glTF/Lantern.gltf b/GLTFSerialization/External/glTF/Lantern.gltf deleted file mode 100644 index e8f08e54f..000000000 --- a/GLTFSerialization/External/glTF/Lantern.gltf +++ /dev/null @@ -1,500 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC2", - "max": [ - 0.992169142, - -0.007998445 - ], - "min": [ - 0.0107366741, - -0.992534757 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC4", - "max": [ - 1.0, - 0.9999658, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.962171, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 7.74559927, - 12.8321095, - 2.31570983 - ], - "min": [ - -7.74559927, - -12.8321095, - -2.31570983 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 2616, - "type": "SCALAR", - "max": [ - 925 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 5, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC2", - "max": [ - 0.8007193, - -0.0581455827 - ], - "min": [ - 0.351246148, - -0.361011624 - ] - }, - { - "bufferView": 6, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.999998 - ], - "min": [ - -1.0, - -1.0, - -0.999998 - ] - }, - { - "bufferView": 7, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC4", - "max": [ - 0.9997526, - 1.0, - 0.999752462, - 1.0 - ], - "min": [ - -0.9995128, - -1.0, - -0.999752462, - 1.0 - ] - }, - { - "bufferView": 8, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 0.129208073, - 0.6523504, - 0.129208073 - ], - "min": [ - -0.129208073, - -0.6523504, - -0.129208073 - ] - }, - { - "bufferView": 9, - "byteOffset": 0, - "componentType": 5123, - "count": 3744, - "type": "SCALAR", - "max": [ - 755 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 10, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC2", - "max": [ - 0.9923278, - -0.00728821754 - ], - "min": [ - 0.3673209, - -0.413352221 - ] - }, - { - "bufferView": 11, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 12, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC4", - "max": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 13, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.03408229, - 2.529281, - 1.03408468 - ], - "min": [ - -1.03408229, - -2.529281, - -1.03408468 - ] - }, - { - "bufferView": 14, - "byteOffset": 0, - "componentType": 5123, - "count": 9822, - "type": "SCALAR", - "max": [ - 2462 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 7408 - }, - { - "buffer": 0, - "byteOffset": 7408, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 18520, - "byteLength": 14816 - }, - { - "buffer": 0, - "byteOffset": 33336, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 44448, - "byteLength": 5232 - }, - { - "buffer": 0, - "byteOffset": 49680, - "byteLength": 6048 - }, - { - "buffer": 0, - "byteOffset": 55728, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 64800, - "byteLength": 12096 - }, - { - "buffer": 0, - "byteOffset": 76896, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 85968, - "byteLength": 7488 - }, - { - "buffer": 0, - "byteOffset": 93456, - "byteLength": 19704 - }, - { - "buffer": 0, - "byteOffset": 113160, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 142716, - "byteLength": 39408 - }, - { - "buffer": 0, - "byteOffset": 182124, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 211680, - "byteLength": 19644 - } - ], - "buffers": [ - { - "uri": "Lantern.bin", - "byteLength": 231324 - } - ], - "images": [ - { - "uri": "Lantern_baseColor.png" - }, - { - "uri": "Lantern_roughnessMetallic.png" - }, - { - "uri": "Lantern_normal.png" - }, - { - "uri": "Lantern_emissive.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Body" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 5, - "NORMAL": 6, - "TANGENT": 7, - "POSITION": 8 - }, - "indices": 9, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Chain" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 10, - "NORMAL": 11, - "TANGENT": 12, - "POSITION": 13 - }, - "indices": 14, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Lantern" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.214041144, - 0.214041144, - 0.214041144, - 1.0 - ], - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "LanternPost_Mat" - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "translation": [ - -3.82315421, - 13.01603, - 0.0 - ], - "name": "LanternPole_Body" - }, - { - "children": [], - "mesh": 1, - "translation": [ - -9.582001, - 21.0378723, - 0.0 - ], - "name": "LanternPole_Chain" - }, - { - "children": [], - "mesh": 2, - "translation": [ - -9.582007, - 18.0091515, - 0.0 - ], - "name": "LanternPole_Lantern" - }, - { - "children": [ - 0, - 1, - 2 - ], - "scale": [ - 0.06, - 0.06, - 0.06 - ], - "translation": [ - 0.237, - -0.758, - 0.0 - ], - "name": "Lantern" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 3 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - } - ] -} \ No newline at end of file diff --git a/GLTFSerialization/GLTFSerialization.sln b/GLTFSerialization/GLTFSerialization.sln deleted file mode 100644 index 60ae19204..000000000 --- a/GLTFSerialization/GLTFSerialization.sln +++ /dev/null @@ -1,105 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2036 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GLTFSerialization", "GLTFSerialization\GLTFSerialization.csproj", "{72AC331F-9810-4DE2-8EA3-84559A787218}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GLTFSerializationTests", "Tests\GLTFSerializationTests\GLTFSerializationTests.csproj", "{821B87A3-D8FA-407A-BC58-928A859C71C4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GLTFSerializationUWPTests", "Tests\GLTFSerializationUWPTests\GLTFSerializationUWPTests.csproj", "{EAD1EF7E-A898-4741-9DF5-269A33E6F875}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GLTFSerializationCLI", "GLTFSerializationCLI\GLTFSerializationCLI.csproj", "{3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|ARM.ActiveCfg = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|ARM.Build.0 = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|x64.ActiveCfg = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|x64.Build.0 = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|x86.ActiveCfg = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Debug|x86.Build.0 = Debug|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|Any CPU.Build.0 = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|ARM.ActiveCfg = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|ARM.Build.0 = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|x64.ActiveCfg = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|x64.Build.0 = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|x86.ActiveCfg = Release|Any CPU - {72AC331F-9810-4DE2-8EA3-84559A787218}.Release|x86.Build.0 = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|ARM.ActiveCfg = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|ARM.Build.0 = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|x64.ActiveCfg = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|x64.Build.0 = Debug|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|x86.ActiveCfg = Debug|x86 - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Debug|x86.Build.0 = Debug|x86 - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|Any CPU.Build.0 = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|ARM.ActiveCfg = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|ARM.Build.0 = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|x64.ActiveCfg = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|x64.Build.0 = Release|Any CPU - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|x86.ActiveCfg = Release|x86 - {821B87A3-D8FA-407A-BC58-928A859C71C4}.Release|x86.Build.0 = Release|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|ARM.ActiveCfg = Debug|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|ARM.Build.0 = Debug|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|ARM.Deploy.0 = Debug|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x64.ActiveCfg = Debug|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x64.Build.0 = Debug|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x64.Deploy.0 = Debug|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x86.ActiveCfg = Debug|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x86.Build.0 = Debug|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Debug|x86.Deploy.0 = Debug|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|Any CPU.Build.0 = Release|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|Any CPU.Deploy.0 = Release|Any CPU - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|ARM.ActiveCfg = Release|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|ARM.Build.0 = Release|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|ARM.Deploy.0 = Release|ARM - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x64.ActiveCfg = Release|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x64.Build.0 = Release|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x64.Deploy.0 = Release|x64 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x86.ActiveCfg = Release|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x86.Build.0 = Release|x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875}.Release|x86.Deploy.0 = Release|x86 - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|ARM.ActiveCfg = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|ARM.Build.0 = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|x64.ActiveCfg = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|x64.Build.0 = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|x86.ActiveCfg = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Debug|x86.Build.0 = Debug|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|Any CPU.Build.0 = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|ARM.ActiveCfg = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|ARM.Build.0 = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|x64.ActiveCfg = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|x64.Build.0 = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|x86.ActiveCfg = Release|Any CPU - {3C8EFD3C-66B2-4D83-9DD2-E6A4C4D3F64C}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3DD2F46E-D263-46CE-9D30-EA7D97483C50} - EndGlobalSection -EndGlobal diff --git a/GLTFSerialization/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs b/GLTFSerialization/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs deleted file mode 100644 index 39401f7e0..000000000 --- a/GLTFSerialization/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs +++ /dev/null @@ -1,108 +0,0 @@ -using GLTF.Math; -using GLTF.Schema; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace GLTF.Schema -{ - /// - /// glTF extension that defines the specular-glossiness - /// material model from Physically-Based Rendering (PBR) methodology. - /// - /// Spec can be found here: - /// https://github.com/KhronosGroup/glTF/tree/master/extensions/Khronos/KHR_materials_pbrSpecularGlossiness - /// - public class KHR_materials_pbrSpecularGlossinessExtension : IExtension - { - public static readonly Vector3 SPEC_FACTOR_DEFAULT = new Vector3(0.2f, 0.2f, 0.2f); - public static readonly double GLOSS_FACTOR_DEFAULT = 0.5d; - - /// - /// The RGBA components of the reflected diffuse color of the material. - /// Metals have a diffuse value of [0.0, 0.0, 0.0]. - /// The fourth component (A) is the alpha coverage of the material. - /// The property specifies how alpha is interpreted. - /// The values are linear. - /// - public Color DiffuseFactor = Color.White; - - /// - /// The diffuse texture. - /// This texture contains RGB(A) components of the reflected diffuse color of the material in sRGB color space. - /// If the fourth component (A) is present, it represents the alpha coverage of the - /// material. Otherwise, an alpha of 1.0 is assumed. - /// The property specifies how alpha is interpreted. - /// The stored texels must not be premultiplied. - /// - public TextureInfo DiffuseTexture; - - /// - /// The specular RGB color of the material. This value is linear - /// - public Vector3 SpecularFactor = SPEC_FACTOR_DEFAULT; - - /// - /// The glossiness or smoothness of the material. - /// A value of 1.0 means the material has full glossiness or is perfectly smooth. - /// A value of 0.0 means the material has no glossiness or is completely rough. - /// This value is linear. - /// - public double GlossinessFactor = GLOSS_FACTOR_DEFAULT; - - /// - /// The specular-glossiness texture is RGBA texture, containing the specular color of the material (RGB components) and its glossiness (A component). - /// The values are in sRGB space. - /// - public TextureInfo SpecularGlossinessTexture; - - public KHR_materials_pbrSpecularGlossinessExtension(Color diffuseFactor, TextureInfo diffuseTexture, Vector3 specularFactor, double glossinessFactor, TextureInfo specularGlossinessTexture) - { - DiffuseFactor = diffuseFactor; - DiffuseTexture = diffuseTexture; - SpecularFactor = specularFactor; - GlossinessFactor = glossinessFactor; - SpecularGlossinessTexture = specularGlossinessTexture; - } - - public IExtension Clone(GLTFRoot gltfRoot) - { - return new KHR_materials_pbrSpecularGlossinessExtension( - DiffuseFactor, - new TextureInfo( - DiffuseTexture, - gltfRoot - ), - SpecularFactor, - GlossinessFactor, - new TextureInfo( - SpecularGlossinessTexture, - gltfRoot - ) - ); - } - - public JProperty Serialize() - { - JProperty jProperty = - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME, - new JObject( - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.DIFFUSE_FACTOR, new JArray(DiffuseFactor.R, DiffuseFactor.G, DiffuseFactor.B, DiffuseFactor.A)), - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.DIFFUSE_TEXTURE, - new JObject( - new JProperty(TextureInfo.INDEX, DiffuseTexture.Index.Id) - ) - ), - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.SPECULAR_FACTOR, new JArray(SpecularFactor.X, SpecularFactor.Y, SpecularFactor.Z)), - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.GLOSSINESS_FACTOR, GlossinessFactor), - new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.SPECULAR_GLOSSINESS_TEXTURE, - new JObject( - new JProperty(TextureInfo.INDEX, SpecularGlossinessTexture.Index.Id) - ) - ) - ) - ); - - return jProperty; - } - } -} diff --git a/GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtension.cs b/GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtension.cs deleted file mode 100644 index e3cf4bff5..000000000 --- a/GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtension.cs +++ /dev/null @@ -1,50 +0,0 @@ -using GLTF.Extensions; -using GLTF.Math; -using GLTF.Schema; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; - -namespace GLTF.Schema -{ - /// - /// glTF extension that defines the LOD - /// - public class MSFT_LODExtension : IExtension - { - - public List MeshIds { get; set; } - public MSFT_LODExtension(List meshIds) - { - MeshIds = meshIds; - } - public IExtension Clone(GLTFRoot gltfRoot) - { - return new MSFT_LODExtension(MeshIds); - } - public JProperty Serialize() - { - JProperty jProperty = new JProperty(MSFT_LODExtensionFactory.EXTENSION_NAME, - new JObject( - new JProperty(MSFT_LODExtensionFactory.IDS, new JArray(MeshIds)) - ) - ); - return jProperty; - } - - public List GetLODCoverage(Node node) - { - List lodCoverage = null; - if (node.Extras != null) - { - JToken screenCoverageExtras = node.Extras[MSFT_LODExtensionFactory.SCREEN_COVERAGE_EXTRAS]; - if (screenCoverageExtras != null) - { - lodCoverage = screenCoverageExtras.CreateReader().ReadDoubleList(); - } - } - return lodCoverage; - } - } -} diff --git a/GLTFSerialization/GLTFSerialization/GLTFHelpers.cs b/GLTFSerialization/GLTFSerialization/GLTFHelpers.cs deleted file mode 100644 index 083905415..000000000 --- a/GLTFSerialization/GLTFSerialization/GLTFHelpers.cs +++ /dev/null @@ -1,958 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text.RegularExpressions; -using GLTF.Schema; -using GLTF.Math; - -namespace GLTF -{ - public static class GLTFHelpers - { - private struct PreviousGLTFSizes - { - public int PreviousBufferCount; - public int PreviousBufferViewCount; - public int PreviousAccessorCount; - public int PreviousMeshCount; - public int PreviousNodeCount; - public int PreviousSceneCount; - public int PreviousSkinCount; - public int PreviousAnimationCount; - public int PreviousCameraCount; - public int PreviousMaterialCount; - public int PreviousTextureCount; - public int PreviousImageCount; - public int PreviousSamplerCount; - } - - /// - /// Removes references to indexes that do not exist. - /// - /// The node to clean - public static void RemoveUndefinedReferences(GLTFRoot root) - { - int accessorCount = root.Accessors?.Count ?? 0; - int bufferCount = root.Buffers?.Count ?? 0; - int bufferViewCount = root.BufferViews?.Count ?? 0; - int cameraCount = root.Cameras?.Count ?? 0; - int meshCount = root.Meshes?.Count ?? 0; - int nodeCount = root.Nodes?.Count ?? 0; - int samplersCount = root.Samplers?.Count ?? 0; - int skinCount = root.Skins?.Count ?? 0; - int textureCount = root.Textures?.Count ?? 0; - - if (root.Accessors != null) - { - foreach (Accessor accessor in root.Accessors) - { - if (accessor.BufferView != null && accessor.BufferView.Id >= bufferViewCount) - { - accessor.BufferView = null; - } - } - } - if (root.Animations != null) - { - foreach (GLTFAnimation animation in root.Animations) - { - if (animation.Samplers != null) - { - foreach (AnimationSampler animationSampler in animation.Samplers) - { - if (animationSampler.Input != null && animationSampler.Input.Id >= accessorCount) - { - animationSampler.Input = null; - } - if (animationSampler.Output != null && animationSampler.Output.Id >= accessorCount) - { - animationSampler.Output = null; - } - } - } - } - } - if (root.BufferViews != null) - { - foreach (BufferView bufferView in root.BufferViews) - { - if (bufferView.Buffer != null && bufferView.Buffer.Id >= bufferCount) - { - bufferView.Buffer = null; - } - } - } - if (root.Images != null) - { - foreach (GLTFImage image in root.Images) - { - if (image.BufferView != null && image.BufferView.Id >= bufferViewCount) - { - image.BufferView = null; - } - } - } - if (root.Materials != null) - { - foreach (GLTFMaterial material in root.Materials) - { - if (material.EmissiveTexture?.Index != null && material.EmissiveTexture.Index.Id >= textureCount) - { - material.EmissiveTexture.Index = null; - } - if (material.NormalTexture?.Index != null && material.NormalTexture.Index.Id >= textureCount) - { - material.NormalTexture.Index = null; - } - if (material.OcclusionTexture?.Index != null && material.OcclusionTexture.Index.Id >= textureCount) - { - material.OcclusionTexture.Index = null; - } - if (material.OcclusionTexture?.Index != null && material.OcclusionTexture.Index.Id >= textureCount) - { - material.OcclusionTexture.Index = null; - } - if (material.PbrMetallicRoughness != null) - { - if (material.PbrMetallicRoughness.BaseColorTexture?.Index != null && material.PbrMetallicRoughness.BaseColorTexture.Index.Id >= textureCount) - { - material.PbrMetallicRoughness.BaseColorTexture.Index = null; - } - if (material.PbrMetallicRoughness.MetallicRoughnessTexture?.Index != null && material.PbrMetallicRoughness.MetallicRoughnessTexture.Index.Id >= textureCount) - { - material.PbrMetallicRoughness.MetallicRoughnessTexture.Index = null; - } - } - } - } - if (root.Meshes != null) - { - foreach (GLTFMesh mesh in root.Meshes) - { - if (mesh.Primitives != null) - { - foreach (MeshPrimitive primitive in mesh.Primitives) - { - if (primitive.Indices != null && primitive.Indices.Id >= accessorCount) - { - primitive.Indices = null; - } - if (primitive.Material != null && primitive.Material.Id >= accessorCount) - { - primitive.Material = null; - } - } - } - } - } - if (root.Nodes != null) - { - foreach (Node node in root.Nodes) - { - if (node.Camera != null && node.Camera.Id >= cameraCount) - { - node.Camera = null; - } - if (node.Children != null) - { - for (int i = node.Children.Count - 1; i > 0; i--) - { - if (node.Children[i].Id >= nodeCount) - { - node.Children.RemoveAt(i); - } - } - } - if (node.Mesh != null && node.Mesh.Id >= meshCount) - { - node.Mesh = null; - } - if (node.Skin != null && node.Skin.Id >= skinCount) - { - node.Skin = null; - } - } - } - if (root.Scenes != null) - { - foreach (GLTFScene scene in root.Scenes) - { - if (scene.Nodes != null) - { - for (int i = scene.Nodes.Count - 1; i > 0; i--) - { - if (scene.Nodes[i].Id >= nodeCount) - { - scene.Nodes.RemoveAt(i); - } - } - } - } - } - if (root.Skins != null) - { - foreach (Skin skin in root.Skins) - { - if (skin.Joints != null) - { - for (int i = skin.Joints.Count - 1; i > 0; i--) - { - if (skin.Joints[i].Id >= nodeCount) - { - skin.Joints.RemoveAt(i); - } - } - } - if (skin.Skeleton != null && skin.Skeleton.Id >= nodeCount) - { - skin.Skeleton = null; - } - } - } - if (root.Textures != null) - { - foreach (GLTFTexture texture in root.Textures) - { - if (texture.Sampler != null && texture.Sampler.Id >= samplersCount) - { - texture.Sampler = null; - } - } - } - } - - /// - /// Uses the accessor to parse the buffer into attributes needed to construct the mesh primitive - /// - /// A list of attributes to parse - public static void BuildMeshAttributes(ref Dictionary attributes) - { - List unrecognizedAttributes = new List(); - foreach (var kvp in attributes) - { - var attributeAccessor = kvp.Value; - NumericArray resultArray = attributeAccessor.AccessorContent; - uint offset = LoadBufferView(attributeAccessor, out byte[] bufferViewCache); - switch (kvp.Key) - { - case SemanticProperties.POSITION: - attributeAccessor.AccessorId.Value.AsVertexArray(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.NORMAL: - attributeAccessor.AccessorId.Value.AsNormalArray(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.TANGENT: - attributeAccessor.AccessorId.Value.AsTangentArray(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.TEXCOORD_0: - case SemanticProperties.TEXCOORD_1: - case SemanticProperties.TEXCOORD_2: - case SemanticProperties.TEXCOORD_3: - attributeAccessor.AccessorId.Value.AsTexcoordArray(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.COLOR_0: - attributeAccessor.AccessorId.Value.AsColorArray(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.WEIGHTS_0: - case SemanticProperties.JOINTS_0: - attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache, offset); - break; - case SemanticProperties.INDICES: - attributeAccessor.AccessorId.Value.AsUIntArray(ref resultArray, bufferViewCache, offset); - break; - default: - unrecognizedAttributes.Add(kvp.Key); - continue; - } - - attributeAccessor.AccessorContent = resultArray; - } - - foreach (var attrib in unrecognizedAttributes) { - attributes.Remove(attrib); - } - - // TODO This should be a warning. Unrecognized attributes (e.g. TEXCOORD_4) should not cause full exceptions. - if (unrecognizedAttributes.Count > 0) { - throw new GLTFLoadException($"Unrecognized mesh attributes [{string.Join(", ", unrecognizedAttributes.ToArray())}]"); - } - } - - public static void BuildTargetAttributes (ref Dictionary attributes) - { - foreach (var kvp in attributes) - { - var attributeAccessor = kvp.Value; - NumericArray resultArray = attributeAccessor.AccessorContent; - byte[] bufferViewCache; - uint offset = LoadBufferView(attributeAccessor, out bufferViewCache); - - switch (kvp.Key) - { - case SemanticProperties.POSITION: - case SemanticProperties.NORMAL: - case SemanticProperties.TANGENT: - attributeAccessor.AccessorId.Value.AsVector3Array(ref resultArray, bufferViewCache, offset); - break; - default: - throw new System.Exception($"Unrecognized morph target attribute {kvp.Key}"); - } - - attributeAccessor.AccessorContent = resultArray; - } - } - - public static void BuildBindPoseSamplers(ref AttributeAccessor attributeAccessor) - { - NumericArray resultArray = attributeAccessor.AccessorContent; - uint offset = LoadBufferView(attributeAccessor, out byte[] bufferViewCache); - attributeAccessor.AccessorId.Value.AsMatrix4x4Array(ref resultArray, bufferViewCache, offset); - attributeAccessor.AccessorContent = resultArray; - } - - /// - /// Uses the accessor to parse the buffer into arrays needed to construct the animation - /// - /// A dictionary mapping AttributeAccessor lists to their target types - public static void BuildAnimationSamplers(ref Dictionary> samplers) - { - foreach (var samplerSet in samplers) - { - foreach (var attributeAccessor in samplerSet.Value) - { - NumericArray resultArray = attributeAccessor.AccessorContent; - uint offset = LoadBufferView(attributeAccessor, out byte[] bufferViewCache); - - switch (samplerSet.Key) - { - case "time": - attributeAccessor.AccessorId.Value.AsFloatArray(ref resultArray, bufferViewCache, offset); - break; - case "translation": - case "scale": - attributeAccessor.AccessorId.Value.AsVector3Array(ref resultArray, bufferViewCache, offset); - break; - case "rotation": - attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache, offset); - break; - } - - attributeAccessor.AccessorContent = resultArray; - } - } - } - - /// - /// Merges the right root into the left root - /// This function combines all of the lists of objects on each glTF root together and updates the relative indicies - /// All properties all merged except Asset and Default, which will stay "mergeToRoot"'s value - /// - /// The node to merge into - /// The node to merge from - public static void MergeGLTF(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) - { - PreviousGLTFSizes previousGLTFSize = new PreviousGLTFSizes() - { - PreviousAccessorCount = mergeToRoot.Accessors?.Count ?? 0, - PreviousBufferCount = mergeToRoot.Buffers?.Count ?? 0, - PreviousAnimationCount = mergeToRoot.Animations?.Count ?? 0, - PreviousBufferViewCount = mergeToRoot.BufferViews?.Count ?? 0, - PreviousCameraCount = mergeToRoot.Cameras?.Count ?? 0, - PreviousImageCount = mergeToRoot.Images?.Count ?? 0, - PreviousMaterialCount = mergeToRoot.Materials?.Count ?? 0, - PreviousMeshCount = mergeToRoot.Meshes?.Count ?? 0, - PreviousNodeCount = mergeToRoot.Nodes?.Count ?? 0, - PreviousSamplerCount = mergeToRoot.Samplers?.Count ?? 0, - PreviousSceneCount = mergeToRoot.Scenes?.Count ?? 0, - PreviousSkinCount = mergeToRoot.Skins?.Count ?? 0, - PreviousTextureCount = mergeToRoot.Textures?.Count ?? 0 - }; - - GLTFRoot mergeFromRootCopy = new GLTFRoot(mergeFromRoot); - - // for each type: - // 1) add the right hand range to the left hand object - // 2) update all ids to be based off of the appended size - - // merge extensions - MergeExtensions(mergeToRoot, mergeFromRootCopy); - - // merge accessors, buffers, and bufferviews - MergeAccessorsBufferViewsAndBuffers(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - - // merge materials, samplers, images, and textures - MergeMaterialsImagesTexturesAndSamplers(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - - // merge meshes - MergeMeshes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - - // merge cameras - MergeCameras(mergeToRoot, mergeFromRootCopy); - - // merge nodes - MergeNodes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - - // merge animation, and skin - MergeAnimationsAndSkins(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - - // merge scenes - MergeScenes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); - } - - /// - /// Returns whether the input string is a Base64 uri. Images and buffers can both be encoded this way. - /// - /// The uri to check - /// Whether the input string is base64 encoded - public static bool IsBase64Uri(string uri) - { - const string Base64StringInitializer = "^data:[a-z-]+/[a-z-]+;base64,"; - - Regex regex = new Regex(Base64StringInitializer); - return regex.Match(uri).Success; - } - - private static uint LoadBufferView(AttributeAccessor attributeAccessor, out byte[] bufferViewCache) - { - BufferView bufferView = attributeAccessor.AccessorId.Value.BufferView.Value; - uint totalOffset = bufferView.ByteOffset + attributeAccessor.Offset; -#if !NETFX_CORE - if (attributeAccessor.Stream is System.IO.MemoryStream) - { - MemoryStream memoryStream = (MemoryStream)attributeAccessor.Stream; -#if NETFX_CORE || NETSTANDARD1_3 - if (memoryStream.TryGetBuffer(out System.ArraySegment arraySegment)) - { - bufferViewCache = arraySegment.Array; - return totalOffset; - } -#else - bufferViewCache = memoryStream.GetBuffer(); - return totalOffset; -#endif - } -#endif - attributeAccessor.Stream.Position = totalOffset; - bufferViewCache = new byte[bufferView.ByteLength]; - - // stream.Read only accepts int for length - uint remainingSize = bufferView.ByteLength; - while (remainingSize != 0) - { - int sizeToLoad = (int)System.Math.Min(remainingSize, int.MaxValue); - attributeAccessor.Stream.Read(bufferViewCache, (int)(bufferView.ByteLength - remainingSize), sizeToLoad); - remainingSize -= (uint)sizeToLoad; - } - return 0; - } - - private static void MergeExtensions(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) - { - // avoid duplicates for extension merging - if (mergeFromRoot.ExtensionsUsed != null) - { - if (mergeToRoot.ExtensionsUsed == null) - { - mergeToRoot.ExtensionsUsed = new List(mergeFromRoot.ExtensionsUsed.Count); - } - - foreach (string extensionUsedToAdd in mergeFromRoot.ExtensionsUsed) - { - if (!mergeToRoot.ExtensionsUsed.Contains(extensionUsedToAdd)) - { - mergeToRoot.ExtensionsUsed.Add(extensionUsedToAdd); - } - } - } - - if (mergeFromRoot.ExtensionsRequired != null) - { - if (mergeToRoot.ExtensionsRequired == null) - { - mergeToRoot.ExtensionsRequired = new List(mergeFromRoot.ExtensionsRequired.Count); - } - - foreach (string extensionRequiredToAdd in mergeFromRoot.ExtensionsRequired) - { - if (!mergeToRoot.ExtensionsRequired.Contains(extensionRequiredToAdd)) - { - mergeToRoot.ExtensionsRequired.Add(extensionRequiredToAdd); - } - } - } - } - - private static void MergeAccessorsBufferViewsAndBuffers(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - bool isGLB = false; - - if (mergeFromRoot.Buffers != null) - { - if (mergeToRoot.Buffers == null) - { - mergeToRoot.Buffers = new List(mergeFromRoot.Buffers.Count); - } - - foreach (GLTFBuffer buffer in mergeFromRoot.Buffers) - { - if (buffer.Uri != null) - { - mergeToRoot.Buffers.Add(buffer); - } - else - { - isGLB = true; // assume glb is a uri is null - } - } - } - - if (mergeFromRoot.BufferViews != null) - { - if (mergeToRoot.BufferViews == null) - { - mergeToRoot.BufferViews = new List(mergeFromRoot.BufferViews.Count); - } - - mergeToRoot.BufferViews.AddRange(mergeFromRoot.BufferViews); - for (int i = previousGLTFSizes.PreviousBufferViewCount; i < mergeToRoot.BufferViews.Count; ++i) - { - GLTFId bufferId = mergeToRoot.BufferViews[i].Buffer; - if (!(isGLB && bufferId.Id == 0)) // if it is pointing a the special glb buffer (index 0 of a glb) then we dont want to adjust the buffer view, otherwise we do - { - // adjusting bufferview id based on merge amount - bufferId.Id += previousGLTFSizes.PreviousBufferCount; - bufferId.Root = mergeToRoot; - } - } - } - - if (mergeFromRoot.Accessors != null) - { - if (mergeToRoot.Accessors == null) - { - mergeToRoot.Accessors = new List(mergeFromRoot.Accessors.Count); - } - - mergeToRoot.Accessors.AddRange(mergeFromRoot.Accessors); - for (int i = previousGLTFSizes.PreviousAccessorCount; i < mergeToRoot.Accessors.Count; ++i) - { - Accessor accessor = mergeToRoot.Accessors[i]; - - if (accessor.BufferView != null) - { - BufferViewId bufferViewId = accessor.BufferView; - bufferViewId.Id += previousGLTFSizes.PreviousBufferViewCount; - bufferViewId.Root = mergeToRoot; - } - - AccessorSparse accessorSparse = accessor.Sparse; - if (accessorSparse != null) - { - BufferViewId indicesId = accessorSparse.Indices.BufferView; - indicesId.Id += previousGLTFSizes.PreviousBufferViewCount; - indicesId.Root = mergeToRoot; - - BufferViewId valuesId = accessorSparse.Values.BufferView; - valuesId.Id += previousGLTFSizes.PreviousBufferViewCount; - valuesId.Root = mergeToRoot; - } - } - } - } - - private static void MergeMaterialsImagesTexturesAndSamplers(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - if (mergeFromRoot.Samplers != null) - { - if (mergeToRoot.Samplers == null) - { - mergeToRoot.Samplers = new List(mergeFromRoot.Samplers.Count); - } - - mergeToRoot.Samplers.AddRange(mergeFromRoot.Samplers); - } - - if (mergeFromRoot.Images != null) - { - if (mergeToRoot.Images == null) - { - mergeToRoot.Images = new List(mergeFromRoot.Images.Count); - } - - mergeToRoot.Images.AddRange(mergeFromRoot.Images); - for (int i = previousGLTFSizes.PreviousImageCount; i < mergeToRoot.Images.Count; ++i) - { - GLTFImage image = mergeToRoot.Images[i]; - if (image.BufferView != null) - { - BufferViewId bufferViewId = image.BufferView; - bufferViewId.Id += previousGLTFSizes.PreviousBufferViewCount; - bufferViewId.Root = mergeToRoot; - } - } - } - - if (mergeFromRoot.Textures != null) - { - if (mergeToRoot.Textures == null) - { - mergeToRoot.Textures = new List(mergeFromRoot.Textures.Count); - } - - mergeToRoot.Textures.AddRange(mergeFromRoot.Textures); - for (int i = previousGLTFSizes.PreviousTextureCount; i < mergeToRoot.Textures.Count; ++i) - { - GLTFTexture texture = mergeToRoot.Textures[i]; - - if (texture.Sampler != null) - { - SamplerId samplerId = texture.Sampler; - samplerId.Id += previousGLTFSizes.PreviousSamplerCount; - samplerId.Root = mergeToRoot; - } - - if (texture.Source != null) - { - ImageId samplerId = texture.Source; - samplerId.Id += previousGLTFSizes.PreviousImageCount; - samplerId.Root = mergeToRoot; - } - } - } - - if (mergeFromRoot.Materials != null) - { - if (mergeToRoot.Materials == null) - { - mergeToRoot.Materials = new List(mergeFromRoot.Materials.Count); - } - - mergeToRoot.Materials.AddRange(mergeFromRoot.Materials); - for (int i = previousGLTFSizes.PreviousMaterialCount; i < mergeToRoot.Materials.Count; ++i) - { - GLTFMaterial material = mergeToRoot.Materials[i]; - - PbrMetallicRoughness pbrMetallicRoughness = material.PbrMetallicRoughness; - if (pbrMetallicRoughness != null) - { - if (pbrMetallicRoughness.BaseColorTexture != null) - { - TextureId textureId = pbrMetallicRoughness.BaseColorTexture.Index; - textureId.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - if (pbrMetallicRoughness.MetallicRoughnessTexture != null) - { - TextureId textureId = pbrMetallicRoughness.MetallicRoughnessTexture.Index; - textureId.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - } - - MaterialCommonConstant commonConstant = material.CommonConstant; - if (commonConstant?.LightmapTexture != null) - { - TextureId textureId = material.CommonConstant.LightmapTexture.Index; - textureId.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - - if (material.EmissiveTexture != null) - { - TextureId textureId = material.EmissiveTexture.Index; - material.EmissiveTexture.Index.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - - if (material.NormalTexture != null) - { - TextureId textureId = material.NormalTexture.Index; - textureId.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - - if (material.OcclusionTexture != null) - { - TextureId textureId = material.OcclusionTexture.Index; - textureId.Id += previousGLTFSizes.PreviousTextureCount; - textureId.Root = mergeToRoot; - } - } - } - } - - private static void MergeMeshes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - if (mergeFromRoot.Meshes == null) return; - - if (mergeToRoot.Meshes == null) - { - mergeToRoot.Meshes = new List(mergeFromRoot.Meshes.Count); - } - - mergeToRoot.Meshes.AddRange(mergeFromRoot.Meshes); - for (int i = previousGLTFSizes.PreviousMeshCount; i < mergeToRoot.Meshes.Count; ++i) - { - GLTFMesh mesh = mergeToRoot.Meshes[i]; - if (mesh.Primitives != null) - { - foreach (MeshPrimitive primitive in mesh.Primitives) - { - foreach (var attributeAccessorPair in primitive.Attributes) - { - AccessorId accessorId = attributeAccessorPair.Value; - accessorId.Id += previousGLTFSizes.PreviousAccessorCount; - accessorId.Root = mergeToRoot; - } - - if (primitive.Indices != null) - { - AccessorId accessorId = primitive.Indices; - accessorId.Id += previousGLTFSizes.PreviousAccessorCount; - accessorId.Root = mergeToRoot; - } - - if (primitive.Material != null) - { - MaterialId materialId = primitive.Material; - materialId.Id += previousGLTFSizes.PreviousMaterialCount; - materialId.Root = mergeToRoot; - } - - if (primitive.Targets != null) - { - foreach (Dictionary targetsDictionary in primitive.Targets) - { - foreach (var targetsPair in targetsDictionary) - { - AccessorId accessorId = targetsPair.Value; - accessorId.Id += previousGLTFSizes.PreviousAccessorCount; - accessorId.Root = mergeToRoot; - } - } - } - } - } - } - } - - private static void MergeCameras(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) - { - if (mergeFromRoot.Cameras == null) return; - if (mergeToRoot.Cameras == null) - { - mergeToRoot.Cameras = new List(mergeFromRoot.Cameras.Count); - } - - mergeToRoot.Cameras.AddRange(mergeFromRoot.Cameras); - } - - private static void MergeNodes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - if (mergeFromRoot.Nodes == null) return; - - if (mergeToRoot.Nodes == null) - { - mergeToRoot.Nodes = new List(mergeFromRoot.Nodes.Count); - } - - mergeToRoot.Nodes.AddRange(mergeFromRoot.Nodes); - - for (int i = previousGLTFSizes.PreviousNodeCount; i < mergeToRoot.Nodes.Count; ++i) - { - Node node = mergeToRoot.Nodes[i]; - if (node.Mesh != null) - { - MeshId meshId = node.Mesh; - meshId.Id += previousGLTFSizes.PreviousMeshCount; - node.Mesh.Root = mergeToRoot; - } - - if (node.Camera != null) - { - CameraId cameraId = node.Camera; - cameraId.Id += previousGLTFSizes.PreviousCameraCount; - cameraId.Root = mergeToRoot; - } - - if (node.Children != null) - { - foreach (NodeId child in node.Children) - { - child.Id += previousGLTFSizes.PreviousNodeCount; - child.Root = mergeToRoot; - } - } - - if (node.Skin != null) - { - SkinId skinId = node.Skin; - skinId.Id += previousGLTFSizes.PreviousSkinCount; - skinId.Root = mergeToRoot; - } - } - } - - private static void MergeAnimationsAndSkins(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - if (mergeFromRoot.Skins != null) - { - if (mergeToRoot.Skins == null) - { - mergeToRoot.Skins = new List(mergeFromRoot.Skins.Count); - } - - mergeToRoot.Skins.AddRange(mergeFromRoot.Skins); - for (int i = previousGLTFSizes.PreviousSkinCount; i < mergeToRoot.Skins.Count; ++i) - { - Skin skin = mergeToRoot.Skins[i]; - if (skin.InverseBindMatrices != null) - { - skin.InverseBindMatrices.Id += previousGLTFSizes.PreviousAccessorCount; - } - - if (skin.Skeleton != null) - { - skin.Skeleton.Id += previousGLTFSizes.PreviousNodeCount; - } - - if (skin.Joints != null) - { - foreach (NodeId joint in skin.Joints) - { - joint.Id += previousGLTFSizes.PreviousNodeCount; - } - } - } - } - - if (mergeFromRoot.Animations != null) - { - if (mergeToRoot.Animations == null) - { - mergeToRoot.Animations = new List(mergeFromRoot.Animations.Count); - } - - mergeToRoot.Animations.AddRange(mergeFromRoot.Animations); - - for (int i = previousGLTFSizes.PreviousAnimationCount; i < mergeToRoot.Animations.Count; ++i) - { - GLTFAnimation animation = mergeToRoot.Animations[i]; - foreach (AnimationSampler sampler in animation.Samplers) - { - AccessorId inputId = sampler.Input; - inputId.Id += previousGLTFSizes.PreviousAccessorCount; - inputId.Root = mergeToRoot; - - AccessorId outputId = sampler.Output; - outputId.Id += previousGLTFSizes.PreviousAccessorCount; - outputId.Root = mergeToRoot; - } - - foreach (AnimationChannel channel in animation.Channels) - { - SamplerId samplerId = channel.Sampler; - samplerId.Id += previousGLTFSizes.PreviousSamplerCount; - samplerId.Root = mergeToRoot; - - NodeId nodeId = channel.Target.Node; - nodeId.Id += previousGLTFSizes.PreviousNodeCount; - nodeId.Root = mergeToRoot; - } - } - } - } - - private static void MergeScenes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) - { - if (mergeFromRoot.Scenes == null) return; - - if (mergeToRoot.Scenes == null) - { - mergeToRoot.Scenes = new List(mergeFromRoot.Scenes.Count); - } - - mergeToRoot.Scenes.AddRange(mergeFromRoot.Scenes); - for (int i = previousGLTFSizes.PreviousSceneCount; i < mergeToRoot.Scenes.Count; ++i) - { - GLTFScene scene = mergeToRoot.Scenes[i]; - foreach (NodeId nodeId in scene.Nodes) - { - nodeId.Id += previousGLTFSizes.PreviousNodeCount; - nodeId.Root = mergeToRoot; - } - } - } - - private static string UpdateCanonicalPath(string oldPath, string newCanonicalPath) - { - string fileName = Path.GetFileName(oldPath); - return newCanonicalPath + Path.DirectorySeparatorChar + fileName; - } - - public static NodeId FindCommonAncestor(IEnumerable nodes) - { - // build parentage - GLTFRoot root = nodes.First().Root; - Dictionary childToParent = new Dictionary(root.Nodes.Count); - for (int i = 0; i < root.Nodes.Count; i++) - { - if (root.Nodes[i].Children == null) - { - continue; - } - - foreach (NodeId child in root.Nodes[i].Children) - { - childToParent[child.Id] = i; - } - } - - // scan for common ancestor - int? commonAncestorIndex = nodes - .Select(n => n.Id) - .Aggregate((int?)null, (elder, node) => FindCommonAncestor(elder, node)); - - return commonAncestorIndex != null ? new NodeId() { Id = commonAncestorIndex.Value, Root = root } : null; - - int? FindCommonAncestor(int? a, int? b) - { - // trivial cases - if (a == null && b == null) - { - return null; - } - else if (a != null) - { - return a; - } - else if (b != null) - { - return b; - } - else if (AncestorOf(a.Value, b.Value)) - { - return a; - } - else - { - return FindCommonAncestor(childToParent[a.Value], b.Value); - } - } - - bool AncestorOf(int ancestor, int descendant) - { - while (childToParent.ContainsKey(descendant)) - { - if (childToParent[descendant] == ancestor) - { - return true; - } - descendant = childToParent[descendant]; - } - - return false; - } - } - } -} diff --git a/GLTFSerialization/GLTFSerialization/Math/Quaternion.cs b/GLTFSerialization/GLTFSerialization/Math/Quaternion.cs deleted file mode 100644 index 2cc1cfa2b..000000000 --- a/GLTFSerialization/GLTFSerialization/Math/Quaternion.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; - -namespace GLTF.Math -{ - public struct Quaternion : IEquatable - { - public static readonly Quaternion Identity = new Quaternion(0f, 0f, 0f, 1f); - public float X { get; set; } - public float Y { get; set; } - public float Z { get; set; } - public float W { get; set; } - - public Quaternion(float x, float y, float z, float w) - { - X = x; - Y = y; - Z = z; - W = w; - } - - public Quaternion(Quaternion other) - { - X = other.X; - Y = other.Y; - Z = other.Z; - W = other.W; - } - - public bool Equals(Quaternion other) - { - return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z) && W.Equals(other.W); - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - return obj is Quaternion && Equals((Quaternion) obj); - } - - public override int GetHashCode() - { - unchecked - { - var hashCode = X.GetHashCode(); - hashCode = (hashCode * 397) ^ Y.GetHashCode(); - hashCode = (hashCode * 397) ^ Z.GetHashCode(); - hashCode = (hashCode * 397) ^ W.GetHashCode(); - return hashCode; - } - } - - public static bool operator ==(Quaternion left, Quaternion right) - { - return left.Equals(right); - } - - public static bool operator !=(Quaternion left, Quaternion right) - { - return !left.Equals(right); - } - } -} \ No newline at end of file diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFMesh.cs b/GLTFSerialization/GLTFSerialization/Schema/GLTFMesh.cs deleted file mode 100644 index c715da48d..000000000 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFMesh.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using GLTF.Extensions; -using Newtonsoft.Json; - -namespace GLTF.Schema -{ - /// - /// A set of primitives to be rendered. A node can contain one or more meshes. - /// A node's transform places the mesh in the scene. - /// - public class GLTFMesh : GLTFChildOfRootProperty - { - /// - /// An array of primitives, each defining geometry to be rendered with - /// a material. - /// 1 - /// - public List Primitives; - - /// - /// Array of weights to be applied to the Morph Targets. - /// 0 - /// - public List Weights; - - public GLTFMesh() - { - } - - public GLTFMesh(GLTFMesh mesh, GLTFRoot gltfRoot) : base(mesh, gltfRoot) - { - if (mesh == null) return; - - if (mesh.Primitives != null) - { - Primitives = new List(mesh.Primitives.Count); - - foreach (MeshPrimitive primitive in mesh.Primitives) - { - Primitives.Add(new MeshPrimitive(primitive, gltfRoot)); - } - } - - if (mesh.Weights != null) - { - Weights = mesh.Weights.ToList(); - } - } - - - public static GLTFMesh Deserialize(GLTFRoot root, JsonReader reader) - { - var mesh = new GLTFMesh(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var curProp = reader.Value.ToString(); - - switch (curProp) - { - case "primitives": - mesh.Primitives = reader.ReadList(() => MeshPrimitive.Deserialize(root, reader)); - break; - case "weights": - mesh.Weights = reader.ReadDoubleList(); - break; - default: - mesh.DefaultPropertyDeserializer(root, reader); - break; - } - } - - return mesh; - } - - public override void Serialize(JsonWriter writer) - { - writer.WriteStartObject(); - - if (Primitives != null && Primitives.Count > 0) - { - writer.WritePropertyName("primitives"); - writer.WriteStartArray(); - foreach (var primitive in Primitives) - { - primitive.Serialize(writer); - } - writer.WriteEndArray(); - } - - if (Weights != null && Weights.Count > 0) - { - writer.WritePropertyName("weights"); - writer.WriteStartArray(); - foreach (var weight in Weights) - { - writer.WriteValue(weight); - } - writer.WriteEndArray(); - } - - base.Serialize(writer); - - writer.WriteEndObject(); - } - } -} diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFProperty.cs b/GLTFSerialization/GLTFSerialization/Schema/GLTFProperty.cs deleted file mode 100644 index 84434d09d..000000000 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFProperty.cs +++ /dev/null @@ -1,210 +0,0 @@ -using System; -using System.Collections.Generic; -using GLTF.Extensions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace GLTF.Schema -{ - public class GLTFProperty - { - private static Dictionary _extensionRegistry = new Dictionary() - { - { ExtTextureTransformExtensionFactory.EXTENSION_NAME, new ExtTextureTransformExtensionFactory() }, - { KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME, new KHR_materials_pbrSpecularGlossinessExtensionFactory() }, - { MSFT_LODExtensionFactory.EXTENSION_NAME, new MSFT_LODExtensionFactory() } - }; - private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); - - public static bool IsExtensionRegistered(string extensionName) - { - lock (_extensionRegistry) - { - return _extensionRegistry.ContainsKey(extensionName); - } - } - - public static void RegisterExtension(ExtensionFactory extensionFactory) - { - lock (_extensionRegistry) - { - _extensionRegistry[extensionFactory.ExtensionName] = extensionFactory; - } - } - - public static ExtensionFactory TryGetExtension(string extensionName) - { - lock (_extensionRegistry) - { - ExtensionFactory result; - if (_extensionRegistry.TryGetValue(extensionName, out result)) - { - return result; - } - return null; - } - } - - public static bool TryRegisterExtension(ExtensionFactory extensionFactory) - { - lock (_extensionRegistry) - { - if (_extensionRegistry.ContainsKey(extensionFactory.ExtensionName)) - { - return false; - } - _extensionRegistry.Add(extensionFactory.ExtensionName, extensionFactory); - return true; - } - } - - public Dictionary Extensions; - public JToken Extras; - - public GLTFProperty() - { - } - - public GLTFProperty(GLTFProperty property, GLTFRoot gltfRoot = null) - { - if (property == null) return; - - if (property.Extensions != null) - { - Extensions = new Dictionary(property.Extensions.Count); - foreach (KeyValuePair extensionKeyValuePair in property.Extensions) - { - Extensions.Add(extensionKeyValuePair.Key, extensionKeyValuePair.Value.Clone(gltfRoot)); - } - } - - if (property.Extras != null) - { - Extras = property.Extras.DeepClone(); - } - } - - public void DefaultPropertyDeserializer(GLTFRoot root, JsonReader reader) - { - switch (reader.Value.ToString()) - { - case "extensions": - Extensions = DeserializeExtensions(root, reader); - break; - case "extras": - // advance to property value - reader.Read(); - if (reader.TokenType != JsonToken.StartObject) - throw new Exception(string.Format("extras must be an object at: {0}", reader.Path)); - Extras = JToken.ReadFrom(reader); - break; - default: - SkipValue(reader); - break; - } - } - - private void SkipValue(JsonReader reader) - { - if (!reader.Read()) - { - throw new Exception("No value found."); - } - - if (reader.TokenType == JsonToken.StartObject) - { - SkipObject(reader); - } - else if (reader.TokenType == JsonToken.StartArray) - { - SkipArray(reader); - } - } - - private void SkipObject(JsonReader reader) - { - while (reader.Read() && reader.TokenType != JsonToken.EndObject) - { - if (reader.TokenType == JsonToken.StartArray) - { - SkipArray(reader); - } - else if (reader.TokenType == JsonToken.StartObject) - { - SkipObject(reader); - } - } - } - - private void SkipArray(JsonReader reader) - { - while (reader.Read() && reader.TokenType != JsonToken.EndArray) - { - if (reader.TokenType == JsonToken.StartArray) - { - SkipArray(reader); - } - else if (reader.TokenType == JsonToken.StartObject) - { - SkipObject(reader); - } - } - } - - private Dictionary DeserializeExtensions(GLTFRoot root, JsonReader reader) - { - if (reader.Read() && reader.TokenType != JsonToken.StartObject) - { - throw new GLTFParseException("GLTF extensions must be an object"); - } - - JObject extensions = (JObject)JToken.ReadFrom(reader); - var extensionsCollection = new Dictionary(); - - foreach (JToken child in extensions.Children()) - { - if (child.Type != JTokenType.Property) - { - throw new GLTFParseException("Children token of extensions should be properties"); - } - - JProperty childAsJProperty = (JProperty)child; - string extensionName = childAsJProperty.Name; - ExtensionFactory extensionFactory; - - lock (_extensionRegistry) - { - if (!_extensionRegistry.TryGetValue(extensionName, out extensionFactory)) - { - extensionFactory = _defaultExtensionFactory; - } - } - - extensionsCollection.Add(extensionName, extensionFactory.Deserialize(root, childAsJProperty)); - } - - return extensionsCollection; - } - - public virtual void Serialize(JsonWriter writer) - { - if (Extensions != null && Extensions.Count > 0) - { - writer.WritePropertyName("extensions"); - writer.WriteStartObject(); - foreach (var extension in Extensions) - { - JToken extensionToken = extension.Value.Serialize(); - extensionToken.WriteTo(writer); - } - writer.WriteEndObject(); - } - - if (Extras != null) - { - writer.WritePropertyName("extras"); - Extras.WriteTo(writer); - } - } - } -} diff --git a/GLTFSerialization/GLTFSerialization/Schema/MeshPrimitive.cs b/GLTFSerialization/GLTFSerialization/Schema/MeshPrimitive.cs deleted file mode 100644 index 50881c7dc..000000000 --- a/GLTFSerialization/GLTFSerialization/Schema/MeshPrimitive.cs +++ /dev/null @@ -1,379 +0,0 @@ -using System.Collections.Generic; -using GLTF.Extensions; -using Newtonsoft.Json; - -namespace GLTF.Schema -{ - /// - /// Geometry to be rendered with the given material. - /// - public class MeshPrimitive : GLTFProperty - { - /// - /// A dictionary object, where each key corresponds to mesh attribute semantic - /// and each value is the index of the accessor containing attribute's data. - /// - public Dictionary Attributes = new Dictionary(); - - /// - /// The index of the accessor that contains mesh indices. - /// When this is not defined, the primitives should be rendered without indices - /// using `drawArrays()`. When defined, the accessor must contain indices: - /// the `bufferView` referenced by the accessor must have a `target` equal - /// to 34963 (ELEMENT_ARRAY_BUFFER); a `byteStride` that is tightly packed, - /// i.e., 0 or the byte size of `componentType` in bytes; - /// `componentType` must be 5121 (UNSIGNED_BYTE), 5123 (UNSIGNED_SHORT) - /// or 5125 (UNSIGNED_INT), the latter is only allowed - /// when `OES_element_index_uint` extension is used; `type` must be `\"SCALAR\"`. - /// - public AccessorId Indices; - - /// - /// The index of the material to apply to this primitive when rendering. - /// - public MaterialId Material; - - /// - /// The type of primitives to render. All valid values correspond to WebGL enums. - /// - public DrawMode Mode = DrawMode.Triangles; - - /// - /// An array of Morph Targets, each Morph Target is a dictionary mapping - /// attributes (only "POSITION" and "NORMAL" supported) to their deviations - /// in the Morph Target (index of the accessor containing the attribute - /// displacements' data). - /// - /// TODO: Make dictionary key enums? - public List> Targets; - - public List TargetNames; - - public MeshPrimitive() - { - } - - public MeshPrimitive(MeshPrimitive meshPrimitive, GLTFRoot gltfRoot) : base(meshPrimitive) - { - if (meshPrimitive == null) return; - - if (meshPrimitive.Attributes != null) - { - Attributes = new Dictionary(meshPrimitive.Attributes.Count); - foreach (KeyValuePair attributeKeyValuePair in meshPrimitive.Attributes) - { - Attributes[attributeKeyValuePair.Key] = new AccessorId(attributeKeyValuePair.Value, gltfRoot); - } - } - - if (meshPrimitive.Indices != null) - { - Indices = new AccessorId(meshPrimitive.Indices, gltfRoot); - } - - if (meshPrimitive.Material != null) - { - Material = new MaterialId(meshPrimitive.Material, gltfRoot); - } - - Mode = meshPrimitive.Mode; - - if (meshPrimitive.Targets != null) - { - Targets = new List>(meshPrimitive.Targets.Count); - foreach (Dictionary targetToCopy in meshPrimitive.Targets) - { - Dictionary target = new Dictionary(targetToCopy.Count); - foreach (KeyValuePair targetKeyValuePair in targetToCopy) - { - target[targetKeyValuePair.Key] = new AccessorId(targetKeyValuePair.Value, gltfRoot); - } - Targets.Add(target); - } - } - - if (meshPrimitive.TargetNames != null) - { - TargetNames = new List(meshPrimitive.TargetNames); - } - } - - public static int[] GenerateIndices(int vertCount) - { - var indices = new int[vertCount]; - for (var i = 0; i < vertCount; i++) - { - indices[i] = i; - } - - return indices; - } - - // Taken from: http://answers.unity3d.com/comments/190515/view.html - // Official support for Mesh.RecalculateTangents should be coming in 5.6 - // https://feedback.unity3d.com/suggestions/recalculatetangents - /*private MeshPrimitiveAttributes CalculateAndSetTangents(MeshPrimitiveAttributes attributes) - { - var triangleCount = attributes.Triangles.Length; - var vertexCount = attributes.Vertices.Length; - - var tan1 = new Vector3[vertexCount]; - var tan2 = new Vector3[vertexCount]; - - attributes.Tangents = new Vector4[vertexCount]; - - for (long a = 0; a < triangleCount; a += 3) - { - long i1 = attributes.Triangles[a + 0]; - long i2 = attributes.Triangles[a + 1]; - long i3 = attributes.Triangles[a + 2]; - - var v1 = attributes.Vertices[i1]; - var v2 = attributes.Vertices[i2]; - var v3 = attributes.Vertices[i3]; - - var w1 = attributes.Uv[i1]; - var w2 = attributes.Uv[i2]; - var w3 = attributes.Uv[i3]; - - var x1 = v2.X - v1.X; - var x2 = v3.X - v1.X; - var y1 = v2.Y - v1.Y; - var y2 = v3.Y - v1.Y; - var z1 = v2.Z - v1.Z; - var z2 = v3.Z - v1.Z; - - var s1 = w2.X - w1.X; - var s2 = w3.X - w1.X; - var t1 = w2.Y - w1.Y; - var t2 = w3.Y - w1.Y; - - var r = 1.0f / (s1 * t2 - s2 * t1); - - var sdir = new Vector3((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r); - var tdir = new Vector3((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r); - - tan1[i1] += sdir; - tan1[i2] += sdir; - tan1[i3] += sdir; - - tan2[i1] += tdir; - tan2[i2] += tdir; - tan2[i3] += tdir; - } - - - for (long a = 0; a < vertexCount; ++a) - { - var n = attributes.Normals[a]; - var t = tan1[a]; - - Vector3.OrthoNormalize(ref n, ref t); - - attributes.Tangents[a].X = t.X; - attributes.Tangents[a].Y = t.Y; - attributes.Tangents[a].Z = t.Z; - - attributes.Tangents[a].W = (Vector3.Dot(Vector3.Cross(n, t), tan2[a]) < 0.0f) ? -1.0f : 1.0f; - } - - return attributes; - }*/ - - public static MeshPrimitive Deserialize(GLTFRoot root, JsonReader reader) - { - var primitive = new MeshPrimitive(); - - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var curProp = reader.Value.ToString(); - - switch (curProp) - { - case "attributes": - primitive.Attributes = reader.ReadAsDictionary(() => new AccessorId - { - Id = reader.ReadAsInt32().Value, - Root = root - }); - break; - case "indices": - primitive.Indices = AccessorId.Deserialize(root, reader); - break; - case "material": - primitive.Material = MaterialId.Deserialize(root, reader); - break; - case "mode": - primitive.Mode = (DrawMode)reader.ReadAsInt32().Value; - break; - case "targets": - primitive.Targets = reader.ReadList(() => - { - return reader.ReadAsDictionary(() => new AccessorId - { - Id = reader.ReadAsInt32().Value, - Root = root - }, - skipStartObjectRead: true); - }); - break; - case "extras": - // GLTF does not support morph target names, serialize in extras for now - // https://github.com/KhronosGroup/glTF/issues/1036 - if (reader.Read() && reader.TokenType == JsonToken.StartObject) - { - while (reader.Read() && reader.TokenType == JsonToken.PropertyName) - { - var extraProperty = reader.Value.ToString(); - switch (extraProperty) - { - case "targetNames": - primitive.TargetNames = reader.ReadStringList(); - break; - - } - - } - - } - - break; - default: - primitive.DefaultPropertyDeserializer(root, reader); - break; - } - } - - return primitive; - } - - public override void Serialize(JsonWriter writer) - { - writer.WriteStartObject(); - - writer.WritePropertyName("attributes"); - writer.WriteStartObject(); - foreach (var attribute in Attributes) - { - writer.WritePropertyName(attribute.Key); - writer.WriteValue(attribute.Value.Id); - } - writer.WriteEndObject(); - - if (Indices != null) - { - writer.WritePropertyName("indices"); - writer.WriteValue(Indices.Id); - } - - if (Material != null) - { - writer.WritePropertyName("material"); - writer.WriteValue(Material.Id); - } - - if (Mode != DrawMode.Triangles) - { - writer.WritePropertyName("mode"); - writer.WriteValue((int)Mode); - } - - if (Targets != null && Targets.Count > 0) - { - writer.WritePropertyName("targets"); - writer.WriteStartArray(); - foreach (var target in Targets) - { - writer.WriteStartObject(); - - foreach (var attribute in target) - { - writer.WritePropertyName(attribute.Key); - writer.WriteValue(attribute.Value.Id); - } - - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - - // GLTF does not support morph target names, serialize in extras for now - // https://github.com/KhronosGroup/glTF/issues/1036 - if (TargetNames != null && TargetNames.Count > 0) - { - writer.WritePropertyName("extras"); - writer.WriteStartObject(); - writer.WritePropertyName("targetNames"); - writer.WriteStartArray(); - foreach (var targetName in TargetNames) - { - writer.WriteValue(targetName); - } - writer.WriteEndArray(); - writer.WriteEndObject(); - } - - base.Serialize(writer); - - writer.WriteEndObject(); - } - } - - public static class SemanticProperties - { - public const string POSITION = "POSITION"; - public const string NORMAL = "NORMAL"; - public const string TANGENT = "TANGENT"; - public const string INDICES = "INDICES"; - - public const string TEXCOORD_0 = "TEXCOORD_0"; - public const string TEXCOORD_1 = "TEXCOORD_1"; - public const string TEXCOORD_2 = "TEXCOORD_2"; - public const string TEXCOORD_3 = "TEXCOORD_3"; - public static readonly string[] TexCoord = { TEXCOORD_0, TEXCOORD_1, TEXCOORD_2, TEXCOORD_3 }; - - public const string COLOR_0 = "COLOR_0"; - public static readonly string[] Color = { COLOR_0 }; - - public const string WEIGHTS_0 = "WEIGHTS_0"; - public static readonly string[] Weight = { WEIGHTS_0 }; - - public const string JOINTS_0 = "JOINTS_0"; - public static readonly string[] Joint = { JOINTS_0 }; - - /// - /// Parse out the index of a given semantic property. - /// - /// Semantic property to parse - /// Parsed index to assign - /// - public static bool ParsePropertyIndex(string property, out int index) - { - index = -1; - var parts = property.Split('_'); - - if (parts.Length != 2) - { - return false; - } - - if (!int.TryParse(parts[1], out index)) - { - return false; - } - - return true; - } - } - - public enum DrawMode - { - Points = 0, - Lines = 1, - LineLoop = 2, - LineStrip = 3, - Triangles = 4, - TriangleStrip = 5, - TriangleFan = 6 - } -} diff --git a/GLTFSerialization/GLTFSerialization/packages.config b/GLTFSerialization/GLTFSerialization/packages.config deleted file mode 100644 index 25636e4e9..000000000 --- a/GLTFSerialization/GLTFSerialization/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/GLTFSerialization/GLTFSerializationCLI/App.config b/GLTFSerialization/GLTFSerializationCLI/App.config deleted file mode 100644 index 731f6de6c..000000000 --- a/GLTFSerialization/GLTFSerializationCLI/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/GLTFSerializationCLI/GLTFSerializationCLI.csproj b/GLTFSerialization/GLTFSerializationCLI/GLTFSerializationCLI.csproj deleted file mode 100644 index 68748eb56..000000000 --- a/GLTFSerialization/GLTFSerializationCLI/GLTFSerializationCLI.csproj +++ /dev/null @@ -1,43 +0,0 @@ - - - GLTFSerializationCLI - GLTFSerializationCLI - Exe - false - - net461 - - true - - AnyCPU - prompt - 4 - - - - true - full - false - DEBUG;TRACE - - - - pdbonly - true - TRACE - - - - - - - - - - - - - - - - diff --git a/GLTFSerialization/GLTFSerializationCLI/Program.cs b/GLTFSerialization/GLTFSerializationCLI/Program.cs deleted file mode 100644 index bfdf2cc9a..000000000 --- a/GLTFSerialization/GLTFSerializationCLI/Program.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.IO; -using GLTF; -using GLTF.Schema; - - -namespace GLTFSerializationCLI -{ - class Program - { - static void Main(string[] args) - { - Console.WriteLine("GLTFSerialization CLI"); - if(args.Length == 0) - { - Console.WriteLine("Usage:"); - Console.WriteLine(" GLTFSerializationCLI [gltf_file]"); - - goto exit; - } - - Stream stream; - try - { - stream = System.IO.File.OpenRead(args[0]); - } - catch (DirectoryNotFoundException) - { - Console.WriteLine("Directory not found"); - goto exit; - } - catch (FileNotFoundException) - { - Console.WriteLine("File not found"); - goto exit; - } - - GLTFRoot root; - GLTFParser.ParseJson(stream, out root); - ExtTextureTransformExtension ext = (ExtTextureTransformExtension) - root.Materials[1].PbrMetallicRoughness.BaseColorTexture.Extensions["EXT_texture_transform"]; - root.Serialize(Console.Out); - Console.WriteLine(); - -exit: - if (System.Diagnostics.Debugger.IsAttached) - { - Console.WriteLine("Press Enter to exit..."); - Console.ReadLine(); - } - } - } -} diff --git a/GLTFSerialization/GLTFSerializationCLI/Properties/AssemblyInfo.cs b/GLTFSerialization/GLTFSerializationCLI/Properties/AssemblyInfo.cs deleted file mode 100644 index bdefdf881..000000000 --- a/GLTFSerialization/GLTFSerializationCLI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("GLTFSerializationCLI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("GLTFSerializationCLI")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("6d33a58f-e6c8-4ba4-9420-dff2afc8d813")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/GLTFSerialization/NuGet.config b/GLTFSerialization/NuGet.config deleted file mode 100644 index fe0f6362b..000000000 --- a/GLTFSerialization/NuGet.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLBBuilderTest.cs b/GLTFSerialization/Tests/GLTFSerializationTests/GLBBuilderTest.cs deleted file mode 100644 index 487434133..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLBBuilderTest.cs +++ /dev/null @@ -1,340 +0,0 @@ -using GLTF; -using GLTF.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace GLTFSerializationTests -{ - [TestClass] - public class GLBBuilderTest - { - [TestMethod] - public void CreateAndSaveFromEmptyStream() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 10, TestAssetPaths.GLB_EXTENSION); - - FileStream glbStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream); - Assert.IsNull(glbObject.Root); - - MemoryStream stream = new MemoryStream(); - StreamWriter writer = new StreamWriter(stream); - writer.Write(TestAssetPaths.MIN_GLTF_STR); - writer.Flush(); - stream.Position = 0; - - GLTFRoot gltfRoot; - GLTFParser.ParseJson(stream, out gltfRoot); - GLBBuilder.SetRoot(glbObject, gltfRoot); - - GLBBuilder.UpdateStream(glbObject); - - glbStream.Close(); - glbStream = new FileStream(outPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); - - glbObject = GLBBuilder.ConstructFromStream(glbStream); - Assert.IsNotNull(glbObject.Root); - Assert.AreEqual(glbObject.Root.Asset.Version, gltfRoot.Asset.Version); - glbStream.Close(); - } - - [TestMethod] - public void CreateEmptyStreamAndAppendGLB() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 11, TestAssetPaths.GLB_EXTENSION); - - FileStream glbStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream); - Assert.IsNull(glbObject.Root); - - MemoryStream stream = new MemoryStream(); - StreamWriter writer = new StreamWriter(stream); - writer.Write(TestAssetPaths.MIN_GLTF_STR); - writer.Flush(); - stream.Position = 0; - - GLTFRoot gltfRoot; - GLTFParser.ParseJson(stream, out gltfRoot); - GLBBuilder.SetRoot(glbObject, gltfRoot); - GLBBuilder.UpdateStream(glbObject); - - FileStream glbAppendStream = File.OpenRead(TestAssetPaths.GLB_BOOMBOX_PATH); - GLBObject glbAppendObject = GLBBuilder.ConstructFromStream(glbAppendStream); - GLBBuilder.AddBinaryData(glbObject, glbAppendStream, false, glbAppendObject.BinaryChunkInfo.StartPosition + GLTFParser.CHUNK_HEADER_SIZE); - - glbStream.Close(); - glbStream = new FileStream(outPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); - - glbObject = GLBBuilder.ConstructFromStream(glbStream); - Assert.IsNotNull(glbObject.Root); - Assert.AreEqual(glbAppendObject.BinaryChunkInfo.Length, glbObject.BinaryChunkInfo.Length); - glbStream.Close(); - } - - [TestMethod] - public void CreateGLBFromStream() - { - Assert.IsTrue(File.Exists(TestAssetPaths.GLB_BOOMBOX_PATH)); - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOOMBOX_PATH); - FileStream glbOutStream = File.Create(TestAssetPaths.GLB_BOOMBOX_OUT_PATH); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - - Assert.IsNotNull(glbObject.Root); - Assert.IsNotNull(glbObject.Stream); - Assert.AreEqual(0, glbObject.StreamStartPosition); - Assert.AreEqual(GLTFParser.HEADER_SIZE, glbObject.JsonChunkInfo.StartPosition); - Assert.AreEqual(glbStream.Length, glbObject.Header.FileLength); - - glbOutStream.Position = 0; - GLTFRoot glbOutRoot; - GLTFParser.ParseJson(glbOutStream, out glbOutRoot); - GLTFJsonLoadTestHelper.TestGLB(glbOutRoot); - } - - [TestMethod] - public void UpdateStream() - { - Assert.IsTrue(File.Exists(TestAssetPaths.GLB_BOOMBOX_PATH)); - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOOMBOX_PATH); - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 0, TestAssetPaths.GLB_EXTENSION); - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - - for (int i = 0; i < 10; ++i) - { - glbObject.Root.Nodes.Add(new Node - { - Mesh = new MeshId - { - Id = 0, - Root = glbObject.Root - } - }); - } - - GLBBuilder.UpdateStream(glbObject); - glbOutStream.Position = 0; - - GLTFRoot glbOutRoot; - GLTFParser.ParseJson(glbOutStream, out glbOutRoot); - FileStream glbFileStream = glbObject.Stream as FileStream; - Assert.AreEqual(glbFileStream, glbFileStream); - glbOutStream.Position = 0; - List chunkInfo = GLTFParser.FindChunks(glbOutStream); - Assert.AreEqual(2, chunkInfo.Count); - CompareBinaryData(glbObject, glbStream); - } - - [TestMethod] - public void AddBinaryDataToStream() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 1, TestAssetPaths.GLB_EXTENSION); - - Assert.IsTrue(File.Exists(TestAssetPaths.GLB_BOX_PATH)); - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH); - - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - - const int bufferSize = 101; - byte[] buffer = new byte[bufferSize]; - AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer)); - } - - [TestMethod] - public void AddFirstBinaryDataToStream() - { - MemoryStream stream = new MemoryStream(); - StreamWriter writer = new StreamWriter(stream); - writer.Write(TestAssetPaths.MIN_GLTF_STR); - writer.Flush(); - stream.Position = 0; - - MemoryStream writeStream = new MemoryStream(); - GLBObject glbObject = GLBBuilder.ConstructFromStream(stream, writeStream); - Assert.IsNull(glbObject.Root.Buffers); - - const uint bufferSize = 100; - byte[] buffer = new byte[bufferSize]; - AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer)); - } - - [TestMethod] - public void RemoveBinaryDataFromStream() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 2, TestAssetPaths.GLB_EXTENSION); - - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH); - - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - - const uint bufferSize = 100; - byte[] buffer = new byte[bufferSize]; - BufferViewId bufferViewId = AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer)); - uint length = (uint)bufferViewId.Value.ByteLength; - uint previousFileLength = glbObject.Header.FileLength; - uint previousBufferLength = glbObject.BinaryChunkInfo.Length; - int previousBufferViewCount = glbObject.Root.BufferViews.Count; - GLBBuilder.RemoveBinaryData(glbObject, bufferViewId); - Assert.AreEqual(previousFileLength - length, glbObject.Header.FileLength); - Assert.AreEqual(previousBufferLength - length, glbObject.BinaryChunkInfo.Length); - Assert.AreEqual(previousBufferLength - length, (uint)glbObject.Root.Buffers[0].ByteLength); - Assert.AreEqual(previousBufferViewCount - 1, glbObject.Root.BufferViews.Count); - } - - [TestMethod] - public void RemoveMiddleDataFromStream() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 3, TestAssetPaths.GLB_EXTENSION); - - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH); - - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - - const uint numBuffersToAdd = 5; - const uint bufferSize = 100; - BufferViewId[] bufferViews = new BufferViewId[numBuffersToAdd]; - for (int i = 0; i < numBuffersToAdd; ++i) - { - byte[] buffer = new byte[bufferSize]; - bufferViews[i] = AddBinaryDataToStreamHelper(glbObject, new MemoryStream(buffer)); - } - - uint previousFileLength = glbObject.Header.FileLength; - uint previousBufferLength = glbObject.BinaryChunkInfo.Length; - int previousBufferViewCount = glbObject.Root.BufferViews.Count; - GLBBuilder.RemoveBinaryData(glbObject, bufferViews[2]); // remove from the middle - Assert.AreEqual(previousFileLength, glbObject.Header.FileLength); - Assert.AreEqual(previousBufferLength, glbObject.BinaryChunkInfo.Length); - Assert.AreEqual(previousBufferViewCount - 1, glbObject.Root.BufferViews.Count); - } - - [TestMethod] - public void RemoveAllDataFromStream() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 3, TestAssetPaths.GLB_EXTENSION); - - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH); - - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - BufferViewId id0 = new BufferViewId - { - Id = 0, - Root = glbObject.Root - }; - - int numBufferViews = glbObject.Root.BufferViews.Count; - for (int i = 0; i < numBufferViews; ++i) - { - GLBBuilder.RemoveBinaryData(glbObject, id0); - } - - Assert.AreEqual(0, glbObject.Root.Buffers.Count); - Assert.AreEqual(0, glbObject.Root.BufferViews.Count); - } - - [TestMethod] - public void MergeGLBs() - { - Assert.IsTrue(File.Exists(TestAssetPaths.GLB_BOX_PATH)); - FileStream glbStream = File.OpenRead(TestAssetPaths.GLB_BOX_PATH); - FileStream glbStream1 = File.OpenRead(TestAssetPaths.GLB_BOOMBOX_PATH); - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 4, TestAssetPaths.GLB_EXTENSION); - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbStream, glbOutStream); - GLBObject glbObject1 = GLBBuilder.ConstructFromStream(glbStream1); - uint initialGLBLength = glbObject.BinaryChunkInfo.Length; - GLBBuilder.MergeGLBs(glbObject, glbObject1); - - Assert.AreEqual(initialGLBLength + glbObject1.BinaryChunkInfo.Length, glbObject.BinaryChunkInfo.Length); - } - - [TestMethod] - public void GLBSaveWithoutBinary() - { - string outPath = - TestAssetPaths.GetOutPath(TestAssetPaths.GLB_BOX_OUT_PATH_TEMPLATE, 15, TestAssetPaths.GLB_EXTENSION); - FileStream glbOutStream = new FileStream(outPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); - - // first create from empty stream - GLBObject glbObject = GLBBuilder.ConstructFromStream(glbOutStream); - uint initialGLBLength = glbObject.BinaryChunkInfo.Length; - - MemoryStream stream = new MemoryStream(); - StreamWriter writer = new StreamWriter(stream); - writer.Write(TestAssetPaths.MIN_GLTF_STR); - writer.Flush(); - stream.Position = 0; - - GLTFRoot newRoot; - GLTFParser.ParseJson(stream, out newRoot); - GLBBuilder.SetRoot(glbObject, newRoot); - GLBBuilder.UpdateStream(glbObject); - Assert.AreEqual(glbObject.Header.FileLength, glbObject.JsonChunkInfo.StartPosition + glbObject.JsonChunkInfo.Length + GLTFParser.CHUNK_HEADER_SIZE); - glbOutStream.Close(); - glbOutStream = new FileStream(outPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); - List chunks = GLTFParser.FindChunks(glbOutStream); - Assert.AreEqual(1, chunks.Count); - - glbOutStream.Position = 0; - GLBObject testObject = GLBBuilder.ConstructFromStream(glbOutStream); - - Assert.AreEqual(glbObject.JsonChunkInfo.Length, testObject.JsonChunkInfo.Length); - Assert.AreEqual(glbObject.BinaryChunkInfo.Length, testObject.BinaryChunkInfo.Length); - } - - private BufferViewId AddBinaryDataToStreamHelper(GLBObject glbObject, Stream blobToAdd) - { - int previousCount = 0; - if (glbObject.Root.BufferViews != null) - { - previousCount = glbObject.Root.BufferViews.Count; - } - - uint previousGLBLength = glbObject.Header.FileLength; - uint previousChunkLength = glbObject.BinaryChunkInfo.Length; - - uint bufferSize = GLBBuilder.CalculateAlignment((uint)blobToAdd.Length, 4); - BufferViewId bufferViewId = GLBBuilder.AddBinaryData(glbObject, blobToAdd); - - uint headerModifier = previousChunkLength == 0 ? GLTFParser.CHUNK_HEADER_SIZE : 0; - Assert.AreEqual(previousCount + 1, glbObject.Root.BufferViews.Count); - Assert.AreEqual(previousCount, bufferViewId.Id); - Assert.AreEqual(previousGLBLength + bufferSize + headerModifier, glbObject.Header.FileLength); - Assert.AreEqual(previousChunkLength + bufferSize, glbObject.BinaryChunkInfo.Length); - Assert.AreEqual(previousChunkLength + bufferSize, glbObject.Root.Buffers[0].ByteLength); - Assert.AreEqual(glbObject.Header.FileLength, glbObject.Stream.Length); - - return bufferViewId; - } - - private void CompareBinaryData(GLBObject resultObject, FileStream sourceStream) - { - MemoryStream outStream = new MemoryStream(); - GLBObject sourceGLB = GLBBuilder.ConstructFromStream(sourceStream, outStream); - byte[] resultObjectBinary = new byte[resultObject.BinaryChunkInfo.Length]; - resultObject.Stream.Position = resultObject.BinaryChunkInfo.StartPosition; - resultObject.Stream.Read(resultObjectBinary, 0, resultObjectBinary.Length); - - byte[] sourceObjectBinary = new byte[sourceGLB.BinaryChunkInfo.Length]; - sourceGLB.Stream.Position = sourceGLB.BinaryChunkInfo.StartPosition; - sourceGLB.Stream.Read(sourceObjectBinary, 0, sourceObjectBinary.Length); - - Assert.IsTrue(resultObjectBinary.SequenceEqual(sourceObjectBinary)); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFBenchmark.cs b/GLTFSerialization/Tests/GLTFSerializationTests/GLTFBenchmark.cs deleted file mode 100644 index 95b37229e..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFBenchmark.cs +++ /dev/null @@ -1,70 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections; -using GLTFJsonSerialization; -using UnityEngine.Networking; -using System.Text; -using System.IO; - -public class GLTFBenchmark : MonoBehaviour -{ - public string[] GLTFUrls = new string[] - { - "http://localhost:8080/BoomBox/glTF/BoomBox.gltf", - "http://localhost:8080/Lantern/glTF/Lantern.gltf", - "http://localhost:8080/Corset/glTF/Corset.gltf" - }; - public int NumberOfIterations = 5; - public bool SaveCSV = true; - - IEnumerator Start () - { - var timer = new System.Diagnostics.Stopwatch(); - - var csv = new StringBuilder(); - - csv.AppendLine("Name, Time (ms)"); - - Debug.Log("Start Parsing Benchmark."); - - foreach (var gltfUrl in GLTFUrls) - { - var www = UnityWebRequest.Get(gltfUrl); - yield return www.Send(); - - Debug.LogFormat("Benchmarking: {0}", gltfUrl); - long totalTime = 0; - for (var i = 0; i < NumberOfIterations; i++) - { - timer.Start(); - GLTFParser.ParseJson(Encoding.ASCII.GetBytes(www.downloadHandler.text)); - timer.Stop(); - - Debug.LogFormat("Iteration {0} took: {1}ms", i, timer.ElapsedMilliseconds); - totalTime += timer.ElapsedMilliseconds; - } - - var avgTime = (float)totalTime / NumberOfIterations; - Debug.LogFormat("Average parse time {0}ms", avgTime); - csv.AppendFormat("{0}, {1}\n", gltfUrl, avgTime); - } - - - - Debug.Log("End Parsing Benchmark."); - - Debug.Log("Done."); - - if (SaveCSV) - { - var fileName = string.Format("glTFBench_{0}iter", NumberOfIterations); - var path = EditorUtility.SaveFilePanel("Save GLTF Benchmark .csv", "", fileName, "csv"); - - if (path != null) - { - File.WriteAllText(path, csv.ToString()); - Debug.LogFormat("Benchmark written to: {0}", path); - } - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoadTestHelper.cs b/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoadTestHelper.cs deleted file mode 100644 index 01e7e5919..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoadTestHelper.cs +++ /dev/null @@ -1,315 +0,0 @@ -using System.Collections.Generic; -using GLTF.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Newtonsoft.Json.Linq; - -namespace GLTFSerializationTests -{ - public class TestExtension : IExtension - { - public float Glossiness { get; set; } - - public IExtension Clone(GLTFRoot root) - { - return new TestExtension() - { - Glossiness = Glossiness - }; - } - - public JProperty Serialize() - { - JProperty glossinessProperty = new JProperty("glossiness", Glossiness); - JObject testExtensionObject = new JObject(glossinessProperty); - JProperty testExtensionProperty = new JProperty("testExtension", testExtensionObject); - return testExtensionProperty; - } - } - - public class TestExtensionFactory : ExtensionFactory - { - public TestExtensionFactory() - { - ExtensionName = "testExtension"; - } - - - public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) - { - Assert.IsNotNull(extensionToken.Value["glossiness"]); - float glossiness = (float)extensionToken.Value["glossiness"]; - Assert.AreEqual(.8, glossiness, .01f); - - return new TestExtension() - { - Glossiness = glossiness - }; - } - } - - class GLTFJsonLoadTestHelper - { - private static void TestAccessor(Accessor accessor, GLTFAccessorAttributeType type, uint count, GLTFComponentType componentType, int bufferViewId, List max, List min) - { - Assert.AreEqual(type, accessor.Type); - Assert.AreEqual(count, accessor.Count); - Assert.AreEqual(componentType, accessor.ComponentType); - Assert.AreEqual(bufferViewId, accessor.BufferView.Id); - Assert.AreEqual(min.Count, accessor.Min.Count); - Assert.AreEqual(max.Count, accessor.Max.Count); - - for (int i = 0; i < max.Count; ++i) - { - Assert.AreEqual(max[i], accessor.Max[i], .000001f); - } - - for (int i = 0; i < min.Count; ++i) - { - Assert.AreEqual(min[i], accessor.Min[i], .000001f); - } - } - - private static void TestAccessors(GLTFRoot gltfRoot) - { - List accessors = gltfRoot.Accessors; - Assert.AreEqual(5, accessors.Count); - TestAccessor(accessors[0], GLTFAccessorAttributeType.VEC2, 3575, GLTFComponentType.Float, 0, new List { 0.9999003f, -0.0221377648f }, new List { 0.0006585993f, -0.996773958f }); - TestAccessor(accessors[1], GLTFAccessorAttributeType.VEC3, 3575, GLTFComponentType.Float, 1, new List { 1.0f, 1.0f, 0.9999782f }, new List { -1.0f, -1.0f, -0.9980823f }); - TestAccessor(accessors[2], GLTFAccessorAttributeType.VEC4, 3575, GLTFComponentType.Float, 2, new List { 1.0f, 0.9999976f, 1.0f, 1.0f }, new List { -0.9991289f, -0.999907851f, -1.0f, 1.0f }); - TestAccessor(accessors[3], GLTFAccessorAttributeType.VEC3, 3575, GLTFComponentType.Float, 3, new List { 0.009921154f, 0.00977163f, 0.0100762453f }, new List { -0.009921154f, -0.00977163f, -0.0100762453f }); - TestAccessor(accessors[4], GLTFAccessorAttributeType.SCALAR, 18108, GLTFComponentType.UnsignedShort, 4, new List { 3574f }, new List { 0f }); - } - - private static void TestGLBAccessors(GLTFRoot gltfRoot) - { - List accessors = gltfRoot.Accessors; - Assert.AreEqual(5, accessors.Count); - TestAccessor(accessors[0], GLTFAccessorAttributeType.VEC2, 3575, GLTFComponentType.Float, 4, new List { 0.9999003f, -0.0221377648f }, new List { 0.0006585993f, -0.996773958f }); - TestAccessor(accessors[1], GLTFAccessorAttributeType.VEC3, 3575, GLTFComponentType.Float, 5, new List { 1.0f, 1.0f, 0.9999782f }, new List { -1.0f, -1.0f, -0.9980823f }); - TestAccessor(accessors[2], GLTFAccessorAttributeType.VEC4, 3575, GLTFComponentType.Float, 6, new List { 1.0f, 0.9999976f, 1.0f, 1.0f }, new List { -0.9991289f, -0.999907851f, -1.0f, 1.0f }); - TestAccessor(accessors[3], GLTFAccessorAttributeType.VEC3, 3575, GLTFComponentType.Float, 7, new List { 0.009921154f, 0.00977163f, 0.0100762453f }, new List { -0.009921154f, -0.00977163f, -0.0100762453f }); - TestAccessor(accessors[4], GLTFAccessorAttributeType.SCALAR, 18108, GLTFComponentType.UnsignedShort, 8, new List { 3574f }, new List { 0f }); - } - - private static void TestAssetData(GLTFRoot gltfRoot) - { - Assert.AreEqual("2.0", gltfRoot.Asset.Version); - Assert.AreEqual("glTF Tools for Unity", gltfRoot.Asset.Generator); - } - - private static void TestBufferView(BufferView bufferView, int buffer, uint byteOffset, uint byteLenth) - { - Assert.AreEqual(buffer, bufferView.Buffer.Id); - Assert.AreEqual(byteOffset, bufferView.ByteOffset); - Assert.AreEqual(byteLenth, bufferView.ByteLength); - } - - private static void TestBufferViews(GLTFRoot gltfRoot) - { - List bufferViews = gltfRoot.BufferViews; - Assert.AreEqual(5, gltfRoot.BufferViews.Count); - TestBufferView(bufferViews[0], 0, 0, 28600); - TestBufferView(bufferViews[1], 0, 28600, 42900); - TestBufferView(bufferViews[2], 0, 71500, 57200); - TestBufferView(bufferViews[3], 0, 128700, 42900); - TestBufferView(bufferViews[4], 0, 171600, 36216); - } - - private static void TestGLBBufferViews(GLTFRoot gltfRoot) - { - List bufferViews = gltfRoot.BufferViews; - Assert.AreEqual(9, gltfRoot.BufferViews.Count); - TestBufferView(bufferViews[0], 0, 0, 3285844); - TestBufferView(bufferViews[1], 0, 3285844, 4775529); - TestBufferView(bufferViews[2], 0, 8061373, 2845923); - TestBufferView(bufferViews[3], 0, 10907296, 132833); - TestBufferView(bufferViews[4], 0, 11040132, 28600); - TestBufferView(bufferViews[5], 0, 11068732, 42900); - TestBufferView(bufferViews[6], 0, 11111632, 57200); - TestBufferView(bufferViews[7], 0, 11168832, 42900); - TestBufferView(bufferViews[8], 0, 11211732, 36216); - } - - private static void TestBuffers(GLTFRoot gltfRoot) - { - List buffers = gltfRoot.Buffers; - Assert.AreEqual(1, buffers.Count); - Assert.AreEqual("BoomBox.bin", buffers[0].Uri); - Assert.AreEqual((uint)207816, buffers[0].ByteLength); - } - - private static void TestGLBBuffers(GLTFRoot gltfRoot) - { - List buffers = gltfRoot.Buffers; - Assert.AreEqual(1, buffers.Count); - Assert.AreEqual((uint)11247948, buffers[0].ByteLength); - } - - private static void TestImages(GLTFRoot gltfRoot) - { - List images = gltfRoot.Images; - Assert.AreEqual(4, images.Count); - Assert.AreEqual("BoomBox_baseColor.png", images[0].Uri); - Assert.AreEqual("BoomBox_occlusionRoughnessMetallic.png", images[1].Uri); - Assert.AreEqual("BoomBox_normal.png", images[2].Uri); - Assert.AreEqual("BoomBox_emissive.png", images[3].Uri); - } - - private static void TestGLBImages(GLTFRoot gltfRoot) - { - List images = gltfRoot.Images; - Assert.AreEqual(4, images.Count); - Assert.AreEqual(0, images[0].BufferView.Id); - Assert.AreEqual(1, images[1].BufferView.Id); - Assert.AreEqual(2, images[2].BufferView.Id); - Assert.AreEqual(3, images[3].BufferView.Id); - - foreach (GLTFImage image in images) - { - Assert.AreEqual("image/png", image.MimeType); - } - } - - private static void TestMeshes(GLTFRoot gltfRoot) - { - List meshes = gltfRoot.Meshes; - Assert.AreEqual(1, meshes.Count); - - Assert.AreEqual("BoomBox", meshes[0].Name); - List primitives = meshes[0].Primitives; - Assert.AreEqual(1, primitives.Count); - - Assert.AreEqual(4, primitives[0].Indices.Id); - Assert.AreEqual(0, primitives[0].Material.Id); - - var attributes = primitives[0].Attributes; - Assert.IsTrue(attributes.ContainsKey("TEXCOORD_0")); - Assert.AreEqual(0, attributes["TEXCOORD_0"].Id); - - Assert.IsTrue(attributes.ContainsKey("NORMAL")); - Assert.AreEqual(1, attributes["NORMAL"].Id); - - Assert.IsTrue(attributes.ContainsKey("TANGENT")); - Assert.AreEqual(2, attributes["TANGENT"].Id); - - Assert.IsTrue(attributes.ContainsKey("POSITION")); - Assert.AreEqual(3, attributes["POSITION"].Id); - } - - private static void TestMaterials(GLTFRoot gltfRoot) - { - List materials = gltfRoot.Materials; - Assert.AreEqual(1, materials.Count); - - Assert.AreEqual(0, materials[0].PbrMetallicRoughness.BaseColorTexture.Index.Id); - Assert.AreEqual(1, materials[0].PbrMetallicRoughness.MetallicRoughnessTexture.Index.Id); - - Assert.AreEqual(2, materials[0].NormalTexture.Index.Id); - Assert.AreEqual(1, materials[0].OcclusionTexture.Index.Id); - - Assert.AreEqual(1.0f, materials[0].EmissiveFactor.R); - Assert.AreEqual(1.0f, materials[0].EmissiveFactor.G); - Assert.AreEqual(1.0f, materials[0].EmissiveFactor.B); - Assert.AreEqual(1.0f, materials[0].EmissiveFactor.A); - - Assert.AreEqual(3, materials[0].EmissiveTexture.Index.Id); - Assert.AreEqual("BoomBox_Mat", materials[0].Name); - - var extensions = materials[0].Extensions; - if (extensions != null) - { - Assert.AreEqual(1, extensions.Count); - } - } - - private static void TestNodes(GLTFRoot gltfRoot) - { - List nodes = gltfRoot.Nodes; - Assert.AreEqual(1, nodes.Count); - - Node node = nodes[0]; - Assert.AreEqual(0, node.Mesh.Id); - Assert.AreEqual("BoomBox", node.Name); - - JProperty extras = node.Extras as JProperty; - if (extras != null) - { - Assert.AreEqual(JTokenType.Object, extras.Value.Type); - - JObject jObject = extras.Value as JObject; - JToken testFloatProperty = jObject["nodeInfo"]; - Assert.AreEqual(JTokenType.Float, testFloatProperty.Type); - Assert.AreEqual(1000.4f, testFloatProperty.Value()); - - JToken testHierarchyProperty = jObject["nodeHierarchy"]; - Assert.AreEqual(JTokenType.Object, testHierarchyProperty.Type); - JToken testHierarchy1Property = (testHierarchyProperty as JObject)["nodeHierarchy1"]; - Assert.AreEqual(JTokenType.Object, testHierarchyProperty.Type); - } - } - - private static void TestScenes(GLTFRoot gltfRoot) - { - Assert.AreEqual(0, gltfRoot.Scene.Id); - List scenes = gltfRoot.Scenes; - Assert.AreEqual(1, scenes.Count); - - Assert.AreEqual(1, scenes[0].Nodes.Count); - Assert.AreEqual(0, scenes[0].Nodes[0].Id); - } - - private static void TestTextures(GLTFRoot gltfRoot) - { - List textures = gltfRoot.Textures; - Assert.AreEqual(4, textures.Count); - - Assert.AreEqual(0, textures[0].Source.Id); - Assert.AreEqual(1, textures[1].Source.Id); - Assert.AreEqual(2, textures[2].Source.Id); - Assert.AreEqual(3, textures[3].Source.Id); - } - - private static void TestExtras(GLTFRoot gltfRoot) - { - Assert.IsNotNull(gltfRoot.Extras); - - JObject jObject = gltfRoot.Extras as JObject; - JToken testIntProperty = jObject["testint"]; - Assert.AreEqual(JTokenType.Integer, testIntProperty.Type); - Assert.AreEqual(254, testIntProperty.Value()); - - JToken testStringProperty = jObject["teststring"]; - Assert.AreEqual(JTokenType.String, testStringProperty.Type); - Assert.AreEqual("hello", testStringProperty.Value()); - } - - public static void TestGLTF(GLTFRoot gltfRoot) - { - TestAccessors(gltfRoot); - TestAssetData(gltfRoot); - TestBufferViews(gltfRoot); - TestBuffers(gltfRoot); - TestImages(gltfRoot); - TestMeshes(gltfRoot); - TestMaterials(gltfRoot); - TestNodes(gltfRoot); - TestScenes(gltfRoot); - TestTextures(gltfRoot); - TestExtras(gltfRoot); - } - - public static void TestGLB(GLTFRoot gltfRoot) - { - TestGLBAccessors(gltfRoot); - TestAssetData(gltfRoot); - TestGLBBufferViews(gltfRoot); - TestGLBBuffers(gltfRoot); - TestGLBImages(gltfRoot); - TestMeshes(gltfRoot); - TestMaterials(gltfRoot); - TestNodes(gltfRoot); - TestScenes(gltfRoot); - TestTextures(gltfRoot); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoaderTest.cs b/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoaderTest.cs deleted file mode 100644 index 4a9dc4fb7..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFLoaderTest.cs +++ /dev/null @@ -1,65 +0,0 @@ -using GLTF; -using GLTF.Math; -using GLTF.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.IO; - -namespace GLTFSerializationTests -{ - [TestClass] - public class GLTFJsonLoaderTest - { - private readonly string GLTF_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF/BoomBox.gltf"; - private readonly string GLTF_PBR_SPECGLOSS_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-pbrSpecularGlossiness/Lantern.gltf"; - private readonly string GLB_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-Binary/BoomBox.glb"; - - public TestContext TestContext { get; set; } - - [TestMethod] - public void LoadGLTFFromStream() - { - Assert.IsTrue(File.Exists(TestAssetPaths.GLTF_PATH)); - FileStream gltfStream = File.OpenRead(TestAssetPaths.GLTF_PATH); - - GLTFRoot.RegisterExtension(new TestExtensionFactory()); - GLTFRoot gltfRoot = null; - GLTFParser.ParseJson(gltfStream, out gltfRoot); - GLTFJsonLoadTestHelper.TestGLTF(gltfRoot); - } - - [TestMethod] - public void LoadKHRSpecGlossGLTFFromStream() - { - Assert.IsTrue(File.Exists(GLTF_PBR_SPECGLOSS_PATH)); - FileStream gltfStream = File.OpenRead(GLTF_PBR_SPECGLOSS_PATH); - - GLTFRoot gltfRoot; - GLTFParser.ParseJson(gltfStream, out gltfRoot); - - Assert.IsNotNull(gltfRoot.ExtensionsUsed); - Assert.IsTrue(gltfRoot.ExtensionsUsed.Contains(KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME)); - - Assert.IsNotNull(gltfRoot.Materials); - Assert.AreEqual(1, gltfRoot.Materials.Count); - GLTFMaterial materialDef = gltfRoot.Materials[0]; - KHR_materials_pbrSpecularGlossinessExtension specGloss = materialDef.Extensions[KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME] as KHR_materials_pbrSpecularGlossinessExtension; - Assert.IsTrue(specGloss != null); - - Assert.AreEqual(Color.White, specGloss.DiffuseFactor); - Assert.AreEqual(4, specGloss.DiffuseTexture.Index.Id); - Assert.AreEqual(KHR_materials_pbrSpecularGlossinessExtension.SPEC_FACTOR_DEFAULT, specGloss.SpecularFactor); - Assert.AreEqual(KHR_materials_pbrSpecularGlossinessExtension.GLOSS_FACTOR_DEFAULT, specGloss.GlossinessFactor); - Assert.AreEqual(5, specGloss.SpecularGlossinessTexture.Index.Id); - } - - [TestMethod] - public void LoadGLBFromStream() - { - Assert.IsTrue(File.Exists(GLB_PATH)); - FileStream gltfStream = File.OpenRead(GLB_PATH); - GLTFRoot gltfRoot; - GLTFParser.ParseJson(gltfStream, out gltfRoot); - GLTFJsonLoadTestHelper.TestGLB(gltfRoot); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFRootTests.cs b/GLTFSerialization/Tests/GLTFSerializationTests/GLTFRootTests.cs deleted file mode 100644 index 8a9765c1b..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFRootTests.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.Text; -using GLTF; -using System.IO; -using GLTF.Schema; - -namespace GLTFSerializationTests -{ - [TestClass] - public class GLTFRootTest - { - private readonly string testStr = @" - { - ""asset"": { - ""version"": ""2.0"" - } - } - "; - - private GLTFRoot _testRoot; - - [TestInitialize] - public void Initialize() - { - MemoryStream stream = new MemoryStream(); - StreamWriter writer = new StreamWriter(stream); - writer.Write(testStr); - writer.Flush(); - stream.Position = 0; - - GLTFParser.ParseJson(stream, out _testRoot); - - } - - [TestMethod] - public void TestMinimumGLTF() - { - Assert.AreEqual(_testRoot.Asset.Version, "2.0"); - } - - [TestMethod] - public void TestCopyMinGLTF() - { - GLTFRoot root = new GLTFRoot(_testRoot); - Assert.IsNotNull(root); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFSerializationTests.csproj b/GLTFSerialization/Tests/GLTFSerializationTests/GLTFSerializationTests.csproj deleted file mode 100644 index 3a3ac250b..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/GLTFSerializationTests.csproj +++ /dev/null @@ -1,100 +0,0 @@ - - - - - Debug - AnyCPU - {821B87A3-D8FA-407A-BC58-928A859C71C4} - Library - Properties - GLTFSerializationTests - GLTFSerializationTests - v4.6 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 15.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - ..\..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - - - ..\..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - - ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - {72ac331f-9810-4de2-8ea3-84559a787218} - GLTFSerialization - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/MergeNodesTest.cs b/GLTFSerialization/Tests/GLTFSerializationTests/MergeNodesTest.cs deleted file mode 100644 index 050ea0b66..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/MergeNodesTest.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using GLTF; -using GLTF.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.IO; - -namespace GLTFSerializationTests -{ - [TestClass] - public class MergeNodesTest - { - private readonly string GLTF_BOOMBOX_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF/BoomBox.gltf"; - private readonly string GLTF_LANTERN_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF/Lantern.gltf"; - - [TestMethod] - public void MergeNodes() - { - Assert.IsTrue(File.Exists(GLTF_BOOMBOX_PATH)); - Assert.IsTrue(File.Exists(GLTF_LANTERN_PATH)); - - FileStream gltfBoomBoxStream = File.OpenRead(GLTF_BOOMBOX_PATH); - GLTFRoot boomBoxRoot; - GLTFParser.ParseJson(gltfBoomBoxStream, out boomBoxRoot); - - FileStream gltfLanternStream = File.OpenRead(GLTF_LANTERN_PATH); - GLTFRoot lanternRoot; - GLTFParser.ParseJson(gltfLanternStream, out lanternRoot); - - GLTFRoot boomBoxCopy = new GLTFRoot(boomBoxRoot); - - GLTFHelpers.MergeGLTF(boomBoxRoot, lanternRoot); - - Assert.AreNotEqual(boomBoxRoot.Nodes, boomBoxCopy.Nodes); - - Assert.AreNotEqual(boomBoxCopy.Accessors.Count, boomBoxRoot.Accessors.Count); - Assert.AreNotEqual(boomBoxCopy.Meshes.Count, boomBoxRoot.Meshes.Count); - Assert.AreNotEqual(boomBoxCopy.Nodes.Count, boomBoxRoot.Nodes.Count); - Assert.AreNotEqual(boomBoxCopy.BufferViews.Count, boomBoxRoot.BufferViews.Count); - Assert.AreNotEqual(boomBoxCopy.Buffers.Count, boomBoxRoot.Buffers.Count); - Assert.AreNotEqual(boomBoxCopy.Images.Count, boomBoxRoot.Images.Count); - Assert.AreNotEqual(boomBoxCopy.Materials.Count, boomBoxRoot.Materials.Count); - Assert.AreNotEqual(boomBoxCopy.Textures.Count, boomBoxRoot.Textures.Count); - Assert.AreNotEqual(boomBoxCopy.Scenes.Count, boomBoxRoot.Scenes.Count); - - Assert.AreEqual(boomBoxCopy.Accessors.Count + lanternRoot.Accessors.Count, boomBoxRoot.Accessors.Count); - Assert.AreEqual(boomBoxCopy.Meshes.Count + lanternRoot.Meshes.Count, boomBoxRoot.Meshes.Count); - Assert.AreEqual(boomBoxCopy.Nodes.Count + lanternRoot.Nodes.Count, boomBoxRoot.Nodes.Count); - Assert.AreEqual(boomBoxCopy.BufferViews.Count + lanternRoot.BufferViews.Count, boomBoxRoot.BufferViews.Count); - Assert.AreEqual(boomBoxCopy.Buffers.Count + lanternRoot.Buffers.Count, boomBoxRoot.Buffers.Count); - Assert.AreEqual(boomBoxCopy.Images.Count + lanternRoot.Images.Count, boomBoxRoot.Images.Count); - Assert.AreEqual(boomBoxCopy.Materials.Count + lanternRoot.Materials.Count, boomBoxRoot.Materials.Count); - Assert.AreEqual(boomBoxCopy.Textures.Count + lanternRoot.Textures.Count, boomBoxRoot.Textures.Count); - Assert.AreEqual(boomBoxCopy.Scenes.Count + lanternRoot.Scenes.Count, boomBoxRoot.Scenes.Count); - - // test no throw - StringWriter stringWriter = new StringWriter(); - boomBoxRoot.Serialize(stringWriter); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/Properties/AssemblyInfo.cs b/GLTFSerialization/Tests/GLTFSerializationTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 3d022b021..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyTitle("GLTFSerializerTests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("GLTFSerializerTests")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -[assembly: ComVisible(false)] - -[assembly: Guid("821b87a3-d8fa-407a-bc58-928a859c71c4")] - -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/TestAssetPaths.cs b/GLTFSerialization/Tests/GLTFSerializationTests/TestAssetPaths.cs deleted file mode 100644 index cbb1afa5c..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/TestAssetPaths.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.IO; - -namespace GLTFSerializationTests -{ - public static class TestAssetPaths - { - public static readonly string GLTF_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF/BoomBox.gltf"; - public static readonly string GLTF_PBR_SPECGLOSS_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-pbrSpecularGlossiness/Lantern.gltf"; - public static readonly string GLB_BOOMBOX_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-Binary/BoomBox.glb"; - public static readonly string GLB_BOOMBOX_OUT_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-Binary/BoomBox_out.glb"; - public static readonly string GLB_BOX_PATH = Directory.GetCurrentDirectory() + "/../../../../External/glTF-Binary/Box.glb"; - public static readonly string GLB_BOX_OUT_PATH_TEMPLATE = Directory.GetCurrentDirectory() + "/../../../../External/glTF-Binary/BoxOut"; - public static readonly string GLB_EXTENSION = ".glb"; - public static readonly string MIN_GLTF_STR = @" - { - ""asset"": { - ""version"": ""2.0"" - } - } - "; - public static string GetOutPath(string pathTemplate, int num, string extension) - { - return pathTemplate + num + extension; - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationTests/packages.config b/GLTFSerialization/Tests/GLTFSerializationTests/packages.config deleted file mode 100644 index 1051ae289..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationTests/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/LockScreenLogo.scale-200.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 735f57adb..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/LockScreenLogo.scale-200.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/SplashScreen.scale-200.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 023e7f1fe..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/SplashScreen.scale-200.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square150x150Logo.scale-200.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index af49fec1a..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square150x150Logo.scale-200.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.scale-200.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index ce342a2ec..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.scale-200.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index f6c02ce97..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/StoreLogo.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/StoreLogo.png deleted file mode 100644 index 7385b56c0..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/StoreLogo.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Wide310x150Logo.scale-200.png b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Wide310x150Logo.scale-200.png deleted file mode 100644 index 288995b39..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/Wide310x150Logo.scale-200.png and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/BoomBox.gltf b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/BoomBox.gltf deleted file mode 100644 index 6178cd7f3..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/BoomBox.gltf +++ /dev/null @@ -1,191 +0,0 @@ -{ - "accessors": [{ - "bufferView": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC2", - "max": [ - 0.9999003, -0.0221377648 - ], - "min": [ - 0.0006585993, -0.996773958 - ] - }, - { - "bufferView": 1, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.9999782 - ], - "min": [-1.0, -1.0, -0.9980823] - }, - { - "bufferView": 2, - "componentType": 5126, - "count": 3575, - "type": "VEC4", - "max": [ - 1.0, - 0.9999976, - 1.0, - 1.0 - ], - "min": [-0.9991289, -0.999907851, -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 0.009921154, - 0.00977163, - 0.0100762453 - ], - "min": [-0.009921154, -0.00977163, -0.0100762453] - }, - { - "bufferView": 4, - "componentType": 5123, - "count": 18108, - "type": "SCALAR", - "max": [ - 3574 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [{ - "buffer": 0, - "byteLength": 28600 - }, - { - "buffer": 0, - "byteOffset": 28600, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 71500, - "byteLength": 57200 - }, - { - "buffer": 0, - "byteOffset": 128700, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 171600, - "byteLength": 36216 - } - ], - "buffers": [{ - "uri": "BoomBox.bin", - "byteLength": 207816 - }], - "images": [{ - "uri": "BoomBox_baseColor.png" - }, - { - "uri": "BoomBox_occlusionRoughnessMetallic.png" - }, - { - "uri": "BoomBox_normal.png" - }, - { - "uri": "BoomBox_emissive.png" - } - ], - "meshes": [{ - "primitives": [{ - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0 - }], - "name": "BoomBox" - }], - "materials": [{ - "pbrMetallicRoughness": { - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "occlusionTexture": { - "index": 1 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "extensions": { - "testExtension": { - "glossiness": 0.8 - } - }, - "name": "BoomBox_Mat" - }], - "nodes": [{ - "mesh": 0, - "name": "BoomBox", - "extras": { - "nodeInfo": 1000.4, - "nodeHierarchy": { - "nodeHierarchy1": { - "nodeInfoBool": true, - "nodeInfoString": "hello_world" - } - } - } - }], - "scene": 0, - "scenes": [{ - "nodes": [ - 0 - ] - }], - "textures": [{ - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - } - ], - "extras": { - "testint": 254, - "teststring": "hello" - } -} \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/Lantern.gltf b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/Lantern.gltf deleted file mode 100644 index c2face9c4..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Assets/glTF/Lantern.gltf +++ /dev/null @@ -1,525 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC2", - "max": [ - 0.992169142, - -0.007998445 - ], - "min": [ - 0.0107366741, - -0.992534757 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC4", - "max": [ - 1.0, - 0.9999658, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.962171, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 7.74559927, - 12.8321095, - 2.31570983 - ], - "min": [ - -7.74559927, - -12.8321095, - -2.31570983 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 2616, - "type": "SCALAR", - "max": [ - 925 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 5, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC2", - "max": [ - 0.8007193, - -0.0581455827 - ], - "min": [ - 0.351246148, - -0.361011624 - ] - }, - { - "bufferView": 6, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.999998 - ], - "min": [ - -1.0, - -1.0, - -0.999998 - ] - }, - { - "bufferView": 7, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC4", - "max": [ - 0.9997526, - 1.0, - 0.999752462, - 1.0 - ], - "min": [ - -0.9995128, - -1.0, - -0.999752462, - 1.0 - ] - }, - { - "bufferView": 8, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 0.129208073, - 0.6523504, - 0.129208073 - ], - "min": [ - -0.129208073, - -0.6523504, - -0.129208073 - ] - }, - { - "bufferView": 9, - "byteOffset": 0, - "componentType": 5123, - "count": 3744, - "type": "SCALAR", - "max": [ - 755 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 10, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC2", - "max": [ - 0.9923278, - -0.00728821754 - ], - "min": [ - 0.3673209, - -0.413352221 - ] - }, - { - "bufferView": 11, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 12, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC4", - "max": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 13, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.03408229, - 2.529281, - 1.03408468 - ], - "min": [ - -1.03408229, - -2.529281, - -1.03408468 - ] - }, - { - "bufferView": 14, - "byteOffset": 0, - "componentType": 5123, - "count": 9822, - "type": "SCALAR", - "max": [ - 2462 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 7408 - }, - { - "buffer": 0, - "byteOffset": 7408, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 18520, - "byteLength": 14816 - }, - { - "buffer": 0, - "byteOffset": 33336, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 44448, - "byteLength": 5232 - }, - { - "buffer": 0, - "byteOffset": 49680, - "byteLength": 6048 - }, - { - "buffer": 0, - "byteOffset": 55728, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 64800, - "byteLength": 12096 - }, - { - "buffer": 0, - "byteOffset": 76896, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 85968, - "byteLength": 7488 - }, - { - "buffer": 0, - "byteOffset": 93456, - "byteLength": 19704 - }, - { - "buffer": 0, - "byteOffset": 113160, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 142716, - "byteLength": 39408 - }, - { - "buffer": 0, - "byteOffset": 182124, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 211680, - "byteLength": 19644 - } - ], - "buffers": [ - { - "uri": "Lantern.bin", - "byteLength": 231324 - } - ], - "extensionsUsed": [ - "KHR_materials_pbrSpecularGlossiness" - ], - "images": [ - { - "uri": "Lantern_baseColor.png" - }, - { - "uri": "Lantern_roughnessMetallic.png" - }, - { - "uri": "Lantern_normal.png" - }, - { - "uri": "Lantern_emissive.png" - }, - { - "uri": "Lantern_diffuse.png" - }, - { - "uri": "Lantern_specularGlossiness.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Body" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 5, - "NORMAL": 6, - "TANGENT": 7, - "POSITION": 8 - }, - "indices": 9, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Chain" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 10, - "NORMAL": 11, - "TANGENT": 12, - "POSITION": 13 - }, - "indices": 14, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Lantern" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.214041144, - 0.214041144, - 0.214041144, - 1.0 - ], - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "LanternPost_Mat", - "extensions": { - "KHR_materials_pbrSpecularGlossiness": { - "diffuseTexture": { - "index": 4 - }, - "specularGlossinessTexture": { - "index": 5 - } - } - } - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "translation": [ - -3.82315421, - 13.01603, - 0.0 - ], - "name": "LanternPole_Body" - }, - { - "children": [], - "mesh": 1, - "translation": [ - -9.582001, - 21.0378723, - 0.0 - ], - "name": "LanternPole_Chain" - }, - { - "children": [], - "mesh": 2, - "translation": [ - -9.582007, - 18.0091515, - 0.0 - ], - "name": "LanternPole_Lantern" - }, - { - "children": [ - 0, - 1, - 2 - ], - "scale": [ - 0.06, - 0.06, - 0.06 - ], - "translation": [ - 0.237, - -0.758, - 0.0 - ], - "name": "Lantern" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 3 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - }, - { - "source": 4 - }, - { - "source": 5 - } - ] -} \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializationUWPTests.csproj b/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializationUWPTests.csproj deleted file mode 100644 index 679cd4f23..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializationUWPTests.csproj +++ /dev/null @@ -1,182 +0,0 @@ - - - - - Debug - x86 - {EAD1EF7E-A898-4741-9DF5-269A33E6F875} - AppContainerExe - Properties - GLTFSerializationUWPTests - GLTFSerializationUWPTests - en-US - UAP - 10.0.14393.0 - 10.0.10586.0 - 14 - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - GLTFSerializerUWPTests_TemporaryKey.pfx - $(VisualStudioVersion) - - - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x86 - false - prompt - true - - - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x86 - false - prompt - true - true - - - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - ARM - false - prompt - true - - - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - ARM - false - prompt - true - true - - - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x64 - false - prompt - true - - - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x64 - false - prompt - true - true - - - - - - - - - - - - GLTFLoadTestHelper.cs - - - - - UnitTestApp.xaml - - - - - MSBuild:Compile - Designer - - - - - Designer - - - - - - - - - - - - - - - - - - {72ac331f-9810-4de2-8ea3-84559a787218} - GLTFSerialization - - - - 14.0 - - - true - bin\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS - ;2008 - true - full - x86 - false - prompt - MinimumRecommendedRules.ruleset - true - - - bin\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS - true - ;2008 - true - pdbonly - AnyCPU - false - prompt - MinimumRecommendedRules.ruleset - true - - - - - - - - - - diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializerUWPTests_TemporaryKey.pfx b/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializerUWPTests_TemporaryKey.pfx deleted file mode 100644 index ef8883341..000000000 Binary files a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFSerializerUWPTests_TemporaryKey.pfx and /dev/null differ diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFUWPLoaderTest.cs b/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFUWPLoaderTest.cs deleted file mode 100644 index 177b15c7d..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/GLTFUWPLoaderTest.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using GLTF; -using GLTFSerializationTests; -using System.Threading.Tasks; -using Windows.Storage; -using Windows.Storage.Streams; -using GLTF.Schema; -using GLTF.Math; -using System.IO; - -namespace GLTFSerializerUWPTests -{ - [TestClass] - public class GLTFUWPJsonLoaderTest - { - readonly string GLTF_PATH = @"ms-appx:///Assets/glTF/BoomBox.gltf"; - readonly string GLTF_PBR_SPECGLOSS_PATH = @"ms-appx:///Assets/glTF/Lantern.gltf"; - - [TestMethod] - public async Task LoadGLTFFromStreamUWP() - { - StorageFolder localFolder = ApplicationData.Current.LocalFolder; - StorageFile sampleFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(GLTF_PATH)); - - IRandomAccessStream gltfStream = await sampleFile.OpenAsync(FileAccessMode.Read); - var reader = new DataReader(gltfStream.GetInputStreamAt(0)); - - GLTFRoot gltfRoot; - GLTFParser.ParseJson(gltfStream.AsStream(), out gltfRoot); - GLTFJsonLoadTestHelper.TestGLTF(gltfRoot); - } - - [TestMethod] - public async Task LoadKHRSpecGlossGLTFFromStreamUWP() - { - StorageFolder localFolder = ApplicationData.Current.LocalFolder; - StorageFile sampleFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(GLTF_PBR_SPECGLOSS_PATH)); - - - IRandomAccessStream gltfStream = await sampleFile.OpenAsync(FileAccessMode.Read); - GLTFRoot gltfRoot; - GLTFParser.ParseJson(gltfStream.AsStreamForRead(), out gltfRoot); - - Assert.IsNotNull(gltfRoot.ExtensionsUsed); - Assert.IsTrue(gltfRoot.ExtensionsUsed.Contains(KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME)); - - Assert.IsNotNull(gltfRoot.Materials); - Assert.AreEqual(1, gltfRoot.Materials.Count); - GLTFMaterial materialDef = gltfRoot.Materials[0]; - KHR_materials_pbrSpecularGlossinessExtension specGloss = materialDef.Extensions[KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME] as KHR_materials_pbrSpecularGlossinessExtension; - Assert.IsTrue(specGloss != null); - - Assert.AreEqual(Color.White, specGloss.DiffuseFactor); - Assert.AreEqual(4, specGloss.DiffuseTexture.Index.Id); - Assert.AreEqual(KHR_materials_pbrSpecularGlossinessExtension.SPEC_FACTOR_DEFAULT, specGloss.SpecularFactor); - Assert.AreEqual(KHR_materials_pbrSpecularGlossinessExtension.GLOSS_FACTOR_DEFAULT, specGloss.GlossinessFactor); - Assert.AreEqual(5, specGloss.SpecularGlossinessTexture.Index.Id); - } - } -} diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Package.appxmanifest b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Package.appxmanifest deleted file mode 100644 index 683bfd249..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Package.appxmanifest +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - GLTFSerializerUWPTests - blgross - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/AssemblyInfo.cs b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 618aac79b..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyTitle("GLTFSerializerUWPTests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("GLTFSerializerUWPTests")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: AssemblyMetadata("TargetPlatform","UAP")] - -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: ComVisible(false)] \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/UnitTestApp.rd.xml b/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/UnitTestApp.rd.xml deleted file mode 100644 index fbbc6cfd9..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/Properties/UnitTestApp.rd.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml b/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml deleted file mode 100644 index 03c2c5f40..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml.cs b/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml.cs deleted file mode 100644 index 403926bfe..000000000 --- a/GLTFSerialization/Tests/GLTFSerializationUWPTests/UnitTestApp.xaml.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel; -using Windows.ApplicationModel.Activation; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; - -namespace GLTFSerializerUWPTests -{ - /// - /// Provides application-specific behavior to supplement the default Application class. - /// - sealed partial class App : Application - { - /// - /// Initializes the singleton application object. This is the first line of authored code - /// executed, and as such is the logical equivalent of main() or WinMain(). - /// - public App() - { - this.InitializeComponent(); - this.Suspending += OnSuspending; - } - - /// - /// Invoked when the application is launched normally by the end user. Other entry points - /// will be used such as when the application is launched to open a specific file. - /// - /// Details about the launch request and process. - protected override void OnLaunched(LaunchActivatedEventArgs e) - { - -#if DEBUG - if (System.Diagnostics.Debugger.IsAttached) - { - this.DebugSettings.EnableFrameRateCounter = true; - } -#endif - - Frame rootFrame = Window.Current.Content as Frame; - - // Do not repeat app initialization when the Window already has content, - // just ensure that the window is active - if (rootFrame == null) - { - // Create a Frame to act as the navigation context and navigate to the first page - rootFrame = new Frame(); - - rootFrame.NavigationFailed += OnNavigationFailed; - - if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) - { - //TODO: Load state from previously suspended application - } - - // Place the frame in the current Window - Window.Current.Content = rootFrame; - } - - Microsoft.VisualStudio.TestPlatform.TestExecutor.UnitTestClient.CreateDefaultUI(); - - // Ensure the current window is active - Window.Current.Activate(); - - Microsoft.VisualStudio.TestPlatform.TestExecutor.UnitTestClient.Run(e.Arguments); - } - - /// - /// Invoked when Navigation to a certain page fails - /// - /// The Frame which failed navigation - /// Details about the navigation failure - void OnNavigationFailed(object sender, NavigationFailedEventArgs e) - { - throw new Exception("Failed to load Page " + e.SourcePageType.FullName); - } - - /// - /// Invoked when application execution is being suspended. Application state is saved - /// without knowing whether the application will be terminated or resumed with the contents - /// of memory still intact. - /// - /// The source of the suspend request. - /// Details about the suspend request. - private void OnSuspending(object sender, SuspendingEventArgs e) - { - var deferral = e.SuspendingOperation.GetDeferral(); - //TODO: Save application state and stop any background activity - deferral.Complete(); - } - } -} diff --git a/LICENSE b/LICENSE index eebb85bba..b516974b9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,8 @@ The MIT License (MIT) Copyright (c) 2017 AltspaceVR +Copyright (c) 2020-2023 prefrontal cortex +Copyright (c) 2022-2023 Needle Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +20,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +THE SOFTWARE. \ No newline at end of file diff --git a/LICENSE.meta b/LICENSE.meta new file mode 100644 index 000000000..64b16f9d2 --- /dev/null +++ b/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bd8f03e5a28549848a4a3de0c199b9ba +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md index c631c05d8..6c124b0cd 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,394 @@ -# UnityGLTF +# UnityGLTF -UnityGLTF: [![Build Status](https://travis-ci.org/KhronosGroup/UnityGLTF.svg?branch=master)](https://travis-ci.org/KhronosGroup/UnityGLTF) +![Great coverage of glTF 2.0.](https://img.shields.io/badge/glTF%20Spec-2.0-brightgreen) +![Unity 2021.3+ and URP recommended](https://img.shields.io/badge/Unity-2021.3%E2%80%932023.1%2B-brightgreen) +![Support for 2020.3 is not actively maintained](https://img.shields.io/badge/Unity-2020.3-yellow) -GLTFSerialization: [![Build status](https://ci.appveyor.com/api/projects/status/amgnavcqiiiqhjbl/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/unitygltf/branch/master) +![URP supported](https://img.shields.io/badge/Render%20Pipeline-URP-brightgreen) +![BiRP supported with better support on 2021.3+](https://img.shields.io/badge/Render%20Pipeline-Built--in-brightgreen) +![HDRP support is not actively maintained](https://img.shields.io/badge/Render%20Pipeline-HDRP-yellow) -[![Join the chat at https://gitter.im/KhronosGroup/UnityGLTF](https://badges.gitter.im/KhronosGroup/UnityGLTF.svg)](https://gitter.im/KhronosGroup/UnityGLTF?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +Unity3D library for importing and exporting [glTF 2.0](https://github.com/KhronosGroup/glTF/) assets. -Unity3D library for importing and exporting [GLTF 2.0](https://github.com/KhronosGroup/glTF/) assets. +| | Editor | Runtime | +|--------|--------|---------| +| Import | ✅ | ✅ | +| Export | ✅ | ✅ | -The goal of this library is to support the full glTF 2.0 specification and enable the following scenarios: -- Run-time import of glTF 2.0 files -- Run-time export of glTF 2.0 files -- Design-time import of glTF 2.0 files -- Design-time export of glTF 2.0 files +UnityGLTF doesn't have any native dependencies (pure C#) and thus works on all platforms that Unity supports. This includes WebGL import and export. -The library will be modularized such that it can be extended to support additional capabilities in Unity or support additional extensions to the glTF specification. The library was designed to work with Unity 5.6 and above, but is currently only tested/maintained/supported with Unity 2018 and above. +The library is designed to be easy to extend with additional extensions to the glTF specification. Both import and export allow attaching custom plugins and callbacks and can be heavily modified to fit into specific pipelines. Many glTF extensions are supported. -## Current Status +## Contents +- [Installation](#installation) +- [Unity Version and Render Pipeline Compatibility](#unity-version-and-render-pipeline-compatibility) +- [UnityGLTF and glTFast](#unitygltf-and-gltfast) +- [Supported Features and Extensions](#supported-features-and-extensions) + - [Import and Export](#import-and-export) + - [Export only](#export-only) + - [Import only](#import-only) +- [glTF Materials](#gltf-materials) + - [Material Conversions](#material-conversions) + - [Configure for Refractive Materials (Transmission and Volume)](#configure-for-refractive-materials-transmission-and-volume) + - [Material Setup](#material-setup) + - [URP](#urp) + - [Built-In](#built-in) + - [HDRP](#hdrp) + - [Material and Shader Export Compatibility](#material-and-shader-export-compatibility) +- [Exporting glTF Files](#exporting-gltf-files) + - [Testing, debugging, compatibility](#testing-debugging-compatibility) +- [Animation Export](#animation-export) + - [Animator Controller](#animator-controller) + - [GLTFRecorder](#gltfrecorder-api) + - [Timeline Recorder](#timeline-recorder) + - [Legacy: Animation Component](#legacy-animation-component) + - [KHR\_animation\_pointer](#khr_animation_pointer-support) +- [Blendshape Export](#blend-shape-export) +- [Importing glTF files](#importing-gltf-files) + - [Editor Import](#editor-import) + - [Default Importer Selection](#default-importer-selection) +- [Animation Import](#animation-import) +- [Extensibility](#extensibility) +- [Known Issues](#known-issues) +- [Contributing](#contributing) + - [Unity Package](#unity-package) + - [GLTFSerializer](#gltfserializer) + - [Tests](#tests) -Work Items and Issues targeting a 1.0 release of the library can be found in -[Road to 1.0](https://github.com/KhronosGroup/UnityGLTF/projects/1) +## Installation -## Getting Started +You can install this package from git, compatible with UPM (Unity Package Manager). +1. Open `Window > Package Manager` +2. Click + +3. Select Add Package from git URL +4. Paste + ``` + https://github.com/prefrontalcortex/UnityGLTF.git + ``` +5. Click Add. -- This section is dedicated to those who wish to contribute to the project. This should clarify the main project structure without flooding you with too many details. -- UnityGLTF project is divided into two parts: the GLTFSerializer (Visual Studio Solution), and the Unity Project (which is the package we wish to make available to users). +> **Note**: If you want to target a specific version, append `#release/` or a specific commit to the URL above. -### [GLTFSerializer](https://github.com/KhronosGroup/UnityGLTF/tree/master/GLTFSerialization) +## Unity Version and Render Pipeline Compatibility -- **Basic Rundown**: The GLTFSerializer is a C# DLL implemented to facilitate serialization of the Unity asset model, and deserialization of GLTF assets. +The best results for import and export workflows with material extensions can be achieved on Unity 2021.3.8f1+ with URP. -- **Structure**: - - Each GLTF schemas (Buffer, Accessor, Camera, Image...) extends the basic class: GLTFChildOfRootProperty. Through this object model, each schema can have its own defined serialization/deserialization functionalities, which imitate the JSON file structure as per the GLTF specification. - - Each schema can then be grouped under the GLTFRoot object, which represents the underlying GLTF Asset. Serializing the asset is then done by serializing the root object, which recursively serializes all individual schemas. Deserializing a GLTF asset is done similarly: instantiate a GLTFRoot, and parse the required schemas. -- **Building**: You will need to build this library into the Plugins folder of the core Unity project: - 1. Open `GLTFSerialization\GLTFSerialization.sln` and compile for release. This will put the binaries in `UnityGLTF\Assets\UnityGLTF\Runtime\Plugins`. - 2. Open the Unity project located in `UnityGLTF\`. - * If the meta file gets overridden, the binaries in `UnityGLTF\Assets\UnityGLTF\Runtime\Plugins` should be configured for everything but UWP. The binaries in `UnityGLTF\Assets\UnityGLTF\Runtime\Plugins\UWP` should be configured for UWP. +**Recommended:** +- Unity 2021.3+ +- Linear colorspace +- Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) -### [The Unity Project](https://github.com/KhronosGroup/UnityGLTF/tree/master/UnityGLTF) +**Supported:** +- Unity 2020.3+ +- Linear colorspace +- Universal Render Pipeline (URP) and Built-In Render Pipeline (BiRP) + +**Legacy:** +These configurations have been working in the past. They will not be updated with material extensions or new features. Also, issues in these configurations will most likely not be addressed if they're not also happening on later versions. +- Unity 2018.4–2019.4 +- Gamma colorspace + +> **Note:** Issues on non-LTS Unity versions (not on 2020.3, 2021.3, 2022.3, ...) will most likely not be addressed. Please use LTS (Long-Term Support) versions where possible. + +## UnityGLTF and glTFast + +UnityGLTF hasn't received official support since early 2020. However, a number of forks have fixed issues and improved several key areas, especially animation support,export workflows, color spaces and extendibility. These forks have now been merged back into main so that everyone can benefit from then, and to enable further work. + +A separate glTF implementation for Unity, [glTFast](https://github.com/atteneder/glTFast), is on its path towards becoming feature complete. +At the time of writing they have about the same level of _import support_ and UnityGLTF has better _export support_. + +glTFast and UnityGLTF can coexist in the same project; you can for example use glTFast for import and UnityGLTF for export, where each of these shine. For imported assets, you can choose which importer to use with a dropdown. glTFast import has precedence if both are in the same project. + +Key differences to glTFast include: +- glTFast leverages Unity-specific features such as Burst and Jobs and thus can have better performance in some cases +- glTFast has better HDRP support. +- UnityGLTF has a versatile plugin/extension infrastructure. This allows for a lot of flexibility during import/export. +- UnityGLTF enables using non-ratified extensions such as `KHR_animation_pointer`, `KHR_audio`, and `KHR_materials_variants` to allow testing how they fit into production pipelines. + +## Supported Features and Extensions +The lists below are non-conclusive and in no particular order. Note that there are gaps where features could easily be supported for im- and export but currently aren't. PRs welcome! + +### Import and Export + +- Animations +- Skinned Mesh Renderers +- Blend Shapes + - Sparse accessors for Blend Shapes +- Linear and Gamma colorspace support (Gamma won't be maintained anymore) +- Vertex Colors +- Cameras (perspective, orthographic) +- URP and Built-In Render Pipeline [Learn More](#material-and-shader-export-compatibility) +- KHR_lights_punctual (point, spot, and directional lights) +- KHR_texture_transform (UV offset, scale, rotation) +- KHR_materials_unlit +- KHR_materials_transmission (glass-like materials) +- KHR_materials_volume (refractive materials) +- KHR_materials_ior (for transmission and volume) +- KHR_materials_emissive_strength (emissive values greater than 1) +- KHR_materials_iridescence (thin-film interference, like oil on water) +- KHR_materials_clearcoat (secondary specular layer, like a coat of varnish) +- KHR_materials_sheen (cloth, partial support) +- KHR_materials_specular (partial support) +- MSFT_lods (level of detail) + +### Import only + +- KHR_mesh_quantization +- KHR_draco_mesh_compression (requires com.atteneder.draco) +- KHR_texture_basisu (requires com.atteneder.ktx) +- EXT_meshopt_compression (requires com.unity.meshopt.decompress) + +### Export only + +- KHR_animation_pointer +- Timeline recorder track for exporting animations at runtime +- Lossless keyframe optimization on export (animation is baked but redundant keyframes are removed) +- All 2D textures can be exported, RenderTextures included – they're baked at export. + +## glTF Materials + +To leverage the extended material model of glTF in Unity, use the `UnityGLTF/PBRGraph` material. +It allows the use of various glTF material extensions for import, export, and inside Unity. +This includes features that URP is missing, such as transmission, volume, and per-texture UV control. + +### Material Conversions + +UnityGLTF contains helpers to make converting to UnityGLTF/PBRGraph easy. +When you switch a material from any shader to PBRGraph, an automatic conversion can run to bring the properties over. +Some shaders already come with automatic conversions, please see the table below. + +When a shader doesn't have a converter yet, UnityGLTF will ask if you want to create a *Conversion Script*. These scripts contain all properties of the source shader and the target shader, but no specified mapping yet (as that depends on the intent of the shader author). +After the conversion script has been created, you can edit it to correctly map from the source shader's properties to PBRGraph properties. +When you switch such a shader to PBRGraph the next time, your conversion script will run and automatically translate the materials in the specified way. + +> **Note:** Currently, conversion scripts aren't used automatically on glTF export. Convert materials at edit time for best results. + +### Material and Shader Export Compatibility + +If you want to design for glTF export, it's recommended to use Unity 2021.3+ with URP and the **UnityGLTF/PBRGraph** material. It comes with support for modern material extensions like refraction and iridescence, and allows for perfect roundtrips. Great for building glTF pipelines in and out of Unity. + +| Render Pipeline | Shader | Notes | Source | +|----------------------------------------|--------------------------------------------------------------|----------------------------------------|--------------------| +| URP on 2020.3+
Built-In on 2021.3+ | **UnityGLTF/PBRGraph**
☝️ *Use this if you're not sure* | Perfect roundtrip, Material Extensions | UnityGLTF | +| | UnityGLTF/UnlitGraph | Perfect roundtrip | UnityGLTF | +| | ShaderGraphs/glTF-pbrMetallicRoughness | | glTFast | +| | ShaderGraphs/glTF-unlit | | glTFast | +| URP | URP/Lit | | Unity | +| | URP/Unlit | | Unity | +| Built-In | Standard | | Unity | +| | GLTF/PbrMetallicRoughness | | UnityGLTF (legacy) | +| | GLTF/Unlit | | UnityGLTF (legacy) | +| | glTF/PbrMetallicRoughness | | glTFast (legacy) | +| | glTF/Unlit | | glTFast (legacy) | +| HDRP (limited support) | HDRP/Lit | | Unity | +| | HDRP/Unlit | | Unity | + +### Configure for Refractive Materials (Transmission and Volume) + +Transmission and Volume allow rendering materials like glass, that are fully transparent but still show reflections, as well as volume attenuation (e.g. colored jelly) and rough refraction (e.g. brushed glass). +To use these material features, you need to do some setup on the material and your render pipeline. + +#### Material Setup +1. On a PBRGraph material, check "Enable Transmission" and optionally "Enable Volume" +2. Change the Transmission, Thickness, Index of Refraction and Attenuation values as desired. + +#### URP +To see transmissive and volume materials correctly in Unity, +1. Select your URP Renderer Asset +2. Under the "Renderer Features" section, add a "Opaque Texture (Rough Refraction)" feature + +#### Built-In +To see transmissive and volume materials correctly in Unity, +1. Add the "RoughRefraction" component to your Main Camera. + +#### HDRP +HDRP has its own rough refraction support. There's currently no automatic import / export support to convert to that. Use glTFast if you need this. + +> **Note**: Fully metallic materials are never transparent. See [the KHR_materials_transmission spec](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md#transparent-metals) for more info. + +## Exporting glTF Files + +To export an object from a scene or your project, +1. Select the object +2. Use the menu items under `Assets > UnityGLTF > Export selected as GLB` / `Export selected as glTF` to export + +> **Tip:** You can set shortcuts for quick export in Unity's Shortcut Manager. For example, +Ctrl + Space for GLB export and Ctrl + Shift + Space for glTF export allow for very fast iteration. + +### Testing, debugging, compatibility + +The various glTF viewers in existence have varying feature sets. Only a select few have full coverage of the glTF spec, most only support a subset. +Notable features with limited support: + +- setting `textureCoord` per texture. +- setting `textureRotation`. Many viewers simply ignore it. +- sparse accessors. Some viewers support sparse accessors only for blend shapes, others don't support it at all. +- vertex colors. + +To view your glTF files, here's a number of tools you can use: + +| Name | Notes | +|------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| [gltf.report](https://gltf.report)
(based on three.js) | Great for inspecting file size, meshes, textures | +| [model-viewer](https://modelviewer.dev/editor)
(based on three.js) | Support for KHR_materials_variants with custom code | +| [Gestaltor]() | Full glTF Spec Compliance
Support for KHR_animation_pointer
Support for KHR_audio
Support for KHR_materials_variants | +| [Babylon.js Sandbox](https://sandbox.babylonjs.com/) | Support for KHR_animation_pointer | +| UnityGLTF
(this project!) | Simply drop the exported glb file back into Unity. | +| [glTFast](https://github.com/atteneder/glTFast) | Add the glTFast package to your project.
You can switch the used importer on glTF files between glTFast and UnityGLTF. | + +To further process files after exporting them with UnityGLTF, you can use: + +| Name | Notes | +|----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| +| [gltf-transform](https://gltf-transform.donmccurdy.com/) | Compress meshes with draco or meshopt
Compress textures to ktx2
Optimize Files
Convert between .gltf and .glb | + +## Animation Export + +Animations can be exported both in the Editor and at runtime. +Editor export works with Animator (multiple clips), Animation (multiple clips), and Timeline (GLTFRecorderTrack). + +### Animator Controller + +You can export entire Animators and their clips as glTF files with multiple animations. +Animation clips will be named after each Motion State in the Animator Controller. +The "speed" property of each Motion will be baked into the exported clip. Ensure the speed is 1 when you want to export unchanged. +Any number of Animators in a hierarchy is supported, as is any number of clips in those. + +Both Humanoid and Generic animations will be exported. Humanoid animations are baked onto the target rig at export time. + +> **Note**: Animator export only works in the Editor. For runtime export, use the GLTFRecorder capabilities or the Timeline Recorder. + +### GLTFRecorder API + +For creating and/or recording animations at runtime, you can use the GLTFRecorder API. It allows to capture the state of entire hierarchies and complex animations and export them directly as glTF file, +optionally with KHR_animation_pointer support for complex material and property animations. +See `GLTFRecorderComponent` for an example implementation. + +### Timeline Recorder + +Timelines or sections of them can be recorded with a `GltfRecorderTrack` and one or more `GltfRecorderClips`. +Timeline recording uses the GLTFRecorder API under the hood. + +### Legacy Animation Component + +> **Note**: Animation Component export only works in the Editor. For runtime export, use the GLTFRecorder capabilities. + +Animation components and their legacy clips can also be exported. + +### KHR_animation_pointer support + +UnityGLTF supports exporting animations with the KHR_animation_pointer extension. +The core glTF spec only allows animation node transforms and blend shape weights, while this extension allows animating arbitrary properties in the glTF file – +including material and object properties, even in custom extensions and script components. + +Exporting with KHR_animation_pointer can be turned on in `Project Settings > UnityGLTF` by enabling the KHR_animation_pointer plugin. + +> **Note:** The exported files can be viewed with Gestaltor, Babylon Sandbox, and Needle Engine, but currently not with three.js / model-viewer. See https://github.com/mrdoob/three.js/pull/24108. They can also not be reimported into UnityGLTF at this point. + +## Blend Shape Export + +Morph Targets / Blend Shapes / Shape Keys are supported, including animations. +To create smaller files for complex blend shape animations (e.g. faces with dozens of shapes), export with the "Sparse Accessors" setting enabled. + +## Importing glTF files + +### Editor Import + +For importing `.gltf` or `.glb` files in the editor, place them in your project as usual (Assets or Packages). +Make sure to bring .bin/textures along for `.gltf` files with the correct relative paths;`.glb` is usually self-contained. + +When moving `.gltf` files inside Unity, make sure to move their .bin/texture files as well, to not break the path references between them. + +### Default Importer Selection + +UnityGLTF will register itself as the default importer for the `.gltf` and .`glb` extensions. +If the [glTFast package](https://github.com/atteneder/glTFast) is also present in a project, **glTFast gets precedence** and UnityGLTF is available as Importer Override, which can be selected from a dropdown on each glTF asset. + +UnityGLTF uses Unity's `ScriptedImporter` system. For any given file format (file extension) there has to be one default importer and there can be additional, alternative importers. +You can make UnityGLTF the default importer and de-prioritize glTFast by adding the following settings to your project's `Scripting Defines`: + +``` +GLTFAST_FORCE_DEFAULT_IMPORTER_OFF +UNITYGLTF_FORCE_DEFAULT_IMPORTER_ON +``` + +Care has been taken to align glTFast's and UnityGLTF's importers, so that in most cases you can switch between them without breaking prefab references. That being said, switching between importers can change material references, mesh references etc., so some manual adjustments may be needed. +You may have to adjust the root stripping settings of each importer (glTFast and UnityGLTF do that slightly differently). + +## Animation Import + +Animations can be imported both in the Editor and at runtime. +On the importer, you can choose between "Legacy", "Mecanim" or "Humanoid" clips. + +At runtime, if you're importing "Mecanim" clips, you need to make sure to add them to a playable graph via script (e.g. Animator Controller or Timeline) to play them back. + +## Extensibility + +UnityGLTF has import and export plugins. These have callbacks for modifying node structures, extension data, materials and more as part of the regular export and import process. They are used both in the Editor and at runtime. +You can make your own plugins and enable them in the `Project Settings > UnityGLTF` menu. +Plugins are ScriptableObjects that can have settings; they're serialized as part of the GLTFSettings asset. +Plugins create concrete instances of import/export handlers. + +To create a plugin, follow these steps: +1. Make a class that inherits from `GLTFImportPlugin` or `GLTFExportPlugin`. This is the ScriptableObject that contains plugin settings. +2. Also, make a class that inherits from `GLTFImportPluginContext` or `GLTFExportPluginContext`. This class has the actual callbacks. +3. Implement `CreateInstance` in your plugin to return a new instance of your plugin context. +4. Override the callbacks you want to use in your plugin context. + - See available callbacks + - See available callbacks + +If your plugin reads/writes custom extension data, you need to also implement `GLTF.Schema.IExtension` for serialization and deserialization. + +> 🏗️ Under construction. You can take a look at `MaterialVariantsPlugin.cs` for an example. + +## Known Issues + +Known issues reproduce with specific [glTF Sample Models](https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0): + +> **Note:** This list hasn't been updated in a while. It may not be accurate anymore. + +- **khronos-SimpleSparseAccessor**: sparse accessors not supported on import (can be exported though) +- **khronos-TriangleWithoutIndices**: meshes without indices import with wrong winding order +- **khronos-MultiUVTest**: UV per texture is imported but not supported in the GLTF-Builtin shader +- **khronos-MorphPrimitivesTest**: isn't correctly importing at runtime (in some cases?) +- **khronos-NormalTangentTest**: import results don't match expected look + +## Contributing + +This section is dedicated to those who wish to contribute to the project. + +
+More Details + +### [Unity Package](https://github.com/KhronosGroup/UnityGLTF/tree/master/) - **Unity Version** - Be sure that the Unity release you have installed on your local machine is *at least* the version configured for the project (using a newer version is supported). You can download the free version [here](https://unity3d.com/get-unity/download/archive). You can run this project simply by opening the directory as a project on Unity. + Be sure that the Unity release you have installed on your local machine is *at least* 2021.3. - **Project Components** - The Unity project offers two main functionalities: importing and exporting GLTF assets. These functionalities are primarily implemented in `GLTFSceneImporter` and `GLTFSceneExporter`. + The Unity project offers two main functionalities: importing and exporting GLTF assets. These functionalities are primarily implemented in `GLTFSceneImporter` and `GLTFSceneExporter`. + +### [GLTFSerializer](https://github.com/KhronosGroup/UnityGLTF/tree/master/Runtime/Plugins/GLTFSerialization) + +- **Basic Rundown**: The GLTFSerializer facilitates serialization of the Unity asset model, and deserialization of GLTF assets. + +- **Structure**: + - Each GLTF schemas (Buffer, Accessor, Camera, Image...) extends the basic class: GLTFChildOfRootProperty. Through this object model, each schema can have its own defined serialization/deserialization functionalities, which imitate the JSON file structure as per the GLTF specification. + - Each schema can then be grouped under the GLTFRoot object, which represents the underlying GLTF Asset. Serializing the asset is then done by serializing the root object, which recursively serializes all individual schemas. Deserializing a GLTF asset is done similarly: instantiate a GLTFRoot, and parse the required schemas. + +### Tests + +> 🏗️ Under construction. Tests are currently in a separate (private) repository due to test asset licensing reasons. -### The Server-Side Build +To run tests with UnityGLTF as package, you'll have to add UnityGLTF to the "testables" array in manifest.json: -For details on the automated server-side builds and how to update them, see [\scripts\ServerBuilds.md](https://github.com/KhronosGroup/UnityGLTF/blob/master/scripts/ServerBuilds.md). +``` +"testables": [ + "org.khronos.unitygltf" +] +``` -## Examples +
-1. Clone or download the repository (including submodules). -2. Open up the Unity project and run any of the example scenes in `Assets/GLTF/Examples` OR run the main scene in `Assets` and use the `Model List` component to dynamically switch between models. +## Contributors +UnityGLTF is currently maintained by [prefrontal cortex](https://prefrontalcortex.de) and [Needle](https://needle.tools). \ No newline at end of file diff --git a/README.md.meta b/README.md.meta new file mode 100644 index 000000000..c8cc05a2e --- /dev/null +++ b/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f694a5d7eca544dc1ab09078571fd535 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime.meta b/Runtime.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime.meta rename to Runtime.meta diff --git a/Runtime/.gitignore b/Runtime/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Plugins.meta b/Runtime/Plugins.meta new file mode 100644 index 000000000..07a3570c3 --- /dev/null +++ b/Runtime/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 107a7c058d7ad7c43b3656c44c5364b8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization.meta b/Runtime/Plugins/GLTFSerialization.meta new file mode 100644 index 000000000..3a4bef25c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cf51abc0e087ca4d8fc223141dd9c09 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs b/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs new file mode 100644 index 000000000..e9701f4d9 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("UnityGLTFScripts")] diff --git a/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs.meta b/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs.meta new file mode 100644 index 000000000..9844667f8 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42d7be7539b58434e88dbb233beed600 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/AttributeAccessor.cs b/Runtime/Plugins/GLTFSerialization/AttributeAccessor.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/AttributeAccessor.cs rename to Runtime/Plugins/GLTFSerialization/AttributeAccessor.cs diff --git a/Runtime/Plugins/GLTFSerialization/AttributeAccessor.cs.meta b/Runtime/Plugins/GLTFSerialization/AttributeAccessor.cs.meta new file mode 100644 index 000000000..587afe071 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/AttributeAccessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05765344adf6fd949b45bc1e4699305a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Exceptions.cs b/Runtime/Plugins/GLTFSerialization/Exceptions.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Exceptions.cs rename to Runtime/Plugins/GLTFSerialization/Exceptions.cs diff --git a/Runtime/Plugins/GLTFSerialization/Exceptions.cs.meta b/Runtime/Plugins/GLTFSerialization/Exceptions.cs.meta new file mode 100644 index 000000000..e17c304bc --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Exceptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f014046747656547b05fa3774ecf051 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions.meta b/Runtime/Plugins/GLTFSerialization/Extensions.meta new file mode 100644 index 000000000..40eee577c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4214d32c6f922940ba2e0df9e1ff758 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs new file mode 100644 index 000000000..4fd7758f5 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs @@ -0,0 +1,85 @@ +using System; +#if HAVE_MESHOPT_DECOMPRESS +using Meshoptimizer; +#endif +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + + [Serializable] + public class EXT_meshopt_compression : IExtension + { + public BufferView bufferView; + public int count; + public bool isFallbackBuffer = false; + +#if HAVE_MESHOPT_DECOMPRESS + public Mode mode; + public Filter filter; +#endif + + public JProperty Serialize() + { + throw new NotSupportedException("EXT_meshopt_compression serialization is not supported yet."); + } + + public IExtension Clone(GLTFRoot root) + { + // TODO: Clone the bufferView + return new EXT_meshopt_compression + { + isFallbackBuffer = isFallbackBuffer, + bufferView = bufferView, +#if HAVE_MESHOPT_DECOMPRESS + mode = mode, + filter = filter, +#endif + count = count + }; + } + } + + public class EXT_meshopt_compression_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "EXT_meshopt_compression"; + + public EXT_meshopt_compression_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new EXT_meshopt_compression(); + + extension.isFallbackBuffer = extensionToken.Value["fallback"]?.Value() ?? false; + +#if HAVE_MESHOPT_DECOMPRESS + extension.mode = (Mode)System.Enum.Parse(typeof(Mode), extensionToken.Value["mode"]?.Value() ?? "Undefined", true); + extension.filter = (Filter)System.Enum.Parse(typeof(Filter), extensionToken.Value["filter"]?.Value() ?? "Undefined", true); + extension.count = extensionToken.Value["count"]?.Value() ?? 0; + + if (extensionToken.Value["buffer"] != null) + { + extension.bufferView = new BufferView(); + extension.bufferView.Buffer = new BufferId + { + Id = extensionToken.Value["buffer"]?.Value() ?? -1, + Root = root + }; + extension.bufferView.ByteOffset = (uint)System.Math.Round(extensionToken.Value["byteOffset"]?.Value() ?? 0); + extension.bufferView.ByteLength = (uint)System.Math.Round(extensionToken.Value["byteLength"]?.Value() ?? 0); + extension.bufferView.ByteStride = (uint)System.Math.Round(extensionToken.Value["byteStride"]?.Value() ?? 0); + } +#endif + + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs.meta new file mode 100644 index 000000000..dd8fb0ccb --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_meshopt_compression.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 32db4466775a4403a11b3d068df87492 +timeCreated: 1687762363 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs new file mode 100644 index 000000000..5e3ad5a6a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + public class EXT_texture_exr : IExtension + { + public const string EXTENSION_NAME = "EXT_texture_exr"; + public ImageId source; + + public EXT_texture_exr(ImageId source) + { + this.source = source; + } + + public IExtension Clone(GLTFRoot root) + { + return new EXT_texture_exr(source); + } + + public JProperty Serialize() + { + JObject ext = new JObject(); + + ext.Add("source", source.Id); + + return new JProperty(EXTENSION_NAME, ext); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs.meta new file mode 100644 index 000000000..51d1948d7 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/EXT_texture_exr.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9348b48c4902434e81000a832ca2ef33 +timeCreated: 1662326250 \ No newline at end of file diff --git a/GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs similarity index 95% rename from GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs index 0be55336a..31fabf280 100644 --- a/GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs @@ -30,10 +30,10 @@ public class ExtTextureTransformExtension : IExtension /// /// Overrides the textureInfo texCoord value if this extension is supported. /// - public int TexCoord = 0; + public Nullable TexCoord = null; public static readonly int TEXCOORD_DEFAULT = 0; - public ExtTextureTransformExtension(Vector2 offset, double rotation, Vector2 scale, int texCoord) + public ExtTextureTransformExtension(Vector2 offset, double rotation, Vector2 scale, Nullable texCoord) { Offset = offset; Rotation = rotation; @@ -74,7 +74,7 @@ public JProperty Serialize() )); } - if (TexCoord != TEXCOORD_DEFAULT) + if (TexCoord != null) { ext.Add(new JProperty( ExtTextureTransformExtensionFactory.TEXCOORD, diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs.meta new file mode 100644 index 000000000..aa84b9328 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f80e6282349fec4b81cd78cd8a9aa00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs similarity index 93% rename from GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs index 4abcb9581..d4c290daf 100644 --- a/GLTFSerialization/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json.Linq; +using System; +using Newtonsoft.Json.Linq; using GLTF.Extensions; using GLTF.Math; @@ -22,7 +23,7 @@ public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) Vector2 offset = new Vector2(ExtTextureTransformExtension.OFFSET_DEFAULT); double rotation = 0; Vector2 scale = new Vector2(ExtTextureTransformExtension.SCALE_DEFAULT); - int texCoord = ExtTextureTransformExtension.TEXCOORD_DEFAULT; + Nullable texCoord = null; if (extensionToken != null) { diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs.meta new file mode 100644 index 000000000..01c18914b --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/ExtTextureTransformExtensionFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb5582955db3cc947a57a02c5bfe15aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Extensions/GLTFJsonExtensions.cs b/Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs similarity index 87% rename from GLTFSerialization/GLTFSerialization/Extensions/GLTFJsonExtensions.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs index 3f37388f9..2aa63db25 100644 --- a/GLTFSerialization/GLTFSerialization/Extensions/GLTFJsonExtensions.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs @@ -7,6 +7,17 @@ namespace GLTF.Extensions { + + public static class JsonWriterExtensions + { + public static void WriteTexture(this JObject token, string name, TextureInfo texture) + { + var jsonWriter = token.CreateWriter(); + jsonWriter.WritePropertyName(name); + texture.Serialize(jsonWriter); + } + } + public static class JsonReaderExtensions { public static List ReadStringList(this JsonReader reader) @@ -73,7 +84,7 @@ public static List ReadList(this JsonReader reader, Func deserializerFu { list.Add(deserializerFunc()); - // deserializerFunc can advance to EndArray. We need to check for this case as well. + // deserializerFunc can advance to EndArray. We need to check for this case as well. if (reader.TokenType == JsonToken.EndArray) { break; @@ -86,7 +97,7 @@ public static List ReadList(this JsonReader reader, Func deserializerFu public static TextureInfo DeserializeAsTexture(this JToken token, GLTFRoot root) { TextureInfo textureInfo = null; - + if (token != null) { JObject textureObject = token as JObject; @@ -99,7 +110,6 @@ public static TextureInfo DeserializeAsTexture(this JToken token, GLTFRoot root) // Broken on il2cpp. Don't ship debug DLLs there. System.Diagnostics.Debug.WriteLine("textureObject is " + textureObject.Type + " with a value of: " + textureObject[TextureInfo.INDEX].Type + " " + textureObject.ToString()); #endif - int indexVal = textureObject[TextureInfo.INDEX].DeserializeAsInt(); textureInfo = new TextureInfo() { @@ -109,11 +119,39 @@ public static TextureInfo DeserializeAsTexture(this JToken token, GLTFRoot root) Root = root } }; + if (textureObject.ContainsKey(TextureInfo.TEXCOORD)) + { + textureInfo.TexCoord = textureObject[TextureInfo.TEXCOORD].DeserializeAsInt(); + } + + if (textureObject.ContainsKey("extensions")) + { + textureInfo.Extensions = GLTFProperty.DeserializeExtensions(root, textureObject["extensions"].CreateReader()); + } + } return textureInfo; } + public static NormalTextureInfo DeserializeAsNormalTexture(this JToken token, GLTFRoot root) + { + var tex = DeserializeAsTexture(token, root); + if (tex != null) + { + var normalTex = new NormalTextureInfo() { Index = tex.Index, TexCoord = tex.TexCoord }; + JObject textureObject = token as JObject; + if (textureObject.ContainsKey(NormalTextureInfo.SCALE)) + { + normalTex.Scale = textureObject[NormalTextureInfo.SCALE].DeserializeAsDouble(); + } + + return normalTex; + } + + return null; + } + public static int DeserializeAsInt(this JToken token) { if (token != null) @@ -168,7 +206,7 @@ public static Color ReadAsRGBAColor(this JsonReader reader) return color; } - + public static Color DeserializeAsColor(this JToken token) { Color color = Color.White; @@ -180,9 +218,9 @@ public static Color DeserializeAsColor(this JToken token) { throw new Exception("JToken used for Color deserialization was not a JArray. It was a " + token.Type.ToString()); } - if (colorArray.Count != 4) + if (colorArray.Count < 3) { - throw new Exception("JArray used for Color deserialization did not have 4 entries for RGBA. It had " + colorArray.Count); + throw new Exception("JArray used for Color deserialization did have less than 3 entries (needs to be RGB or RGBA). It had " + colorArray.Count); } color = new Color @@ -190,7 +228,7 @@ public static Color DeserializeAsColor(this JToken token) R = (float)colorArray[0].DeserializeAsDouble(), G = (float)colorArray[1].DeserializeAsDouble(), B = (float)colorArray[2].DeserializeAsDouble(), - A = (float)colorArray[3].DeserializeAsDouble() + A = (float)(colorArray.Count == 4 ? colorArray[3].DeserializeAsDouble() : 1.0), }; } diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs.meta new file mode 100644 index 000000000..d29d438ab --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/GLTFJsonExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b39ce55534dbbf4ab3dceec1cec6317 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs new file mode 100644 index 000000000..64f4a20f7 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs @@ -0,0 +1,392 @@ +using System; +using System.Collections.Generic; +using GLTF.Math; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using GLTF.Extensions; + +namespace GLTF.Schema.KHR_lights_punctual +{ + /// + /// Specifies the light type. + /// + public enum LightType + { + directional, + point, + spot + } + + /// + /// Texture sampler properties for filtering and wrapping modes. + /// + public class Spot + { + private const string PNAME_INNERCONEANGLE = "innerConeAngle"; + private const string PNAME_OUTERCONEANGLE = "outerConeAngle"; + + public static readonly double INNER_DEFAULT = 0d; + public static readonly double OUTER_DEFAULT = 0.7853981633974483d; + /// + /// Angle, in radians, from centre of spotlight where falloff begins. Must be greater than or equal to 0 and less than outerConeAngle. + /// + public double InnerConeAngle = INNER_DEFAULT; + + /// + /// Angle, in radians, from centre of spotlight where falloff ends. Must be greater than innerConeAngle and less than or equal to PI / 2.0. + /// + public double OuterConeAngle = OUTER_DEFAULT; + + public Spot() + { + } + + public static Spot Deserialize(JsonReader reader) + { + var spot = new Spot(); + + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + return spot; + } + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case PNAME_INNERCONEANGLE: + spot.InnerConeAngle= reader.ReadAsDouble().Value; + break; + case PNAME_OUTERCONEANGLE: + spot.OuterConeAngle= reader.ReadAsDouble().Value; + break; + } + } + + return spot; + } + + public void Serialize(JsonWriter writer) + { + if( InnerConeAngle > OuterConeAngle) + { + throw new Exception("Spot's InnerConeAngle must be less or equal OuterConeAngle"); + } + + if (OuterConeAngle > 1.5707963267948966d ) + { + throw new Exception("Spot's OuterConeAngle must be less or equal Pi/2"); + } + + writer.WriteStartObject(); + + if (InnerConeAngle != INNER_DEFAULT) + { + writer.WritePropertyName(PNAME_INNERCONEANGLE); + writer.WriteValue(InnerConeAngle); + } + + if (OuterConeAngle != OUTER_DEFAULT) + { + writer.WritePropertyName(PNAME_OUTERCONEANGLE); + writer.WriteValue(OuterConeAngle); + } + + writer.WriteEndObject(); + } + } + + public class PunctualLight : GLTFChildOfRootProperty + { + private const string PNAME_TYPE = "type"; + private const string PNAME_COLOR = "color"; + private const string PNAME_INTENSITY = "intensity"; + private const string PNAME_RANGE = "range"; + private const string PNAME_SPOT = "spot"; + + public static readonly Color COLOR_DEFAULT = Color.White; + public static readonly double RANGE_DEFAULT = -1d; + public static readonly double INTENSITY_DEFAULT = 1d; + + /// + /// Specifies the light type. + /// + public LightType Type; + + /// + /// Color of the light source. + /// + public Color Color = COLOR_DEFAULT; + + /// + /// Intensity of the light source. `point` and `spot` lights use luminous intensity in candela (lm/sr) while `directional` lights use illuminance in lux (lm/m^2) + /// + public double Intensity = INTENSITY_DEFAULT; + + /// + /// A distance cutoff at which the light's intensity may be considered to have reached zero. + /// + public double Range = RANGE_DEFAULT; + + /// + /// spot's inner and outer angle, must exist for spot types + /// + public Spot Spot; + + public PunctualLight() + { + + } + + public PunctualLight(PunctualLight light, GLTFRoot gltfRoot) : base(light, gltfRoot) + { + Type = light.Type; + Color = light.Color; + Intensity = light.Intensity; + Range = light.Range; + Spot = light.Spot; + } + + public static PunctualLight Deserialize(GLTFRoot root, JsonReader reader) + { + var light = new PunctualLight(); + + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + throw new Exception("Light must be an object."); + } + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case PNAME_TYPE: + light.Type = reader.ReadStringEnum(); + break; + case PNAME_COLOR: + light.Color = reader.ReadAsRGBColor(); + break; + case PNAME_INTENSITY: + light.Intensity = reader.ReadAsDouble().Value; + break; + case PNAME_RANGE: + light.Range = reader.ReadAsDouble().Value; + break; + case PNAME_SPOT: + light.Spot = Spot.Deserialize(reader); + break; + default: + light.DefaultPropertyDeserializer(root, reader); + break; + } + } + + return light; + } + + public static PunctualLight Deserialize(GLTFRoot root, JToken token) + { + using (JsonReader reader = new JTokenReader(token)) + { + return Deserialize(root, reader); + } + } + + override public void Serialize(JsonWriter writer) + { + writer.WriteStartObject(); + + writer.WritePropertyName(PNAME_TYPE); + writer.WriteValue(Type.ToString()); + + + if (Color != COLOR_DEFAULT) + { + writer.WritePropertyName(PNAME_COLOR); + writer.WriteStartArray(); + writer.WriteValue(Color.R); + writer.WriteValue(Color.G); + writer.WriteValue(Color.B); + writer.WriteEndArray(); + } + + if (Intensity != INTENSITY_DEFAULT) + { + writer.WritePropertyName(PNAME_INTENSITY); + writer.WriteValue(Intensity); + } + + if (Range != RANGE_DEFAULT) + { + writer.WritePropertyName(PNAME_RANGE); + writer.WriteValue(Range); + } + + if (Type == LightType.spot) + { + writer.WritePropertyName(PNAME_SPOT); + Spot.Serialize(writer); + } + + base.Serialize(writer); + + writer.WriteEndObject(); + } + + public JObject Serialize() + { + JTokenWriter writer = new JTokenWriter(); + Serialize(writer); + return (JObject)writer.Token; + } + } + + public class KHR_LightsPunctualRootExtension : IExtension + { + public const string EXTENSION_NAME = "KHR_lights_punctual"; + + public readonly IList lights; + + public KHR_LightsPunctualRootExtension(IList lights) + { + this.lights = lights; + } + + public JProperty Serialize() + { + var obj = new JObject(); + var arr = new JArray(); + obj.Add("lights", arr); + foreach (var light in lights) + { + var lightInfo = new JObject(); + arr.Add(lightInfo); + lightInfo.Add("type", light.type); + if (light.range > 0) lightInfo.Add("range", light.range); + if(System.Math.Abs(light.intensity - 1f) > .0000001) lightInfo.Add("intensity", light.intensity); + lightInfo.Add("name", light.Name ?? light.name); + lightInfo.Add("color", new JArray(light.color.R, light.color.G, light.color.B)); + // TODO why is this not using the specific spotlight serializer/deserializer? + if (light is GLTFSpotLight spotLight) + { + lightInfo.Add("spot", new JObject( + new JProperty(nameof(spotLight.innerConeAngle), spotLight.innerConeAngle), + new JProperty(nameof(spotLight.outerConeAngle), spotLight.outerConeAngle))); + } + } + return new JProperty(EXTENSION_NAME, obj); + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_LightsPunctualRootExtension(lights); + } + } + + public class KHR_LightsPunctualExtension : IExtension + { + public List Lights; + + public KHR_LightsPunctualExtension() + { + Lights = new List(); + } + + public IExtension Clone(GLTFRoot root) + { + var clone = new KHR_LightsPunctualExtension(); + for (int i = 0; i < Lights.Count; i++) + { + clone.Lights.Add(new PunctualLight(Lights[i], root)); + } + return clone; + } + + public JProperty Serialize() + { + return new JProperty(KHR_lights_punctualExtensionFactory.EXTENSION_NAME, + new JObject( + new JProperty(KHR_lights_punctualExtensionFactory.PNAME_LIGHTS, new JArray(Lights)) + ) + ); + } + } + + public class PunctualLightId : GLTFId + { + public PunctualLightId() + { + } + + public PunctualLightId(PunctualLightId id, GLTFRoot newRoot) : base(id, newRoot) + { + } + + public override PunctualLight Value + { + get + { + if (Root.Extensions.TryGetValue(KHR_lights_punctualExtensionFactory.EXTENSION_NAME, out IExtension iextension)) + { + KHR_LightsPunctualExtension extension = iextension as KHR_LightsPunctualExtension; + return extension.Lights[Id]; + } + else + { + throw new Exception("KHR_lights_punctual not found on root object"); + } + } + } + + public static PunctualLightId Deserialize(GLTFRoot root, JsonReader reader) + { + return new PunctualLightId + { + Id = reader.ReadAsInt32().Value, + Root = root + }; + } + } + + public class KHR_LightsPunctualNodeExtension : IExtension + { + public PunctualLightId LightId; + + public KHR_LightsPunctualNodeExtension() + { + + } + + public KHR_LightsPunctualNodeExtension(PunctualLightId lightId, GLTFRoot gltfRoot) + { + LightId = lightId; + } + + public KHR_LightsPunctualNodeExtension( int lightId, GLTFRoot gltfRoot) + { + LightId = new PunctualLightId + { + Id = lightId, + Root = gltfRoot + }; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_LightsPunctualNodeExtension(LightId.Id, root); + } + + public JProperty Serialize() + { + return new JProperty(KHR_lights_punctualExtensionFactory.EXTENSION_NAME, + new JObject( + new JProperty(KHR_lights_punctualExtensionFactory.PNAME_LIGHT, LightId.Id ) + ) + ); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs.meta new file mode 100644 index 000000000..ac16453d1 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8451131b54699e840ba8425046aec379 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs new file mode 100644 index 000000000..74756068b --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs @@ -0,0 +1,49 @@ + + +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema.KHR_lights_punctual +{ + public class KHR_lights_punctualExtensionFactory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_lights_punctual"; + + + public const string PNAME_LIGHTS = "lights"; + public const string PNAME_LIGHT = "light"; + + public KHR_lights_punctualExtensionFactory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + JToken lightsToken = extensionToken.Value[PNAME_LIGHTS]; + + if (lightsToken != null) + { + var extension = new KHR_LightsPunctualExtension(); + JArray lightsArray = lightsToken as JArray; + foreach( var lightToken in lightsArray.Children()) + { + extension.Lights.Add(PunctualLight.Deserialize(root, lightToken)); + } + return extension; + } + + JToken nodelightToken = extensionToken.Value[PNAME_LIGHT]; + + if (nodelightToken != null) + { + PunctualLightId lightId = PunctualLightId.Deserialize(root, nodelightToken.CreateReader() ); + return new KHR_LightsPunctualNodeExtension( lightId, root ); + } + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs.meta new file mode 100644 index 000000000..1fc5de8a3 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_LightsPunctualExtensionFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6f51e6a8e36a7641bde14286a98f0d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs new file mode 100644 index 000000000..eb24521a1 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs @@ -0,0 +1,38 @@ +using GLTF.Schema; +using Newtonsoft.Json.Linq; + +namespace UnityGLTF.Extensions +{ + + // see https://github.com/KhronosGroup/glTF/pull/2147 + public class KHR_animation_pointer : IExtension + { + public const string EXTENSION_NAME = "KHR_animation_pointer"; + + public object animatedObject; + public string propertyBinding; + public string path; + public AnimationChannelTarget channel; + + // when cloned, the path is late resolved in gltf exporter so the clone path will not be resolved because it wont be registered to the exporter's resolver + private KHR_animation_pointer clonedFrom; + + public JProperty Serialize() + { + if (path == null && clonedFrom != null) path = clonedFrom.path; + return new JProperty(EXTENSION_NAME, new JObject(new JProperty("pointer", path))); + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_animation_pointer + { + animatedObject = animatedObject, + propertyBinding = propertyBinding, + path = path, + channel = channel, + clonedFrom = this + }; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs.meta new file mode 100644 index 000000000..6e7b41473 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_animation_pointer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 674db370468f4e2491e20dbadfa2a640 +timeCreated: 1648456390 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs new file mode 100644 index 000000000..9e380ffa4 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + [Serializable] + public class KHR_draco_mesh_compression : IExtension + { + public Dictionary attributes = new Dictionary(); + public BufferViewId bufferView; + + public JProperty Serialize() + { + throw new NotSupportedException("KHR_draco_mesh_compression serialization is not supported yet."); + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_draco_mesh_compression + { + attributes = new Dictionary(attributes) + }; + } + } + + public class KHR_draco_mesh_compression_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_draco_mesh_compression"; + + public KHR_draco_mesh_compression_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_draco_mesh_compression(); + var attributeToken = extensionToken.Value[nameof(KHR_draco_mesh_compression.attributes)]; + if (attributeToken != null) + { + var reader = attributeToken.CreateReader(); + extension.attributes = reader.ReadAsDictionary(() => reader.ReadAsInt32().Value); + } + + var bufferViewToken = extensionToken.Value[nameof(KHR_draco_mesh_compression.bufferView)]; + if (bufferViewToken != null) + extension.bufferView = BufferViewId.Deserialize(root, bufferViewToken.CreateReader()); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs.meta new file mode 100644 index 000000000..0d96e8029 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_draco_mesh_compression.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87daa883205648a3acfc416aefe9cccd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs new file mode 100644 index 000000000..26db3f948 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs @@ -0,0 +1,77 @@ +using System; +using GLTF.Extensions; +using GLTF.Math; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + // https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md + [Serializable] + public class KHR_materials_clearcoat : IExtension + { + public float clearcoatFactor = 0f; + public TextureInfo clearcoatTexture; // R channel + public float clearcoatRoughnessFactor = 0f; + public TextureInfo clearcoatRoughnessTexture; // G channel + public TextureInfo clearcoatNormalTexture; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_clearcoat_Factory.EXTENSION_NAME, jo); + + // TODO all these properties should only be added if non-default + + if (clearcoatFactor != 0) + jo.Add(new JProperty(nameof(clearcoatFactor), clearcoatFactor)); + if (clearcoatTexture != null) + jo.WriteTexture(nameof(clearcoatTexture), clearcoatTexture); + + if (clearcoatRoughnessFactor != 0) + jo.Add(new JProperty(nameof(clearcoatRoughnessFactor), clearcoatRoughnessFactor)); + if (clearcoatRoughnessTexture != null) + jo.WriteTexture(nameof(clearcoatRoughnessTexture), clearcoatRoughnessTexture); + + if (clearcoatNormalTexture != null) + jo.WriteTexture(nameof(clearcoatNormalTexture), clearcoatNormalTexture); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_clearcoat() + { + clearcoatFactor = clearcoatFactor, clearcoatTexture = clearcoatTexture, + clearcoatRoughnessFactor = clearcoatRoughnessFactor, clearcoatRoughnessTexture = clearcoatRoughnessTexture, + clearcoatNormalTexture = clearcoatNormalTexture, + }; + } + } + + public class KHR_materials_clearcoat_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_clearcoat"; + + public KHR_materials_clearcoat_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_clearcoat(); + extension.clearcoatFactor = extensionToken.Value[nameof(KHR_materials_clearcoat.clearcoatFactor)]?.Value() ?? 0; + extension.clearcoatTexture = extensionToken.Value[nameof(KHR_materials_clearcoat.clearcoatTexture)]?.DeserializeAsTexture(root); + extension.clearcoatRoughnessFactor = extensionToken.Value[nameof(KHR_materials_clearcoat.clearcoatRoughnessFactor)]?.Value() ?? 0; + extension.clearcoatRoughnessTexture = extensionToken.Value[nameof(KHR_materials_clearcoat.clearcoatRoughnessTexture)]?.DeserializeAsTexture(root); + extension.clearcoatNormalTexture = extensionToken.Value[nameof(KHR_materials_clearcoat.clearcoatNormalTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs.meta new file mode 100644 index 000000000..d31ab0ca3 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_clearcoat.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8427a62b522f4f2d84dda8d98fa76701 +timeCreated: 1673353427 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs new file mode 100644 index 000000000..1de249ad5 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs @@ -0,0 +1,56 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + public class KHR_materials_emissive_strength : GLTFProperty, IExtension + { + public KHR_materials_emissive_strength() { } + + public KHR_materials_emissive_strength(KHR_materials_emissive_strength ext, GLTFRoot root) : base(ext, root) { } + + public IExtension Clone(GLTFRoot gltfRoot) + { + return new KHR_materials_emissive_strength(this, gltfRoot); + } + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_emissive_strength_Factory.EXTENSION_NAME, jo); + + if(emissiveStrength != 1.0f) + jo.Add(new JProperty(nameof(emissiveStrength), emissiveStrength)); + + return jProperty; + } + + public float emissiveStrength = 1.0f; + } + + public class KHR_materials_emissive_strength_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_emissive_strength"; + + public KHR_materials_emissive_strength_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_emissive_strength(); + + JToken strength = extensionToken.Value[nameof(KHR_materials_emissive_strength.emissiveStrength)]; + if (strength != null) + extension.emissiveStrength = strength.Value(); + + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs.meta new file mode 100644 index 000000000..14a20a954 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_emissive_strength.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4a07b6badfb6844e8d34a3a9b15a6f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs new file mode 100644 index 000000000..19209cb80 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs @@ -0,0 +1,53 @@ +using System; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + // https: //github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_ior + [Serializable] + public class KHR_materials_ior : IExtension + { + public const float DefaultIor = 1.5f; + public float ior = 1.5f; + + public JProperty Serialize() + { + var obj = new JObject(); + if (System.Math.Abs(ior - DefaultIor) > 0.00001f) + obj.Add(new JProperty(nameof(ior), ior)); + JProperty jProperty = new JProperty(KHR_materials_ior_Factory.EXTENSION_NAME, obj); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_ior() { ior = ior }; + } + } + + public class KHR_materials_ior_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_ior"; + + public KHR_materials_ior_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + JToken strength = extensionToken.Value[nameof(KHR_materials_ior.ior)]; + var extension = new KHR_materials_ior(); + if (strength != null) + { + extension.ior = strength.Value(); + } + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs.meta new file mode 100644 index 000000000..0cf59e09c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_ior.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e7620ff271fb4b39934ce610b28e27ef +timeCreated: 1653603717 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs new file mode 100644 index 000000000..83c38331a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs @@ -0,0 +1,76 @@ +using System; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; +using Color = GLTF.Math.Color; + +namespace GLTF.Schema +{ + // https://github.com/ux3d/glTF/tree/extensions/KHR_materials_iridescence/extensions/2.0/Khronos/KHR_materials_iridescence + [Serializable] + public class KHR_materials_iridescence : IExtension + { + public float iridescenceFactor = 0f; + public TextureInfo iridescenceTexture; // R channel + public float iridescenceIor = 1.3f; + public float iridescenceThicknessMinimum = 100.0f; + public float iridescenceThicknessMaximum = 400.0f; + public TextureInfo iridescenceThicknessTexture; // G channel + + public static readonly Color COLOR_DEFAULT = Color.White; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_iridescence_Factory.EXTENSION_NAME, jo); + + if (iridescenceFactor != 0) jo.Add(new JProperty(nameof(iridescenceFactor), iridescenceFactor)); + if (iridescenceIor != 1.3f) jo.Add(new JProperty(nameof(iridescenceIor), iridescenceIor)); + if (iridescenceThicknessMinimum != 100.0f) jo.Add(new JProperty(nameof(iridescenceThicknessMinimum), iridescenceThicknessMinimum)); + if (iridescenceThicknessMaximum != 400.0f) jo.Add(new JProperty(nameof(iridescenceThicknessMaximum), iridescenceThicknessMaximum)); + if (iridescenceTexture != null) + jo.WriteTexture(nameof(iridescenceTexture), iridescenceTexture); + + if (iridescenceThicknessTexture != null) + jo.WriteTexture(nameof(iridescenceThicknessTexture), iridescenceThicknessTexture); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_iridescence() + { + iridescenceFactor = iridescenceFactor, iridescenceIor = iridescenceIor, + iridescenceThicknessMinimum = iridescenceThicknessMinimum, iridescenceThicknessMaximum = iridescenceThicknessMaximum, + iridescenceTexture = iridescenceTexture, iridescenceThicknessTexture = iridescenceThicknessTexture, + }; + } + } + + public class KHR_materials_iridescence_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_iridescence"; + + public KHR_materials_iridescence_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_iridescence(); + extension.iridescenceFactor = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceFactor)]?.Value() ?? 0; + extension.iridescenceIor = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceIor)]?.Value() ?? 1.3f; + extension.iridescenceThicknessMinimum = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceThicknessMinimum)]?.Value() ?? 100f; + extension.iridescenceThicknessMaximum = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceThicknessMaximum)]?.Value() ?? 400f; + extension.iridescenceTexture = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceTexture)]?.DeserializeAsTexture(root); + extension.iridescenceThicknessTexture = extensionToken.Value[nameof(KHR_materials_iridescence.iridescenceThicknessTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs.meta new file mode 100644 index 000000000..cb338a73a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_iridescence.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0702e45c391babb47b93be6ff38f4e3e +timeCreated: 1653603693 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs new file mode 100644 index 000000000..9c1843c8c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs @@ -0,0 +1,98 @@ +using GLTF.Math; +using GLTF.Schema; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + /// + /// glTF extension that defines the specular-glossiness + /// material model from Physically-Based Rendering (PBR) methodology. + /// + /// Spec can be found here: + /// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness + /// + public class KHR_materials_pbrSpecularGlossinessExtension : IExtension + { + public static readonly Vector3 SPEC_FACTOR_DEFAULT = new Vector3(1.0f, 1.0f, 1.0f); + public static readonly double GLOSS_FACTOR_DEFAULT = 1.0d; + + /// + /// The RGBA components of the reflected diffuse color of the material. + /// Metals have a diffuse value of [0.0, 0.0, 0.0]. + /// The fourth component (A) is the alpha coverage of the material. + /// The property specifies how alpha is interpreted. + /// The values are linear. + /// + public Color DiffuseFactor = Color.White; + public static readonly Color DIFFUSE_FACTOR_DEFAULT = Color.White; + + /// + /// The diffuse texture. + /// This texture contains RGB(A) components of the reflected diffuse color of the material in sRGB color space. + /// If the fourth component (A) is present, it represents the alpha coverage of the + /// material. Otherwise, an alpha of 1.0 is assumed. + /// The property specifies how alpha is interpreted. + /// The stored texels must not be premultiplied. + /// + public TextureInfo DiffuseTexture; + public static readonly TextureInfo DIFFUSE_TEXTURE_DEFAULT = new TextureInfo(); + + /// + /// The specular RGB color of the material. This value is linear + /// + public Vector3 SpecularFactor = SPEC_FACTOR_DEFAULT; + + /// + /// The glossiness or smoothness of the material. + /// A value of 1.0 means the material has full glossiness or is perfectly smooth. + /// A value of 0.0 means the material has no glossiness or is completely rough. + /// This value is linear. + /// + public double GlossinessFactor = GLOSS_FACTOR_DEFAULT; + + /// + /// The specular-glossiness texture is RGBA texture, containing the specular color of the material (RGB components) and its glossiness (A component). + /// The values are in sRGB space. + /// + public TextureInfo SpecularGlossinessTexture; + public static readonly TextureInfo SPECULAR_GLOSSINESS_TEXTURE_DEFAULT = new TextureInfo(); + + public KHR_materials_pbrSpecularGlossinessExtension(Color diffuseFactor, TextureInfo diffuseTexture, Vector3 specularFactor, double glossinessFactor, TextureInfo specularGlossinessTexture) + { + DiffuseFactor = diffuseFactor; + DiffuseTexture = diffuseTexture; + SpecularFactor = specularFactor; + GlossinessFactor = glossinessFactor; + SpecularGlossinessTexture = specularGlossinessTexture; + } + + public IExtension Clone(GLTFRoot gltfRoot) + { + return new KHR_materials_pbrSpecularGlossinessExtension( + DiffuseFactor, + DiffuseTexture != null ? new TextureInfo(DiffuseTexture, gltfRoot) : null, + SpecularFactor, + GlossinessFactor, + SpecularGlossinessTexture != null ? new TextureInfo(SpecularGlossinessTexture, gltfRoot) : null); + } + + public JProperty Serialize() + { + var jo = new JObject(); + jo.Add(KHR_materials_pbrSpecularGlossinessExtensionFactory.DIFFUSE_FACTOR, new JArray(DiffuseFactor.R, DiffuseFactor.G, DiffuseFactor.B, DiffuseFactor.A)); + if(DiffuseTexture != null && DiffuseTexture.Index != null) + jo.Add(KHR_materials_pbrSpecularGlossinessExtensionFactory.DIFFUSE_TEXTURE, new JObject( + new JProperty(TextureInfo.INDEX, DiffuseTexture.Index.Id))); + jo.Add(KHR_materials_pbrSpecularGlossinessExtensionFactory.SPECULAR_FACTOR, new JArray(SpecularFactor.X, SpecularFactor.Y, SpecularFactor.Z)); + jo.Add(KHR_materials_pbrSpecularGlossinessExtensionFactory.GLOSSINESS_FACTOR, GlossinessFactor); + if(SpecularGlossinessTexture != null && SpecularGlossinessTexture.Index != null) + jo.Add(KHR_materials_pbrSpecularGlossinessExtensionFactory.SPECULAR_GLOSSINESS_TEXTURE, new JObject( + new JProperty(TextureInfo.INDEX, SpecularGlossinessTexture.Index.Id))); + + JProperty jProperty = new JProperty(KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME, jo); + + return jProperty; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs.meta new file mode 100644 index 000000000..597290ef9 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59da86adeec3c394c9ba4e017a23db4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs.meta new file mode 100644 index 000000000..b21acd7a9 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_pbrSpecularGlossinessExtensionFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2d8808686675fa540b28186541d0b196 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs new file mode 100644 index 000000000..3a161de44 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs @@ -0,0 +1,69 @@ +using System; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; +using Color = GLTF.Math.Color; + +namespace GLTF.Schema +{ + // https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_specular/README.md + [Serializable] + public class KHR_materials_specular : IExtension + { + public float specularFactor = 1f; + public TextureInfo specularTexture; // A channel + public Color specularColorFactor = COLOR_DEFAULT; + public TextureInfo specularColorTexture; // RGB channel + + public static readonly Color COLOR_DEFAULT = Color.White; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_specular_Factory.EXTENSION_NAME, jo); + + if (specularFactor != 1) jo.Add(new JProperty(nameof(specularFactor), specularFactor)); + if (specularColorFactor != COLOR_DEFAULT) jo.Add(new JProperty(nameof(specularColorFactor), new JArray(specularColorFactor.R, specularColorFactor.G, specularColorFactor.B))); + if (specularTexture != null) + jo.WriteTexture(nameof(specularTexture), specularTexture); + + if (specularColorTexture != null) + jo.WriteTexture(nameof(specularColorTexture), specularColorTexture); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_specular() + { + specularFactor = specularFactor, specularTexture = specularTexture, + specularColorFactor = specularColorFactor, specularColorTexture = specularColorTexture, + }; + } + } + + public class KHR_materials_specular_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_specular"; + + public KHR_materials_specular_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_specular(); + extension.specularFactor = extensionToken.Value[nameof(KHR_materials_specular.specularFactor)]?.Value() ?? 1; + extension.specularColorFactor = extensionToken.Value[nameof(KHR_materials_specular.specularColorFactor)]?.DeserializeAsColor() ?? Color.White; + extension.specularTexture = extensionToken.Value[nameof(KHR_materials_specular.specularTexture)]?.DeserializeAsTexture(root); + extension.specularColorTexture = extensionToken.Value[nameof(KHR_materials_specular.specularColorTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs.meta new file mode 100644 index 000000000..79ba412c0 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_specular.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cd1a3f573b7b4639854c977d6826c9b2 +timeCreated: 1653662141 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs new file mode 100644 index 000000000..f3029da34 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs @@ -0,0 +1,53 @@ +using System; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ +// https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_transmission + [Serializable] + public class KHR_materials_transmission : IExtension + { + public float transmissionFactor = 0.0f; + public TextureInfo transmissionTexture; // transmissionTexture // R channel + + public JProperty Serialize() + { + var jo = new JObject(); + if (transmissionFactor != 0) jo.Add(new JProperty(nameof(transmissionFactor), transmissionFactor)); + if (transmissionTexture != null) + jo.WriteTexture(nameof(transmissionTexture), transmissionTexture); + + JProperty jProperty = new JProperty(KHR_materials_transmission_Factory.EXTENSION_NAME, jo); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_transmission() { transmissionFactor = transmissionFactor, transmissionTexture = transmissionTexture }; + } + } + + public class KHR_materials_transmission_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_transmission"; + + public KHR_materials_transmission_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_transmission(); + extension.transmissionFactor = extensionToken.Value[nameof(KHR_materials_transmission.transmissionFactor)]?.Value() ?? 0; + extension.transmissionTexture = extensionToken.Value[nameof(KHR_materials_transmission.transmissionTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs.meta new file mode 100644 index 000000000..5bdac952a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_transmission.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ae9748bb15524941ba2cda5ed4d3dbb4 +timeCreated: 1653603710 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs new file mode 100644 index 000000000..2020d2849 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs @@ -0,0 +1,38 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + /// + /// This extension defines an unlit shading model for use in glTF 2.0 materials, as an alternative to the Physically Based Rendering (PBR) shading models provided by the core specification. + /// + /// Spec can be found here: + /// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit + /// + public class KHR_MaterialsUnlitExtension : GLTFProperty, IExtension + { + public KHR_MaterialsUnlitExtension() { } + + public KHR_MaterialsUnlitExtension(KHR_MaterialsUnlitExtension ext, GLTFRoot root) : base(ext, root) { } + + public IExtension Clone(GLTFRoot gltfRoot) + { + return new KHR_MaterialsUnlitExtension(this, gltfRoot); + } + + override public void Serialize(JsonWriter writer) + { + writer.WritePropertyName(KHR_MaterialsUnlitExtensionFactory.EXTENSION_NAME); + writer.WriteStartObject(); + base.Serialize(writer); + writer.WriteEndObject(); + } + + public JProperty Serialize() + { + JTokenWriter writer = new JTokenWriter(); + Serialize(writer); + return (JProperty)writer.Token; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs.meta new file mode 100644 index 000000000..041393408 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebec0fdc2a825ef4d8c526c0a5d8c0b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs new file mode 100644 index 000000000..f0147a616 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs @@ -0,0 +1,23 @@ +using System; +using Newtonsoft.Json.Linq; +using GLTF.Math; +using Newtonsoft.Json; +using GLTF.Extensions; + +namespace GLTF.Schema +{ + public class KHR_MaterialsUnlitExtensionFactory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_unlit"; + + public KHR_MaterialsUnlitExtensionFactory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + return new KHR_MaterialsUnlitExtension(); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs.meta new file mode 100644 index 000000000..ec7ac5816 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_unlitExtensionFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 15b8bb59cb9b65e4f92a9cf273cdcf8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs new file mode 100644 index 000000000..3f7b74688 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs @@ -0,0 +1,74 @@ +using System; +using GLTF.Extensions; +using Newtonsoft.Json.Linq; +using Color = GLTF.Math.Color; + +namespace GLTF.Schema +{ + // https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_volume + [Serializable] + public class KHR_materials_volume : IExtension + { + public float thicknessFactor = 0f; + public TextureInfo thicknessTexture;// thicknessTexture // G channel + public float attenuationDistance = float.PositiveInfinity; + public Color attenuationColor = new Color(1, 1, 1, 1); + + public static readonly Color COLOR_DEFAULT = Color.White; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_materials_volume_Factory.EXTENSION_NAME, jo); + + if (thicknessFactor != 0) jo.Add(new JProperty(nameof(thicknessFactor), thicknessFactor)); + if (!float.IsPositiveInfinity(attenuationDistance)) + { + // 0 not allowed + if (!(attenuationDistance > 0)) + attenuationDistance = 0.0001f; + + jo.Add(new JProperty(nameof(attenuationDistance), attenuationDistance)); + } + if (attenuationColor != COLOR_DEFAULT) jo.Add(new JProperty(nameof(attenuationColor), new JArray(attenuationColor.R, attenuationColor.G, attenuationColor.B))); + if (thicknessTexture != null) + jo.WriteTexture(nameof(thicknessTexture), thicknessTexture); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_volume() + { + thicknessFactor = thicknessFactor, attenuationDistance = attenuationDistance, + attenuationColor = attenuationColor, thicknessTexture = thicknessTexture, + }; + } + } + + public class KHR_materials_volume_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = "KHR_materials_volume"; + + public KHR_materials_volume_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + var extension = new KHR_materials_volume(); + extension.thicknessFactor = extensionToken.Value[nameof(KHR_materials_volume.thicknessFactor)]?.Value() ?? 0; + extension.attenuationColor = extensionToken.Value[nameof(KHR_materials_volume.attenuationColor)]?.DeserializeAsColor() ?? Color.White; + extension.attenuationDistance = extensionToken.Value[nameof(KHR_materials_volume.attenuationDistance)]?.Value() ?? float.PositiveInfinity; + extension.thicknessTexture = extensionToken.Value[nameof(KHR_materials_volume.thicknessTexture)]?.DeserializeAsTexture(root); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs.meta new file mode 100644 index 000000000..1983d2e2f --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_materials_volume.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6581bef44e7949e1ae7cf4a597183d1d +timeCreated: 1653603693 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs new file mode 100644 index 000000000..0beeca904 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs @@ -0,0 +1,56 @@ +using System; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + [Serializable] + public class KHR_texture_basisu : IExtension + { + public const string EXTENSION_NAME = "KHR_texture_basisu"; + public ImageId source; + + public KHR_texture_basisu(ImageId source) + { + this.source = source; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_texture_basisu(source); + } + + public JProperty Serialize() + { + JObject ext = new JObject(); + + ext.Add("source", source.Id); + + return new JProperty(EXTENSION_NAME, ext); + } + } + + public class KHR_texture_basisu_Factory : ExtensionFactory + { + public const string EXTENSION_NAME = KHR_texture_basisu.EXTENSION_NAME; + + public KHR_texture_basisu_Factory() + { + ExtensionName = EXTENSION_NAME; + } + + public override IExtension Deserialize(GLTFRoot root, JProperty extensionToken) + { + if (extensionToken != null) + { + if (extensionToken.Value["source"] == null) + throw new Exception("KHR_texture_basisu extension must contain a source property."); + + var reader = extensionToken.Value["source"].CreateReader(); + var extension = new KHR_texture_basisu(ImageId.Deserialize(root, reader)); + return extension; + } + + return null; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs.meta new file mode 100644 index 000000000..b647c2718 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/KHR_texture_basisu.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c9e0c12f9cd04f69b2f4b788cb552437 +timeCreated: 1685969361 \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs new file mode 100644 index 000000000..bfd8e9202 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs @@ -0,0 +1,46 @@ +using GLTF.Extensions; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; + +namespace GLTF.Schema +{ + /// + /// glTF extension that defines the LOD + /// + public class MSFT_LODExtension : IExtension + { + public List NodeIds { get; set; } + public MSFT_LODExtension(List nodeIds) + { + NodeIds = nodeIds; + } + public IExtension Clone(GLTFRoot gltfRoot) + { + return new MSFT_LODExtension(NodeIds); + } + public JProperty Serialize() + { + JProperty jProperty = new JProperty(MSFT_LODExtensionFactory.EXTENSION_NAME, + new JObject( + new JProperty(MSFT_LODExtensionFactory.IDS, new JArray(NodeIds)) + ) + ); + return jProperty; + } + + public List GetLODCoverage(Node node) + { + List lodCoverage = null; + if (node.Extras != null) + { + JToken screenCoverageExtras = node.Extras[MSFT_LODExtensionFactory.SCREEN_COVERAGE_EXTRAS]; + if (screenCoverageExtras != null) + { + lodCoverage = screenCoverageExtras.CreateReader().ReadDoubleList(); + } + } + + return lodCoverage; + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs.meta new file mode 100644 index 000000000..fd918f853 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5414556e16dc4bc40bb228d17d86ddd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs similarity index 91% rename from GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs rename to Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs index a6c70bc24..2bfa1a84c 100644 --- a/GLTFSerialization/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs +++ b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs @@ -1,7 +1,4 @@ -using System; -using Newtonsoft.Json.Linq; -using GLTF.Math; -using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using GLTF.Extensions; using System.Collections.Generic; @@ -12,7 +9,7 @@ public class MSFT_LODExtensionFactory : ExtensionFactory public const string EXTENSION_NAME = "MSFT_lod"; public const string SCREEN_COVERAGE_EXTRAS = "MSFT_screencoverage"; public const string IDS = "ids"; - + public MSFT_LODExtensionFactory() { ExtensionName = EXTENSION_NAME; diff --git a/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs.meta b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs.meta new file mode 100644 index 000000000..7601a5417 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Extensions/MSFT_LODExtensionFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 879b237aa98612d468a9d18e34c9e9c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/GLBBuilder.cs b/Runtime/Plugins/GLTFSerialization/GLBBuilder.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/GLBBuilder.cs rename to Runtime/Plugins/GLTFSerialization/GLBBuilder.cs diff --git a/Runtime/Plugins/GLTFSerialization/GLBBuilder.cs.meta b/Runtime/Plugins/GLTFSerialization/GLBBuilder.cs.meta new file mode 100644 index 000000000..0bc12042c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLBBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ff8d4b6beb2ca648926a7f0e032a63e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/GLBObject.cs b/Runtime/Plugins/GLTFSerialization/GLBObject.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/GLBObject.cs rename to Runtime/Plugins/GLTFSerialization/GLBObject.cs diff --git a/Runtime/Plugins/GLTFSerialization/GLBObject.cs.meta b/Runtime/Plugins/GLTFSerialization/GLBObject.cs.meta new file mode 100644 index 000000000..a9b2f352c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLBObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ddfd4d551e573949a2644728ae031bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs b/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs new file mode 100644 index 000000000..7ebd70508 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs @@ -0,0 +1,1068 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; +using GLTF.Schema; +using System.Linq; + +namespace GLTF +{ + public static class GLTFHelpers + { + private struct PreviousGLTFSizes + { + public int PreviousBufferCount; + public int PreviousBufferViewCount; + public int PreviousAccessorCount; + public int PreviousMeshCount; + public int PreviousNodeCount; + public int PreviousSceneCount; + public int PreviousSkinCount; + public int PreviousAnimationCount; + public int PreviousCameraCount; + public int PreviousMaterialCount; + public int PreviousTextureCount; + public int PreviousImageCount; + public int PreviousSamplerCount; + } + + /// + /// Removes references to indexes that do not exist. + /// + /// The node to clean + public static void RemoveUndefinedReferences(GLTFRoot root) + { + int accessorCount = root.Accessors?.Count ?? 0; + int bufferCount = root.Buffers?.Count ?? 0; + int bufferViewCount = root.BufferViews?.Count ?? 0; + int cameraCount = root.Cameras?.Count ?? 0; + int meshCount = root.Meshes?.Count ?? 0; + int nodeCount = root.Nodes?.Count ?? 0; + int samplersCount = root.Samplers?.Count ?? 0; + int skinCount = root.Skins?.Count ?? 0; + int textureCount = root.Textures?.Count ?? 0; + + if (root.Accessors != null) + { + foreach (Accessor accessor in root.Accessors) + { + if (accessor.BufferView != null && accessor.BufferView.Id >= bufferViewCount) + { + accessor.BufferView = null; + } + } + } + if (root.Animations != null) + { + foreach (GLTFAnimation animation in root.Animations) + { + if (animation.Samplers != null) + { + foreach (AnimationSampler animationSampler in animation.Samplers) + { + if (animationSampler.Input != null && animationSampler.Input.Id >= accessorCount) + { + animationSampler.Input = null; + } + if (animationSampler.Output != null && animationSampler.Output.Id >= accessorCount) + { + animationSampler.Output = null; + } + } + } + } + } + if (root.BufferViews != null) + { + foreach (BufferView bufferView in root.BufferViews) + { + if (bufferView.Buffer != null && bufferView.Buffer.Id >= bufferCount) + { + bufferView.Buffer = null; + } + } + } + if (root.Images != null) + { + foreach (GLTFImage image in root.Images) + { + if (image.BufferView != null && image.BufferView.Id >= bufferViewCount) + { + image.BufferView = null; + } + } + } + if (root.Materials != null) + { + foreach (GLTFMaterial material in root.Materials) + { + if (material.EmissiveTexture?.Index != null && material.EmissiveTexture.Index.Id >= textureCount) + { + material.EmissiveTexture.Index = null; + } + if (material.NormalTexture?.Index != null && material.NormalTexture.Index.Id >= textureCount) + { + material.NormalTexture.Index = null; + } + if (material.OcclusionTexture?.Index != null && material.OcclusionTexture.Index.Id >= textureCount) + { + material.OcclusionTexture.Index = null; + } + if (material.OcclusionTexture?.Index != null && material.OcclusionTexture.Index.Id >= textureCount) + { + material.OcclusionTexture.Index = null; + } + if (material.PbrMetallicRoughness != null) + { + if (material.PbrMetallicRoughness.BaseColorTexture?.Index != null && material.PbrMetallicRoughness.BaseColorTexture.Index.Id >= textureCount) + { + material.PbrMetallicRoughness.BaseColorTexture.Index = null; + } + if (material.PbrMetallicRoughness.MetallicRoughnessTexture?.Index != null && material.PbrMetallicRoughness.MetallicRoughnessTexture.Index.Id >= textureCount) + { + material.PbrMetallicRoughness.MetallicRoughnessTexture.Index = null; + } + } + } + } + if (root.Meshes != null) + { + foreach (GLTFMesh mesh in root.Meshes) + { + if (mesh.Primitives != null) + { + foreach (MeshPrimitive primitive in mesh.Primitives) + { + if (primitive.Indices != null && primitive.Indices.Id >= accessorCount) + { + primitive.Indices = null; + } + if (primitive.Material != null && primitive.Material.Id >= accessorCount) + { + primitive.Material = null; + } + } + } + } + } + if (root.Nodes != null) + { + foreach (Node node in root.Nodes) + { + if (node.Camera != null && node.Camera.Id >= cameraCount) + { + node.Camera = null; + } + if (node.Children != null) + { + for (int i = node.Children.Count - 1; i > 0; i--) + { + if (node.Children[i].Id >= nodeCount) + { + node.Children.RemoveAt(i); + } + } + } + if (node.Mesh != null && node.Mesh.Id >= meshCount) + { + node.Mesh = null; + } + if (node.Skin != null && node.Skin.Id >= skinCount) + { + node.Skin = null; + } + } + } + if (root.Scenes != null) + { + foreach (GLTFScene scene in root.Scenes) + { + if (scene.Nodes != null) + { + for (int i = scene.Nodes.Count - 1; i > 0; i--) + { + if (scene.Nodes[i].Id >= nodeCount) + { + scene.Nodes.RemoveAt(i); + } + } + } + } + } + if (root.Skins != null) + { + foreach (Skin skin in root.Skins) + { + if (skin.Joints != null) + { + for (int i = skin.Joints.Count - 1; i > 0; i--) + { + if (skin.Joints[i].Id >= nodeCount) + { + skin.Joints.RemoveAt(i); + } + } + } + if (skin.Skeleton != null && skin.Skeleton.Id >= nodeCount) + { + skin.Skeleton = null; + } + } + } + if (root.Textures != null) + { + foreach (GLTFTexture texture in root.Textures) + { + if (texture.Sampler != null && texture.Sampler.Id >= samplersCount) + { + texture.Sampler = null; + } + } + } + } + + private static void ApplySparseAccessorsVec3(ref NumericArray resultArray, AttributeAccessor attributeAccessor, AttributeAccessor sparseValues, AttributeAccessor sparseIndices) + { + var sparseArrays = new NumericArray[2]; + + // Values + LoadBufferView(sparseValues.AccessorId.Value.Sparse.Values.BufferView.Value, sparseValues.Offset, sparseValues.Stream, out byte[] bufferViewCache1); + + // Indices + LoadBufferView(sparseIndices.AccessorId.Value.Sparse.Indices.BufferView.Value, sparseIndices.Offset, sparseIndices.Stream, out byte[] bufferViewCache2); + + Accessor.AsSparseVector3Array(attributeAccessor.AccessorId.Value, ref sparseArrays[0], bufferViewCache1, 0); + Accessor.AsSparseUIntArray(attributeAccessor.AccessorId.Value, ref sparseArrays[1], bufferViewCache2, 0); + + var before = new NumericArray(); + before.AsVec3s = new GLTF.Math.Vector3[resultArray.AsVec3s.Length]; + System.Array.Copy(resultArray.AsVec3s, before.AsVec3s, before.AsVec3s.Length); + + for (int j = 0; j < sparseArrays[1].AsUInts.Length; j++) + before.AsVec3s[sparseArrays[1].AsUInts[j]] = sparseArrays[0].AsVec3s[j]; + + resultArray = before; + } + + /// + /// Uses the accessor to parse the buffer into attributes needed to construct the mesh primitive + /// + /// A dictionary that contains a mapping of attribute name to data needed to parse + /// + /// Uses the accessor to parse the buffer into attributes needed to construct the mesh primitive + /// + /// A dictionary that contains a mapping of attribute name to data needed to parse + public static void BuildMeshAttributes(ref Dictionary attributes, ref Dictionary sparseAccessors) + { + if (attributes.ContainsKey(SemanticProperties.POSITION)) + { + var attributeAccessor = attributes[SemanticProperties.POSITION]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsVertexArray(ref resultArray, bufferViewCache); + + if (sparseAccessors.TryGetValue(SemanticProperties.POSITION, out var sparseData)) + ApplySparseAccessorsVec3(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.INDICES)) + { + var attributeAccessor = attributes[SemanticProperties.INDICES]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTriangles(ref resultArray, bufferViewCache); + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.NORMAL)) + { + var attributeAccessor = attributes[SemanticProperties.NORMAL]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsNormalArray(ref resultArray, bufferViewCache); + + if (sparseAccessors.TryGetValue(SemanticProperties.NORMAL, out var sparseData)) + ApplySparseAccessorsVec3(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.TexCoord[0])) + { + var attributeAccessor = attributes[SemanticProperties.TexCoord[0]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTexcoordArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.TexCoord[0], out var sparseData)) + // ApplySparseAccessorsTexCoord(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.TexCoord[1])) + { + var attributeAccessor = attributes[SemanticProperties.TexCoord[1]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTexcoordArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.TexCoord[1], out var sparseData)) + // ApplySparseAccessorsTexCoord(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.TexCoord[2])) + { + var attributeAccessor = attributes[SemanticProperties.TexCoord[2]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTexcoordArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.TexCoord[2], out var sparseData)) + // ApplySparseAccessorsTexCoord(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.TexCoord[3])) + { + var attributeAccessor = attributes[SemanticProperties.TexCoord[3]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTexcoordArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.TexCoord[3], out var sparseData)) + // ApplySparseAccessorsTexCoord(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.Color[0])) + { + var attributeAccessor = attributes[SemanticProperties.Color[0]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsColorArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.Color[0], out var sparseData)) + // ApplySparseAccessorsColor(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.TANGENT)) + { + var attributeAccessor = attributes[SemanticProperties.TANGENT]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsTangentArray(ref resultArray, bufferViewCache); + + // if (sparseAccessors.TryGetValue(SemanticProperties.TANGENT, out var sparseData)) + // ApplySparseAccessorsTangent(ref resultArray, attributeAccessor, sparseData.sparseValues, sparseData.sparseIndices); + + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.Weight[0])) + { + var attributeAccessor = attributes[SemanticProperties.Weight[0]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache); + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.Weight[1])) + { + var attributeAccessor = attributes[SemanticProperties.Weight[1]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache); + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.Joint[0])) + { + var attributeAccessor = attributes[SemanticProperties.Joint[0]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache,0, false); + attributeAccessor.AccessorContent = resultArray; + } + if (attributes.ContainsKey(SemanticProperties.Joint[1])) + { + var attributeAccessor = attributes[SemanticProperties.Joint[1]]; + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache, 0, false); + attributeAccessor.AccessorContent = resultArray; + } + } + + public static void BuildTargetAttributes(ref Dictionary attributes) + { + foreach (var kvp in attributes) + { + var attributeAccessor = kvp.Value; + NumericArray resultArray = attributeAccessor.AccessorContent; + byte[] bufferViewCache; + LoadBufferView(attributeAccessor, out bufferViewCache); + + switch (kvp.Key) + { + case SemanticProperties.POSITION: + case SemanticProperties.NORMAL: + case SemanticProperties.TANGENT: + attributeAccessor.AccessorId.Value.AsVector3Array(ref resultArray, bufferViewCache); + break; + default: + throw new System.Exception($"Unrecognized morph target attribute {kvp.Key}"); + } + + attributeAccessor.AccessorContent = resultArray; + } + } + + public static void BuildBindPoseSamplers(ref AttributeAccessor attributeAccessor) + { + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + attributeAccessor.AccessorId.Value.AsMatrix4x4Array(ref resultArray, bufferViewCache); + attributeAccessor.AccessorContent = resultArray; + } + + /// + /// Uses the accessor to parse the buffer into arrays needed to construct the animation + /// + /// A dictionary mapping AttributeAccessor lists to their target types + public static void BuildAnimationSamplers(ref Dictionary> samplers) + { + foreach (var samplerSet in samplers) + { + foreach (var attributeAccessor in samplerSet.Value) + { + NumericArray resultArray = attributeAccessor.AccessorContent; + LoadBufferView(attributeAccessor, out byte[] bufferViewCache); + + switch (samplerSet.Key) + { + case "time": + attributeAccessor.AccessorId.Value.AsFloatArray(ref resultArray, bufferViewCache); + break; + case "translation": + case "scale": + attributeAccessor.AccessorId.Value.AsVector3Array(ref resultArray, bufferViewCache); + break; + case "rotation": + attributeAccessor.AccessorId.Value.AsVector4Array(ref resultArray, bufferViewCache); + break; + case "weights": + attributeAccessor.AccessorId.Value.AsFloatArray(ref resultArray, bufferViewCache); + break; + } + + attributeAccessor.AccessorContent = resultArray; + } + } + } + + /// + /// Merges the right root into the left root + /// This function combines all of the lists of objects on each glTF root together and updates the relative indicies + /// All properties all merged except Asset and Default, which will stay "mergeToRoot"'s value + /// + /// The node to merge into + /// The node to merge from + public static void MergeGLTF(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) + { + PreviousGLTFSizes previousGLTFSize = new PreviousGLTFSizes() + { + PreviousAccessorCount = mergeToRoot.Accessors?.Count ?? 0, + PreviousBufferCount = mergeToRoot.Buffers?.Count ?? 0, + PreviousAnimationCount = mergeToRoot.Animations?.Count ?? 0, + PreviousBufferViewCount = mergeToRoot.BufferViews?.Count ?? 0, + PreviousCameraCount = mergeToRoot.Cameras?.Count ?? 0, + PreviousImageCount = mergeToRoot.Images?.Count ?? 0, + PreviousMaterialCount = mergeToRoot.Materials?.Count ?? 0, + PreviousMeshCount = mergeToRoot.Meshes?.Count ?? 0, + PreviousNodeCount = mergeToRoot.Nodes?.Count ?? 0, + PreviousSamplerCount = mergeToRoot.Samplers?.Count ?? 0, + PreviousSceneCount = mergeToRoot.Scenes?.Count ?? 0, + PreviousSkinCount = mergeToRoot.Skins?.Count ?? 0, + PreviousTextureCount = mergeToRoot.Textures?.Count ?? 0 + }; + + GLTFRoot mergeFromRootCopy = new GLTFRoot(mergeFromRoot); + + // for each type: + // 1) add the right hand range to the left hand object + // 2) update all ids to be based off of the appended size + + // merge extensions + MergeExtensions(mergeToRoot, mergeFromRootCopy); + + // merge accessors, buffers, and bufferviews + MergeAccessorsBufferViewsAndBuffers(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + + // merge materials, samplers, images, and textures + MergeMaterialsImagesTexturesAndSamplers(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + + // merge meshes + MergeMeshes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + + // merge cameras + MergeCameras(mergeToRoot, mergeFromRootCopy); + + // merge nodes + MergeNodes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + + // merge animation, and skin + MergeAnimationsAndSkins(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + + // merge scenes + MergeScenes(mergeToRoot, mergeFromRootCopy, previousGLTFSize); + } + + /// + /// Returns whether the input string is a Base64 uri. Images and buffers can both be encoded this way. + /// + /// The uri to check + /// Whether the input string is base64 encoded + public static bool IsBase64Uri(string uri) + { + const string Base64StringInitializer = "^data:[a-z-]+/[a-z-]+;base64,"; + + Regex regex = new Regex(Base64StringInitializer); + return regex.Match(uri).Success; + } + + private static void LoadBufferView(AttributeAccessor attributeAccessor, out byte[] bufferViewCache) + { + LoadBufferView(attributeAccessor.AccessorId.Value.BufferView.Value, attributeAccessor.Offset, attributeAccessor.Stream, out bufferViewCache); + } + + internal static void LoadBufferView(BufferView bufferView, uint Offset, Stream Stream, out byte[] bufferViewCache) + { + uint totalOffset = bufferView.ByteOffset + Offset; + + Stream.Position = totalOffset; + bufferViewCache = new byte[bufferView.ByteLength]; + + // stream.Read only accepts int for length + uint remainingSize = bufferView.ByteLength; + while (remainingSize != 0) + { + int sizeToLoad = (int)System.Math.Min(remainingSize, int.MaxValue); + sizeToLoad = Stream.Read(bufferViewCache, (int)(bufferView.ByteLength - remainingSize), sizeToLoad); + remainingSize -= (uint)sizeToLoad; + + if (sizeToLoad == 0 && remainingSize > 0) + { + throw new Exception("Unexpected end of stream while loading buffer view"); + } + } + } + + private static void MergeExtensions(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) + { + // avoid duplicates for extension merging + if (mergeFromRoot.ExtensionsUsed != null) + { + if (mergeToRoot.ExtensionsUsed == null) + { + mergeToRoot.ExtensionsUsed = new List(mergeFromRoot.ExtensionsUsed.Count); + } + + foreach (string extensionUsedToAdd in mergeFromRoot.ExtensionsUsed) + { + if (!mergeToRoot.ExtensionsUsed.Contains(extensionUsedToAdd)) + { + mergeToRoot.ExtensionsUsed.Add(extensionUsedToAdd); + } + } + } + + if (mergeFromRoot.ExtensionsRequired != null) + { + if (mergeToRoot.ExtensionsRequired == null) + { + mergeToRoot.ExtensionsRequired = new List(mergeFromRoot.ExtensionsRequired.Count); + } + + foreach (string extensionRequiredToAdd in mergeFromRoot.ExtensionsRequired) + { + if (!mergeToRoot.ExtensionsRequired.Contains(extensionRequiredToAdd)) + { + mergeToRoot.ExtensionsRequired.Add(extensionRequiredToAdd); + } + } + } + } + + private static void MergeAccessorsBufferViewsAndBuffers(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + bool isGLB = false; + + if (mergeFromRoot.Buffers != null) + { + if (mergeToRoot.Buffers == null) + { + mergeToRoot.Buffers = new List(mergeFromRoot.Buffers.Count); + } + + foreach (GLTFBuffer buffer in mergeFromRoot.Buffers) + { + if (buffer.Uri != null) + { + mergeToRoot.Buffers.Add(buffer); + } + else + { + isGLB = true; // assume glb is a uri is null + } + } + } + + if (mergeFromRoot.BufferViews != null) + { + if (mergeToRoot.BufferViews == null) + { + mergeToRoot.BufferViews = new List(mergeFromRoot.BufferViews.Count); + } + + mergeToRoot.BufferViews.AddRange(mergeFromRoot.BufferViews); + for (int i = previousGLTFSizes.PreviousBufferViewCount; i < mergeToRoot.BufferViews.Count; ++i) + { + GLTFId bufferId = mergeToRoot.BufferViews[i].Buffer; + if (!(isGLB && bufferId.Id == 0)) // if it is pointing a the special glb buffer (index 0 of a glb) then we dont want to adjust the buffer view, otherwise we do + { + // adjusting bufferview id based on merge amount + bufferId.Id += previousGLTFSizes.PreviousBufferCount; + bufferId.Root = mergeToRoot; + } + } + } + + if (mergeFromRoot.Accessors != null) + { + if (mergeToRoot.Accessors == null) + { + mergeToRoot.Accessors = new List(mergeFromRoot.Accessors.Count); + } + + mergeToRoot.Accessors.AddRange(mergeFromRoot.Accessors); + for (int i = previousGLTFSizes.PreviousAccessorCount; i < mergeToRoot.Accessors.Count; ++i) + { + Accessor accessor = mergeToRoot.Accessors[i]; + + if (accessor.BufferView != null) + { + BufferViewId bufferViewId = accessor.BufferView; + bufferViewId.Id += previousGLTFSizes.PreviousBufferViewCount; + bufferViewId.Root = mergeToRoot; + } + + AccessorSparse accessorSparse = accessor.Sparse; + if (accessorSparse != null) + { + BufferViewId indicesId = accessorSparse.Indices.BufferView; + indicesId.Id += previousGLTFSizes.PreviousBufferViewCount; + indicesId.Root = mergeToRoot; + + BufferViewId valuesId = accessorSparse.Values.BufferView; + valuesId.Id += previousGLTFSizes.PreviousBufferViewCount; + valuesId.Root = mergeToRoot; + } + } + } + } + + private static void MergeMaterialsImagesTexturesAndSamplers(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + if (mergeFromRoot.Samplers != null) + { + if (mergeToRoot.Samplers == null) + { + mergeToRoot.Samplers = new List(mergeFromRoot.Samplers.Count); + } + + mergeToRoot.Samplers.AddRange(mergeFromRoot.Samplers); + } + + if (mergeFromRoot.Images != null) + { + if (mergeToRoot.Images == null) + { + mergeToRoot.Images = new List(mergeFromRoot.Images.Count); + } + + mergeToRoot.Images.AddRange(mergeFromRoot.Images); + for (int i = previousGLTFSizes.PreviousImageCount; i < mergeToRoot.Images.Count; ++i) + { + GLTFImage image = mergeToRoot.Images[i]; + if (image.BufferView != null) + { + BufferViewId bufferViewId = image.BufferView; + bufferViewId.Id += previousGLTFSizes.PreviousBufferViewCount; + bufferViewId.Root = mergeToRoot; + } + } + } + + if (mergeFromRoot.Textures != null) + { + if (mergeToRoot.Textures == null) + { + mergeToRoot.Textures = new List(mergeFromRoot.Textures.Count); + } + + mergeToRoot.Textures.AddRange(mergeFromRoot.Textures); + for (int i = previousGLTFSizes.PreviousTextureCount; i < mergeToRoot.Textures.Count; ++i) + { + GLTFTexture texture = mergeToRoot.Textures[i]; + + if (texture.Sampler != null) + { + SamplerId samplerId = texture.Sampler; + samplerId.Id += previousGLTFSizes.PreviousSamplerCount; + samplerId.Root = mergeToRoot; + } + + if (texture.Source != null) + { + ImageId samplerId = texture.Source; + samplerId.Id += previousGLTFSizes.PreviousImageCount; + samplerId.Root = mergeToRoot; + } + } + } + + if (mergeFromRoot.Materials != null) + { + if (mergeToRoot.Materials == null) + { + mergeToRoot.Materials = new List(mergeFromRoot.Materials.Count); + } + + mergeToRoot.Materials.AddRange(mergeFromRoot.Materials); + for (int i = previousGLTFSizes.PreviousMaterialCount; i < mergeToRoot.Materials.Count; ++i) + { + GLTFMaterial material = mergeToRoot.Materials[i]; + + PbrMetallicRoughness pbrMetallicRoughness = material.PbrMetallicRoughness; + if (pbrMetallicRoughness != null) + { + if (pbrMetallicRoughness.BaseColorTexture != null) + { + TextureId textureId = pbrMetallicRoughness.BaseColorTexture.Index; + textureId.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + if (pbrMetallicRoughness.MetallicRoughnessTexture != null) + { + TextureId textureId = pbrMetallicRoughness.MetallicRoughnessTexture.Index; + textureId.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + } + + MaterialCommonConstant commonConstant = material.CommonConstant; + if (commonConstant?.LightmapTexture != null) + { + TextureId textureId = material.CommonConstant.LightmapTexture.Index; + textureId.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + + if (material.EmissiveTexture != null) + { + TextureId textureId = material.EmissiveTexture.Index; + material.EmissiveTexture.Index.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + + if (material.NormalTexture != null) + { + TextureId textureId = material.NormalTexture.Index; + textureId.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + + if (material.OcclusionTexture != null) + { + TextureId textureId = material.OcclusionTexture.Index; + textureId.Id += previousGLTFSizes.PreviousTextureCount; + textureId.Root = mergeToRoot; + } + } + } + } + + private static void MergeMeshes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + if (mergeFromRoot.Meshes == null) return; + + if (mergeToRoot.Meshes == null) + { + mergeToRoot.Meshes = new List(mergeFromRoot.Meshes.Count); + } + + mergeToRoot.Meshes.AddRange(mergeFromRoot.Meshes); + for (int i = previousGLTFSizes.PreviousMeshCount; i < mergeToRoot.Meshes.Count; ++i) + { + GLTFMesh mesh = mergeToRoot.Meshes[i]; + if (mesh.Primitives != null) + { + foreach (MeshPrimitive primitive in mesh.Primitives) + { + foreach (var attributeAccessorPair in primitive.Attributes) + { + AccessorId accessorId = attributeAccessorPair.Value; + accessorId.Id += previousGLTFSizes.PreviousAccessorCount; + accessorId.Root = mergeToRoot; + } + + if (primitive.Indices != null) + { + AccessorId accessorId = primitive.Indices; + accessorId.Id += previousGLTFSizes.PreviousAccessorCount; + accessorId.Root = mergeToRoot; + } + + if (primitive.Material != null) + { + MaterialId materialId = primitive.Material; + materialId.Id += previousGLTFSizes.PreviousMaterialCount; + materialId.Root = mergeToRoot; + } + + if (primitive.Targets != null) + { + foreach (Dictionary targetsDictionary in primitive.Targets) + { + foreach (var targetsPair in targetsDictionary) + { + AccessorId accessorId = targetsPair.Value; + accessorId.Id += previousGLTFSizes.PreviousAccessorCount; + accessorId.Root = mergeToRoot; + } + } + } + } + } + } + } + + private static void MergeCameras(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot) + { + if (mergeFromRoot.Cameras == null) return; + if (mergeToRoot.Cameras == null) + { + mergeToRoot.Cameras = new List(mergeFromRoot.Cameras.Count); + } + + mergeToRoot.Cameras.AddRange(mergeFromRoot.Cameras); + } + + private static void MergeNodes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + if (mergeFromRoot.Nodes == null) return; + + if (mergeToRoot.Nodes == null) + { + mergeToRoot.Nodes = new List(mergeFromRoot.Nodes.Count); + } + + mergeToRoot.Nodes.AddRange(mergeFromRoot.Nodes); + + for (int i = previousGLTFSizes.PreviousNodeCount; i < mergeToRoot.Nodes.Count; ++i) + { + Node node = mergeToRoot.Nodes[i]; + if (node.Mesh != null) + { + MeshId meshId = node.Mesh; + meshId.Id += previousGLTFSizes.PreviousMeshCount; + node.Mesh.Root = mergeToRoot; + } + + if (node.Camera != null) + { + CameraId cameraId = node.Camera; + cameraId.Id += previousGLTFSizes.PreviousCameraCount; + cameraId.Root = mergeToRoot; + } + + if (node.Children != null) + { + foreach (NodeId child in node.Children) + { + child.Id += previousGLTFSizes.PreviousNodeCount; + child.Root = mergeToRoot; + } + } + + if (node.Skin != null) + { + SkinId skinId = node.Skin; + skinId.Id += previousGLTFSizes.PreviousSkinCount; + skinId.Root = mergeToRoot; + } + } + } + + private static void MergeAnimationsAndSkins(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + if (mergeFromRoot.Skins != null) + { + if (mergeToRoot.Skins == null) + { + mergeToRoot.Skins = new List(mergeFromRoot.Skins.Count); + } + + mergeToRoot.Skins.AddRange(mergeFromRoot.Skins); + for (int i = previousGLTFSizes.PreviousSkinCount; i < mergeToRoot.Skins.Count; ++i) + { + Skin skin = mergeToRoot.Skins[i]; + if (skin.InverseBindMatrices != null) + { + skin.InverseBindMatrices.Id += previousGLTFSizes.PreviousAccessorCount; + } + + if (skin.Skeleton != null) + { + skin.Skeleton.Id += previousGLTFSizes.PreviousNodeCount; + } + + if (skin.Joints != null) + { + foreach (NodeId joint in skin.Joints) + { + joint.Id += previousGLTFSizes.PreviousNodeCount; + } + } + } + } + + if (mergeFromRoot.Animations != null) + { + if (mergeToRoot.Animations == null) + { + mergeToRoot.Animations = new List(mergeFromRoot.Animations.Count); + } + + mergeToRoot.Animations.AddRange(mergeFromRoot.Animations); + + for (int i = previousGLTFSizes.PreviousAnimationCount; i < mergeToRoot.Animations.Count; ++i) + { + GLTFAnimation animation = mergeToRoot.Animations[i]; + foreach (AnimationSampler sampler in animation.Samplers) + { + AccessorId inputId = sampler.Input; + inputId.Id += previousGLTFSizes.PreviousAccessorCount; + inputId.Root = mergeToRoot; + + AccessorId outputId = sampler.Output; + outputId.Id += previousGLTFSizes.PreviousAccessorCount; + outputId.Root = mergeToRoot; + } + + foreach (AnimationChannel channel in animation.Channels) + { + AnimationSamplerId samplerId = channel.Sampler; + samplerId.Id += previousGLTFSizes.PreviousSamplerCount; + samplerId.Root = mergeToRoot; + + NodeId nodeId = channel.Target.Node; + nodeId.Id += previousGLTFSizes.PreviousNodeCount; + nodeId.Root = mergeToRoot; + } + } + } + } + + private static void MergeScenes(GLTFRoot mergeToRoot, GLTFRoot mergeFromRoot, PreviousGLTFSizes previousGLTFSizes) + { + if (mergeFromRoot.Scenes == null) return; + + if (mergeToRoot.Scenes == null) + { + mergeToRoot.Scenes = new List(mergeFromRoot.Scenes.Count); + } + + mergeToRoot.Scenes.AddRange(mergeFromRoot.Scenes); + for (int i = previousGLTFSizes.PreviousSceneCount; i < mergeToRoot.Scenes.Count; ++i) + { + GLTFScene scene = mergeToRoot.Scenes[i]; + foreach (NodeId nodeId in scene.Nodes) + { + nodeId.Id += previousGLTFSizes.PreviousNodeCount; + nodeId.Root = mergeToRoot; + } + } + } + + private static string UpdateCanonicalPath(string oldPath, string newCanonicalPath) + { + string fileName = Path.GetFileName(oldPath); + return newCanonicalPath + Path.DirectorySeparatorChar + fileName; + } + + public static NodeId FindCommonAncestor(IEnumerable nodes) + { + // build parentage + GLTFRoot root = nodes.First().Root; + Dictionary childToParent = new Dictionary(root.Nodes.Count); + for (int i = 0; i < root.Nodes.Count; i++) + { + if (root.Nodes[i].Children == null) + { + continue; + } + + foreach (NodeId child in root.Nodes[i].Children) + { + childToParent[child.Id] = i; + } + } + + // scan for common ancestor + int? commonAncestorIndex = nodes + .Select(n => n.Id) + .Aggregate((int?)null, (elder, node) => FindCommonAncestor(elder, node)); + + return commonAncestorIndex != null ? new NodeId() { Id = commonAncestorIndex.Value, Root = root } : null; + + int? FindCommonAncestor(int? a, int? b) + { + // trivial cases + if (a == null && b == null) + { + return null; + } + else if (a != null) + { + return a; + } + else if (b != null) + { + return b; + } + else if (AncestorOf(a.Value, b.Value)) + { + return a; + } + else + { + return FindCommonAncestor(childToParent[a.Value], b.Value); + } + } + + bool AncestorOf(int ancestor, int descendant) + { + while (childToParent.ContainsKey(descendant)) + { + if (childToParent[descendant] == ancestor) + { + return true; + } + descendant = childToParent[descendant]; + } + + return false; + } + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs.meta b/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs.meta new file mode 100644 index 000000000..a040695d6 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 263666854cbd1bc489267c0f2112f5e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/GLTFObject.cs b/Runtime/Plugins/GLTFSerialization/GLTFObject.cs similarity index 88% rename from GLTFSerialization/GLTFSerialization/GLTFObject.cs rename to Runtime/Plugins/GLTFSerialization/GLTFObject.cs index 85570415f..16bf4e7df 100644 --- a/GLTFSerialization/GLTFSerialization/GLTFObject.cs +++ b/Runtime/Plugins/GLTFSerialization/GLTFObject.cs @@ -8,9 +8,9 @@ namespace GLTF public class GLTFObject : IGLTFObject { public GLTFObject(GLTFRoot root) - { - Root = root; - } + { + Root = root; + } /// /// Parsed glTF into a strongly typed C# object diff --git a/Runtime/Plugins/GLTFSerialization/GLTFObject.cs.meta b/Runtime/Plugins/GLTFSerialization/GLTFObject.cs.meta new file mode 100644 index 000000000..7d2bd7514 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a76e06d7bdb61347a2118c05b86c181 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/GLTFParser.cs b/Runtime/Plugins/GLTFSerialization/GLTFParser.cs similarity index 83% rename from GLTFSerialization/GLTFSerialization/GLTFParser.cs rename to Runtime/Plugins/GLTFSerialization/GLTFParser.cs index e79339816..93d7a5421 100644 --- a/GLTFSerialization/GLTFSerialization/GLTFParser.cs +++ b/Runtime/Plugins/GLTFSerialization/GLTFParser.cs @@ -32,9 +32,9 @@ public struct ChunkInfo public class GLTFParser { - public const uint HEADER_SIZE = 12; - public const uint CHUNK_HEADER_SIZE = 8; - public const uint MAGIC_NUMBER = 0x46546c67; + public static readonly uint HEADER_SIZE = 12; + public static readonly uint CHUNK_HEADER_SIZE = 8; + public static readonly uint MAGIC_NUMBER = 0x46546c67; public static void ParseJson(Stream stream, out GLTFRoot gltfRoot, long startPosition = 0) { @@ -55,12 +55,13 @@ public static void ParseJson(Stream stream, out GLTFRoot gltfRoot, long startPos gltfRoot.IsGLB = isGLB; } + // todo: this needs reimplemented. There is no such thing as a binary chunk index, and the chunk may not be in 0, 1, 2 order // Moves stream position to binary chunk location public static ChunkInfo SeekToBinaryChunk(Stream stream, int binaryChunkIndex, long startPosition = 0) { stream.Position = startPosition + 4; // start after magic number chunk GLBHeader header = ParseGLBHeader(stream); - uint chunkOffset = (uint)startPosition + 12; // sizeof(GLBHeader) + magic number + uint chunkOffset = 12; // sizeof(GLBHeader) + magic number uint chunkLength = 0; for (int i = 0; i < binaryChunkIndex + 2; ++i) { @@ -71,7 +72,7 @@ public static ChunkInfo SeekToBinaryChunk(Stream stream, int binaryChunkIndex, l } // Load Binary Chunk - if (chunkOffset + chunkLength - (uint)startPosition <= header.FileLength) + if (chunkOffset + chunkLength <= header.FileLength) { ChunkFormat chunkType = (ChunkFormat)GetUInt32(stream); if (chunkType != ChunkFormat.BIN) @@ -87,7 +88,16 @@ public static ChunkInfo SeekToBinaryChunk(Stream stream, int binaryChunkIndex, l }; } - throw new GLTFHeaderInvalidException("File length does not match chunk header."); + + // Be aware that File length does not match header when MeshOpt compression is used! + //throw new GLTFHeaderInvalidException("File length does not match chunk header."); + + return new ChunkInfo + { + StartPosition = stream.Position - CHUNK_HEADER_SIZE, + Length = chunkLength, + Type = ChunkFormat.BIN + }; } public static GLBHeader ParseGLBHeader(Stream stream) @@ -150,7 +160,7 @@ private static void ParseJsonChunk(Stream stream, long startPosition) throw new GLTFHeaderInvalidException("Unsupported glTF version"); }; - if (header.FileLength != (stream.Length - startPosition)) + if (header.FileLength > (stream.Length - startPosition)) { throw new GLTFHeaderInvalidException("File length does not match header."); } diff --git a/Runtime/Plugins/GLTFSerialization/GLTFParser.cs.meta b/Runtime/Plugins/GLTFSerialization/GLTFParser.cs.meta new file mode 100644 index 000000000..bb3925b1d --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6baa61f5385e65042bc17abb85d5f9b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef b/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef new file mode 100644 index 000000000..7e7f1c2f8 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef @@ -0,0 +1,24 @@ +{ + "name": "GLTFSerialization", + "rootNamespace": "", + "references": [ + "GUID:84ca1e7ada6c144debb2e417c8dbe9a5" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": true, + "precompiledReferences": [ + "Newtonsoft.Json.dll" + ], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.meshopt.decompress", + "expression": "", + "define": "HAVE_MESHOPT_DECOMPRESS" + } + ], + "noEngineReferences": true +} \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef.meta b/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef.meta new file mode 100644 index 000000000..1c4309700 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/GLTFSerialization.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 40f39bff7bc9be34182ebe488fcf8228 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/IGLTFObject.cs b/Runtime/Plugins/GLTFSerialization/IGLTFObject.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/IGLTFObject.cs rename to Runtime/Plugins/GLTFSerialization/IGLTFObject.cs diff --git a/Runtime/Plugins/GLTFSerialization/IGLTFObject.cs.meta b/Runtime/Plugins/GLTFSerialization/IGLTFObject.cs.meta new file mode 100644 index 000000000..9072507f3 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/IGLTFObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d3d653bfec13be4c9e06a22631d3420 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/GLTFSerialization.csproj b/Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj similarity index 91% rename from GLTFSerialization/GLTFSerialization/GLTFSerialization.csproj rename to Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj index 6634c856f..59973f170 100644 --- a/GLTFSerialization/GLTFSerialization/GLTFSerialization.csproj +++ b/Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj @@ -5,7 +5,6 @@ net35;netstandard1.3 - $(TargetFrameworks);uap10.0.10586 Library ..\..\UnityGLTF\Assets\UnityGLTF\Runtime\Plugins\ @@ -47,7 +46,10 @@ true TRACE - + + + false + @@ -60,7 +62,6 @@ UAP - @@ -69,7 +70,6 @@ UAP - all contentFiles @@ -83,9 +83,6 @@ bin\$(Configuration)\ UAP - - - @@ -94,5 +91,6 @@ all runtime; build; native; contentfiles; analyzers + diff --git a/Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj.meta b/Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj.meta new file mode 100644 index 000000000..d75094dae --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Legacy~/GLTFSerialization.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0833101f3e32c5849a37072f628efc15 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Math.meta b/Runtime/Plugins/GLTFSerialization/Math.meta new file mode 100644 index 000000000..4d8d0d307 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cde5e1bb32bb63047be2e7ef338ffd50 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Math/Color.cs b/Runtime/Plugins/GLTFSerialization/Math/Color.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Math/Color.cs rename to Runtime/Plugins/GLTFSerialization/Math/Color.cs index 6eecf7811..102af7ec7 100644 --- a/GLTFSerialization/GLTFSerialization/Math/Color.cs +++ b/Runtime/Plugins/GLTFSerialization/Math/Color.cs @@ -5,6 +5,7 @@ namespace GLTF.Math public struct Color : IEquatable { public static Color Black { get { return new Color(0f, 0f, 0f, 1f); } } + public static Color Clear { get { return new Color(0f, 0f, 0f, 0f); } } public static Color White { get { return new Color(1f, 1f, 1f, 1f); } } public float R { get; set; } diff --git a/Runtime/Plugins/GLTFSerialization/Math/Color.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Color.cs.meta new file mode 100644 index 000000000..87cb667c1 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Color.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7ba942550f634246ac9a798262e498f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Math/Matrix4x4.cs b/Runtime/Plugins/GLTFSerialization/Math/Matrix4x4.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Math/Matrix4x4.cs rename to Runtime/Plugins/GLTFSerialization/Math/Matrix4x4.cs diff --git a/Runtime/Plugins/GLTFSerialization/Math/Matrix4x4.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Matrix4x4.cs.meta new file mode 100644 index 000000000..bd587d9e8 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Matrix4x4.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9aeefcfaec31e2945bdd16285de33227 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs b/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs new file mode 100644 index 000000000..896f1ed80 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs @@ -0,0 +1,76 @@ +using System; + +namespace GLTF.Math +{ + public struct Quaternion : IEquatable + { + public static readonly Quaternion Identity = new Quaternion(0f, 0f, 0f, 1f); + public float X { get; set; } + public float Y { get; set; } + public float Z { get; set; } + public float W { get; set; } + + public Quaternion(float x, float y, float z, float w) + { + X = x; + Y = y; + Z = z; + W = w; + } + + public Quaternion(Quaternion other) + { + X = other.X; + Y = other.Y; + Z = other.Z; + W = other.W; + } + + public bool Equals(Quaternion other) + { + return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z) && W.Equals(other.W); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + return obj is Quaternion && Equals((Quaternion) obj); + } + + public override int GetHashCode() + { + unchecked + { + var hashCode = X.GetHashCode(); + hashCode = (hashCode * 397) ^ Y.GetHashCode(); + hashCode = (hashCode * 397) ^ Z.GetHashCode(); + hashCode = (hashCode * 397) ^ W.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(Quaternion left, Quaternion right) + { + return left.Equals(right); + } + + public static bool operator !=(Quaternion left, Quaternion right) + { + return !left.Equals(right); + } + + /// First quaternion. + /// Second quaternion. + /// Result of multiplication. + public static Quaternion operator *(Quaternion left, Quaternion right) + { + float x = left.W * right.X + left.X * right.W + left.Y * right.Z - left.Z * right.Y; + float y = left.W * right.Y + left.Y * right.W + left.Z * right.X - left.X * right.Z; + float z = left.W * right.Z + left.Z * right.W + left.X * right.Y - left.Y * right.X; + float w = left.W * right.W - left.X * right.X - left.Y * right.Y - left.Z * right.Z; + Quaternion result = new Quaternion(x, y, z, w); + return result; + + } + } +} \ No newline at end of file diff --git a/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs.meta new file mode 100644 index 000000000..d20d0eef3 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Quaternion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 21f2d9fe5dc7e3c4a873d2f2d5deb404 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Math/Vector2.cs b/Runtime/Plugins/GLTFSerialization/Math/Vector2.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Math/Vector2.cs rename to Runtime/Plugins/GLTFSerialization/Math/Vector2.cs diff --git a/Runtime/Plugins/GLTFSerialization/Math/Vector2.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Vector2.cs.meta new file mode 100644 index 000000000..e3e4491e2 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Vector2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ce6455297f415343beeaaec7bddb32d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Math/Vector3.cs b/Runtime/Plugins/GLTFSerialization/Math/Vector3.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Math/Vector3.cs rename to Runtime/Plugins/GLTFSerialization/Math/Vector3.cs diff --git a/Runtime/Plugins/GLTFSerialization/Math/Vector3.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Vector3.cs.meta new file mode 100644 index 000000000..299ed989a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Vector3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1691a2a5c9edac418814a93b69b2f4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Math/Vector4.cs b/Runtime/Plugins/GLTFSerialization/Math/Vector4.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Math/Vector4.cs rename to Runtime/Plugins/GLTFSerialization/Math/Vector4.cs diff --git a/Runtime/Plugins/GLTFSerialization/Math/Vector4.cs.meta b/Runtime/Plugins/GLTFSerialization/Math/Vector4.cs.meta new file mode 100644 index 000000000..d3d30d728 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Math/Vector4.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5da6fe3b49e1de94a9ced1f70dd1bf84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Properties.meta b/Runtime/Plugins/GLTFSerialization/Properties.meta new file mode 100644 index 000000000..1e4673b44 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Properties.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27196d12847e1f441b0b711ca2ce9ac4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs b/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..54caea710 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GLTFSerialization")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GLTFSerializer")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("72AC331F-9810-4DE2-8EA3-84559A787218")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs.meta b/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs.meta new file mode 100644 index 000000000..39d61d029 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Properties/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9cfc1efa73335948afd6531e3a55ac1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema.meta b/Runtime/Plugins/GLTFSerialization/Schema.meta new file mode 100644 index 000000000..c2d0b74ed --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc456dd013a8e964abdb43ca81d17b18 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/Accessor.cs b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs similarity index 87% rename from GLTFSerialization/GLTFSerialization/Schema/Accessor.cs rename to Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs index 99477ee1e..c665a1f25 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/Accessor.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs @@ -254,7 +254,7 @@ public override void Serialize(JsonWriter writer) private static sbyte GetByteElement(byte[] buffer, uint byteOffset) { - return Convert.ToSByte(GetUByteElement(buffer, byteOffset)); + return (sbyte) GetUByteElement(buffer, byteOffset); } private static byte GetUByteElement(byte[] buffer, uint byteOffset) @@ -294,7 +294,65 @@ private static unsafe float GetFloatElement(byte[] buffer, uint byteOffset) } } - private static void GetTypeDetails( + public static GLTF.Math.Vector3[] AsSparseVector3Array(Accessor paraAccessor, ref NumericArray contents, byte[] bufferViewData, uint offset = 0, bool normalizeIntValues = true) + { + var Count = paraAccessor.Sparse.Count; + var ComponentType = paraAccessor.ComponentType; + + var arr = new GLTF.Math.Vector3[paraAccessor.Sparse.Count]; + var totalByteOffset = (uint) paraAccessor.Sparse.Values.ByteOffset + offset; + + uint componentSize; + float maxValue; + GetTypeDetails(paraAccessor.ComponentType, out componentSize, out maxValue); + uint stride = componentSize * 3; + if (normalizeIntValues) maxValue = 1; + + for (uint idx = 0; idx < Count; idx++) + { + if (ComponentType == GLTFComponentType.Float) + { + arr[idx].X = GetFloatElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 0); + arr[idx].Y = GetFloatElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 1); + arr[idx].Z = GetFloatElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 2); + } + else + { + arr[idx].X = GetDiscreteElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 0, ComponentType) / maxValue; + arr[idx].Y = GetDiscreteElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 1, ComponentType) / maxValue; + arr[idx].Z = GetDiscreteElement(bufferViewData, totalByteOffset + idx * stride + componentSize * 2, ComponentType) / maxValue; + } + } + contents.AsVec3s = arr; + return arr; + } + + public static uint[] AsSparseUIntArray(Accessor paraAccessor, ref NumericArray contents, byte[] bufferViewData, uint offset = 0) + { + var arr = new uint[paraAccessor.Sparse.Count]; + var totalByteOffset = paraAccessor.Sparse.Indices.ByteOffset + offset; + + uint componentSize; + float maxValue; + GetTypeDetails(paraAccessor.Sparse.Indices.ComponentType, out componentSize, out maxValue); + + uint stride = componentSize; + for (uint idx = 0; idx < paraAccessor.Sparse.Count; idx++) + { + if (stride == 1) + { + arr[idx] = (uint)bufferViewData[(int)(totalByteOffset + idx)]; + } + else + { + arr[idx] = System.BitConverter.ToUInt16(bufferViewData, (int)(totalByteOffset + idx * stride)); + } + } + contents.AsUInts = arr; + return arr; + } + + internal static void GetTypeDetails( GLTFComponentType type, out uint componentSize, out float maxValue) @@ -333,7 +391,7 @@ private static void GetTypeDetails( } } - public uint[] AsUIntArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public uint[] AsUIntArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsUInts != null) { @@ -366,7 +424,7 @@ public uint[] AsUIntArray(ref NumericArray contents, byte[] bufferViewData, uint return arr; } - public float[] AsFloatArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public float[] AsFloatArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsUInts != null) { @@ -399,7 +457,7 @@ public float[] AsFloatArray(ref NumericArray contents, byte[] bufferViewData, ui return arr; } - public Vector2[] AsVector2Array(ref NumericArray contents, byte[] bufferViewData, uint offset, bool normalizeIntValues = true) + public Vector2[] AsVector2Array(ref NumericArray contents, byte[] bufferViewData, uint offset = 0, bool normalizeIntValues = true) { if (contents.AsVec2s != null) { @@ -424,7 +482,7 @@ public Vector2[] AsVector2Array(ref NumericArray contents, byte[] bufferViewData GetTypeDetails(ComponentType, out componentSize, out maxValue); uint stride = BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * 2; - if (normalizeIntValues) maxValue = 1; + if (!normalizeIntValues) maxValue = 1; for (uint idx = 0; idx < Count; idx++) { @@ -444,7 +502,7 @@ public Vector2[] AsVector2Array(ref NumericArray contents, byte[] bufferViewData return arr; } - public Vector3[] AsVector3Array(ref NumericArray contents, byte[] bufferViewData, uint offset, bool normalizeIntValues = true) + public Vector3[] AsVector3Array(ref NumericArray contents, byte[] bufferViewData, uint offset = 0, bool normalizeIntValues = true) { if (contents.AsVec3s != null) { @@ -464,7 +522,7 @@ public Vector3[] AsVector3Array(ref NumericArray contents, byte[] bufferViewData GetTypeDetails(ComponentType, out componentSize, out maxValue); uint stride = BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * 3; - if (normalizeIntValues) maxValue = 1; + if (!normalizeIntValues) maxValue = 1; for (uint idx = 0; idx < Count; idx++) { @@ -486,7 +544,7 @@ public Vector3[] AsVector3Array(ref NumericArray contents, byte[] bufferViewData return arr; } - public Vector4[] AsVector4Array(ref NumericArray contents, byte[] bufferViewData, uint offset, bool normalizeIntValues = true) + public Vector4[] AsVector4Array(ref NumericArray contents, byte[] bufferViewData, uint offset = 0, bool normalizeIntValues = true) { if (contents.AsVec4s != null) { @@ -511,7 +569,7 @@ public Vector4[] AsVector4Array(ref NumericArray contents, byte[] bufferViewData GetTypeDetails(ComponentType, out componentSize, out maxValue); uint stride = BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * 4; - if (normalizeIntValues) maxValue = 1; + if (!normalizeIntValues) maxValue = 1; for (uint idx = 0; idx < Count; idx++) { @@ -535,7 +593,7 @@ public Vector4[] AsVector4Array(ref NumericArray contents, byte[] bufferViewData return arr; } - public Color[] AsColorArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public Color[] AsColorArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsColors != null) { @@ -590,7 +648,7 @@ public Color[] AsColorArray(ref NumericArray contents, byte[] bufferViewData, ui return arr; } - public Vector2[] AsTexcoordArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public Vector2[] AsTexcoordArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsTexcoords != null) { @@ -602,7 +660,7 @@ public Vector2[] AsTexcoordArray(ref NumericArray contents, byte[] bufferViewDat return contents.AsTexcoords; } - public Vector3[] AsVertexArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public Vector3[] AsVertexArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsVertices != null) { @@ -614,7 +672,7 @@ public Vector3[] AsVertexArray(ref NumericArray contents, byte[] bufferViewData, return contents.AsVertices; } - public Vector3[] AsNormalArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public Vector3[] AsNormalArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsNormals != null) { @@ -626,7 +684,7 @@ public Vector3[] AsNormalArray(ref NumericArray contents, byte[] bufferViewData, return contents.AsNormals; } - public Vector4[] AsTangentArray(ref NumericArray contents, byte[] bufferViewData, uint offset) + public Vector4[] AsTangentArray(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsTangents != null) { @@ -638,7 +696,7 @@ public Vector4[] AsTangentArray(ref NumericArray contents, byte[] bufferViewData return contents.AsTangents; } - public uint[] AsTriangles(ref NumericArray contents, byte[] bufferViewData, uint offset) + public uint[] AsTriangles(ref NumericArray contents, byte[] bufferViewData, uint offset = 0) { if (contents.AsTriangles != null) { @@ -650,7 +708,7 @@ public uint[] AsTriangles(ref NumericArray contents, byte[] bufferViewData, uint return contents.AsTriangles; } - public Matrix4x4[] AsMatrix4x4Array(ref NumericArray contents, byte[] bufferViewData, uint offset, bool normalizeIntValues = true) + public Matrix4x4[] AsMatrix4x4Array(ref NumericArray contents, byte[] bufferViewData, uint offset = 0, bool normalizeIntValues = true) { if (contents.AsMatrix4x4s != null) { @@ -669,10 +727,7 @@ public Matrix4x4[] AsMatrix4x4Array(ref NumericArray contents, byte[] bufferView float maxValue; GetTypeDetails(ComponentType, out componentSize, out maxValue); - if (normalizeIntValues) - { - maxValue = 1; - } + if (!normalizeIntValues) maxValue = 1; uint stride = (uint)(BufferView.Value.ByteStride > 0 ? BufferView.Value.ByteStride : componentSize * 16); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs.meta new file mode 100644 index 000000000..2110124c2 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/Accessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fdb27ce25eaa9e418627129cb42bd53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparse.cs b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs similarity index 93% rename from GLTFSerialization/GLTFSerialization/Schema/AccessorSparse.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs index 0016053e3..4235bb416 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparse.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs @@ -1,3 +1,4 @@ +using System; using Newtonsoft.Json; namespace GLTF.Schema @@ -26,7 +27,7 @@ public class AccessorSparse : GLTFProperty public AccessorSparse() { } - + public AccessorSparse(AccessorSparse accessorSparse, GLTFRoot gltfRoot) : base(accessorSparse) { if (accessorSparse == null) return; @@ -40,6 +41,11 @@ public static AccessorSparse Deserialize(GLTFRoot root, JsonReader reader) { var accessorSparse = new AccessorSparse(); + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + throw new Exception("Asset must be an object."); + } + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs.meta new file mode 100644 index 000000000..790a1064c --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30350fa0a44956c4084506e37779d503 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparseIndices.cs b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs similarity index 93% rename from GLTFSerialization/GLTFSerialization/Schema/AccessorSparseIndices.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs index dede4eb98..8f4693938 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparseIndices.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs @@ -1,3 +1,4 @@ +using System; using Newtonsoft.Json; namespace GLTF.Schema @@ -31,7 +32,7 @@ public AccessorSparseIndices() public AccessorSparseIndices(AccessorSparseIndices accessorSparseIndices, GLTFRoot gltfRoot) : base(accessorSparseIndices) { if (accessorSparseIndices == null) return; - + BufferView = new BufferViewId(accessorSparseIndices.BufferView, gltfRoot); ByteOffset = accessorSparseIndices.ByteOffset; ComponentType = accessorSparseIndices.ComponentType; @@ -41,6 +42,11 @@ public static AccessorSparseIndices Deserialize(GLTFRoot root, JsonReader reader { var indices = new AccessorSparseIndices(); + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + throw new Exception("Asset must be an object."); + } + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs.meta new file mode 100644 index 000000000..079d9d6ca --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseIndices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0606e7ff683a71a4098fadddab4663f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparseValues.cs b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs similarity index 92% rename from GLTFSerialization/GLTFSerialization/Schema/AccessorSparseValues.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs index d100f15c9..f017f17d4 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AccessorSparseValues.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs @@ -1,3 +1,4 @@ +using System; using Newtonsoft.Json; namespace GLTF.Schema @@ -32,6 +33,11 @@ public static AccessorSparseValues Deserialize(GLTFRoot root, JsonReader reader) { var values = new AccessorSparseValues(); + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + throw new Exception("Asset must be an object."); + } + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs.meta new file mode 100644 index 000000000..1406cc8ee --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AccessorSparseValues.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d00bc2c09c68ec8408bd7b0069b855d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AnimationChannel.cs b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs similarity index 87% rename from GLTFSerialization/GLTFSerialization/Schema/AnimationChannel.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs index 9061e6464..f4bafb62d 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AnimationChannel.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs @@ -11,7 +11,7 @@ public class AnimationChannel : GLTFProperty /// The index of a sampler in this animation used to compute the value for the /// target, e.g., a node's translation, rotation, or scale (TRS). /// - public SamplerId Sampler; + public AnimationSamplerId Sampler; /// /// The index of the node and TRS property to target. @@ -26,11 +26,11 @@ public AnimationChannel(AnimationChannel animationChannel, GLTFRoot root) : base { if (animationChannel == null) return; - Sampler = new SamplerId(animationChannel.Sampler, root); + Sampler = new AnimationSamplerId(animationChannel.Sampler, root); Target = new AnimationChannelTarget(animationChannel.Target, root); } - public static AnimationChannel Deserialize(GLTFRoot root, JsonReader reader) + public static AnimationChannel Deserialize(GLTFRoot root, JsonReader reader, GLTFAnimation anim) { var animationChannel = new AnimationChannel(); @@ -41,7 +41,7 @@ public static AnimationChannel Deserialize(GLTFRoot root, JsonReader reader) switch (curProp) { case "sampler": - animationChannel.Sampler = SamplerId.Deserialize(root, reader); + animationChannel.Sampler = AnimationSamplerId.Deserialize(root, anim, reader); break; case "target": animationChannel.Target = AnimationChannelTarget.Deserialize(root, reader); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs.meta new file mode 100644 index 000000000..8b6fbac30 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e7ba1c2598f9aa48a88e0e2730433b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AnimationChannelTarget.cs b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs similarity index 77% rename from GLTFSerialization/GLTFSerialization/Schema/AnimationChannelTarget.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs index 6d447c3f6..a119b40a2 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AnimationChannelTarget.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs @@ -17,7 +17,7 @@ public class AnimationChannelTarget : GLTFProperty /// /// The name of the node's TRS property to modify. /// - public GLTFAnimationChannelPath Path; + public string Path; public static AnimationChannelTarget Deserialize(GLTFRoot root, JsonReader reader) { @@ -38,8 +38,11 @@ public static AnimationChannelTarget Deserialize(GLTFRoot root, JsonReader reade animationChannelTarget.Node = NodeId.Deserialize(root, reader); break; case "path": - animationChannelTarget.Path = reader.ReadStringEnum(); + animationChannelTarget.Path = reader.ReadAsString();// reader.ReadStringEnum(); break; + // TODO: add KHR_animation_pointer import + // case "pointer": + // break; default: animationChannelTarget.DefaultPropertyDeserializer(root, reader); break; @@ -57,7 +60,7 @@ public AnimationChannelTarget(AnimationChannelTarget channelTarget, GLTFRoot glt { if (channelTarget == null) return; - Node = new NodeId(channelTarget.Node, gltfRoot); + Node = channelTarget.Node != null ? new NodeId(channelTarget.Node, gltfRoot) : null; Path = channelTarget.Path; } @@ -65,8 +68,12 @@ public override void Serialize(JsonWriter writer) { writer.WriteStartObject(); - writer.WritePropertyName("node"); - writer.WriteValue(Node.Id); + // in KHR_animation2 node might not exist, instead it has an extensions field + if (Node != null) + { + writer.WritePropertyName("node"); + writer.WriteValue(Node.Id); + } writer.WritePropertyName("path"); writer.WriteValue(Path.ToString()); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs.meta new file mode 100644 index 000000000..0ec1b460a --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationChannelTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8111941d8c535694480020d2938d7ead +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/AnimationSampler.cs b/Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs similarity index 91% rename from GLTFSerialization/GLTFSerialization/Schema/AnimationSampler.cs rename to Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs index ccbf05b81..385bebb9a 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/AnimationSampler.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs @@ -88,11 +88,9 @@ public override void Serialize(JsonWriter writer) writer.WritePropertyName("input"); writer.WriteValue(Input.Id); - if (Interpolation != InterpolationType.LINEAR) - { - writer.WritePropertyName("interpolation"); - writer.WriteValue(Interpolation.ToString()); - } + // the spec defines "LINEAR" as default, but we need to explicitly export this since there are issues with Google SceneViewer when no interpolation is specified + writer.WritePropertyName("interpolation"); + writer.WriteValue(Interpolation.ToString()); writer.WritePropertyName("output"); writer.WriteValue(Output.Id); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs.meta new file mode 100644 index 000000000..16d77b8b6 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/AnimationSampler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fda6c6e1290a7b44bfefed8f5d16c5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/Asset.cs b/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/Asset.cs rename to Runtime/Plugins/GLTFSerialization/Schema/Asset.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs.meta new file mode 100644 index 000000000..51bb8f39e --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/Asset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85a3a816df09cc345ab4002fe5a7cf11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/BufferView.cs b/Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Schema/BufferView.cs rename to Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs index ce89a9c7d..10a0bc07e 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/BufferView.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs @@ -5,8 +5,17 @@ namespace GLTF.Schema { public enum BufferViewTarget { + /// + /// For animation or + /// None = 0, + /// + /// For vertex data + /// ArrayBuffer = 34962, + /// + /// For index data + /// ElementArrayBuffer = 34963, } diff --git a/Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs.meta new file mode 100644 index 000000000..818203e6e --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/BufferView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d729c33bb2a00cc4d9b1dfb86a5328e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/CameraOrthographic.cs b/Runtime/Plugins/GLTFSerialization/Schema/CameraOrthographic.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/CameraOrthographic.cs rename to Runtime/Plugins/GLTFSerialization/Schema/CameraOrthographic.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/CameraOrthographic.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/CameraOrthographic.cs.meta new file mode 100644 index 000000000..e4088cf46 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/CameraOrthographic.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6454a44f211e034fbb296317a54bc1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/CameraPerspective.cs b/Runtime/Plugins/GLTFSerialization/Schema/CameraPerspective.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/CameraPerspective.cs rename to Runtime/Plugins/GLTFSerialization/Schema/CameraPerspective.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/CameraPerspective.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/CameraPerspective.cs.meta new file mode 100644 index 000000000..1fb2a9559 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/CameraPerspective.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf6fe265120bc154ea4bb0c11a7ab8a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFAnimation.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFAnimation.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs index 14585ae23..a1838f156 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFAnimation.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs @@ -33,7 +33,7 @@ public static GLTFAnimation Deserialize(GLTFRoot root, JsonReader reader) switch (curProp) { case "channels": - animation.Channels = reader.ReadList(() => AnimationChannel.Deserialize(root, reader)); + animation.Channels = reader.ReadList(() => AnimationChannel.Deserialize(root, reader, animation)); break; case "samplers": animation.Samplers = reader.ReadList(() => AnimationSampler.Deserialize(root, reader)); @@ -49,6 +49,8 @@ public static GLTFAnimation Deserialize(GLTFRoot root, JsonReader reader) public GLTFAnimation() { + Channels = new List(); + Samplers = new List(); } public GLTFAnimation(GLTFAnimation animation, GLTFRoot gltfRoot) : base(animation, gltfRoot) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs.meta new file mode 100644 index 000000000..9fc1149a0 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27b34af664d9b4d45bf9d8b43a109eab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFBuffer.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFBuffer.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFBuffer.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFBuffer.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFBuffer.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFBuffer.cs.meta new file mode 100644 index 000000000..a1d45a1cc --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFBuffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c36ff96bc8f31054f9d2c15607ad7d3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFCamera.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFCamera.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFCamera.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFCamera.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFCamera.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFCamera.cs.meta new file mode 100644 index 000000000..280ca9166 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eebe17975598da0458e2f068665cae53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs.meta new file mode 100644 index 000000000..70c6a0a94 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFChildOfRootProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffc3c1d1c490aaf4f98df999eb0429ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFExtensions.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFExtensions.cs new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFExtensions.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFExtensions.cs.meta new file mode 100644 index 000000000..4ca595824 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31f6e4fa1022c1c44905eca2de16e943 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFId.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs similarity index 85% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFId.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs index 6b9422b5d..ead41940e 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFId.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs @@ -282,6 +282,37 @@ public static SamplerId Deserialize(GLTFRoot root, JsonReader reader) } } + public class AnimationSamplerId : GLTFId + { + public GLTFAnimation GLTFAnimation; + public override AnimationSampler Value + { + get { return GLTFAnimation.Samplers[Id]; } + } + + public AnimationSamplerId () + { + + } + public AnimationSamplerId (AnimationSamplerId sampler, GLTFRoot root) + { + Id = sampler.Id; + GLTFAnimation = sampler.GLTFAnimation; + Root = root; + } + + + public static AnimationSamplerId Deserialize(GLTFRoot root, GLTFAnimation anim, JsonReader reader) + { + return new AnimationSamplerId + { + Id = reader.ReadAsInt32().Value, + GLTFAnimation = anim, + Root = root + }; + } + } + public class SceneId : GLTFId { public SceneId() @@ -365,4 +396,29 @@ public static TextureId Deserialize(GLTFRoot root, JProperty jProperty) }; } } + + public class LightId : GLTFId + { + public LightId() + { + } + + public LightId(LightId id, GLTFRoot newRoot) : base(id, newRoot) + { + } + + public override GLTFLight Value + { + get { return Root.Lights[Id]; } //should be extensions? + } + + public static LightId Deserialize(GLTFRoot root, JsonReader reader) + { + return new LightId + { + Id = reader.ReadAsInt32().Value, + Root = root + }; + } + } } diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs.meta new file mode 100644 index 000000000..71e40a99f --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFId.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53002b1acd71031408f61b758ec5ef2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFImage.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFImage.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFImage.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFImage.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFImage.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFImage.cs.meta new file mode 100644 index 000000000..69ad34184 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2c8ec880230ff84fb20ff6dd04548c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFMaterial.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFMaterial.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs index 95536cbd0..565de212b 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFMaterial.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs @@ -51,7 +51,7 @@ public class GLTFMaterial : GLTFChildOfRootProperty /// 3 /// 3 /// - public Color EmissiveFactor = Color.Black; + public Color EmissiveFactor = Color.Clear; /// /// The material's alpha rendering mode enumeration specifying the interpretation of the @@ -144,7 +144,9 @@ public static GLTFMaterial Deserialize(GLTFRoot root, JsonReader reader) material.EmissiveTexture = TextureInfo.Deserialize(root, reader); break; case "emissiveFactor": - material.EmissiveFactor = reader.ReadAsRGBColor(); + var emissiveColor = reader.ReadAsRGBColor(); + emissiveColor.A = 0; + material.EmissiveFactor = emissiveColor; break; case "alphaMode": material.AlphaMode = reader.ReadStringEnum(); @@ -198,7 +200,7 @@ public override void Serialize(JsonWriter writer) EmissiveTexture.Serialize(writer); } - if (EmissiveFactor != Color.Black) + if (EmissiveFactor != Color.Clear && !(EmissiveFactor.R == 0 && EmissiveFactor.G == 0 && EmissiveFactor.B == 0)) { writer.WritePropertyName("emissiveFactor"); writer.WriteStartArray(); @@ -217,7 +219,8 @@ public override void Serialize(JsonWriter writer) if (AlphaCutoff != 0.5) { writer.WritePropertyName("alphaCutoff"); - writer.WriteValue(AlphaCutoff); + var sanitizedCutoff = AlphaCutoff < 0.0 ? 0.0 : AlphaCutoff > 1.0 ? 1.0 : AlphaCutoff; + writer.WriteValue(sanitizedCutoff); } if (DoubleSided) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs.meta new file mode 100644 index 000000000..faf3359ba --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMaterial.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aca48cfee1de3af49b4f3aca770e3828 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs new file mode 100644 index 000000000..6bae59322 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs @@ -0,0 +1,150 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Extensions; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + /// + /// A set of primitives to be rendered. A node can contain one or more meshes. + /// A node's transform places the mesh in the scene. + /// + public class GLTFMesh : GLTFChildOfRootProperty + { + /// + /// An array of primitives, each defining geometry to be rendered with + /// a material. + /// 1 + /// + public List Primitives; + + /// + /// Array of weights to be applied to the Morph Targets. + /// 0 + /// + public List Weights; + + public List TargetNames; + + public GLTFMesh() + { + } + + public GLTFMesh(GLTFMesh mesh, GLTFRoot gltfRoot) : base(mesh, gltfRoot) + { + if (mesh == null) return; + + if (mesh.Primitives != null) + { + Primitives = new List(mesh.Primitives.Count); + + foreach (MeshPrimitive primitive in mesh.Primitives) + { + Primitives.Add(new MeshPrimitive(primitive, gltfRoot)); + } + } + + if (mesh.Weights != null) + { + Weights = mesh.Weights.ToList(); + } + } + + + public static GLTFMesh Deserialize(GLTFRoot root, JsonReader reader) + { + var mesh = new GLTFMesh(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "primitives": + mesh.Primitives = reader.ReadList(() => MeshPrimitive.Deserialize(root, reader)); + break; + case "weights": + mesh.Weights = reader.ReadDoubleList(); + break; + default: + mesh.DefaultPropertyDeserializer(root, reader); + break; + } + } + + // GLTF does not support morph target names, serialize in extras for now + // https://github.com/KhronosGroup/glTF/issues/1036 + if (mesh.Extras != null) + { + var extrasReader = mesh.Extras.CreateReader(); + extrasReader.Read(); + + while (extrasReader.Read() && extrasReader.TokenType == JsonToken.PropertyName) + { + var extraProperty = extrasReader.Value.ToString(); + switch (extraProperty) + { + case "targetNames": + mesh.TargetNames = extrasReader.ReadStringList(); + break; + default: + extrasReader.Skip(); + break; + } + } + + extrasReader.Close(); + } + + return mesh; + } + + public override void Serialize(JsonWriter writer) + { + writer.WriteStartObject(); + + if (Primitives != null && Primitives.Count > 0) + { + writer.WritePropertyName("primitives"); + writer.WriteStartArray(); + foreach (var primitive in Primitives) + { + primitive.Serialize(writer); + } + writer.WriteEndArray(); + } + + if (Weights != null && Weights.Count > 0) + { + writer.WritePropertyName("weights"); + writer.WriteStartArray(); + foreach (var weight in Weights) + { + writer.WriteValue(weight); + } + writer.WriteEndArray(); + } + + // GLTF does not support morph target names, serialize in extras for now + // https://github.com/KhronosGroup/glTF/issues/1036 + if (TargetNames != null && TargetNames.Count > 0) + { + writer.WritePropertyName("extras"); + writer.WriteStartObject(); + writer.WritePropertyName("targetNames"); + writer.WriteStartArray(); + foreach (var targetName in TargetNames) + { + writer.WriteValue(targetName); + } + writer.WriteEndArray(); + writer.WriteEndObject(); + } + + base.Serialize(writer); + + writer.WriteEndObject(); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs.meta new file mode 100644 index 000000000..d0c08a9ea --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ad352271728bac40af6a9287b2d0d78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs new file mode 100644 index 000000000..1fac6321d --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs @@ -0,0 +1,256 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GLTF.Schema.KHR_lights_punctual; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace GLTF.Schema +{ + public class GLTFProperty + { + public static IReadOnlyList RegisteredExtensions + { + get + { + lock (_extensionRegistry) + { + return _extensionRegistry.Keys.ToList(); + } + } + } + + private static Dictionary _extensionRegistry = new Dictionary() + { + { ExtTextureTransformExtensionFactory.EXTENSION_NAME, new ExtTextureTransformExtensionFactory() }, + { KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME, new KHR_materials_pbrSpecularGlossinessExtensionFactory() }, + { KHR_MaterialsUnlitExtensionFactory.EXTENSION_NAME, new KHR_MaterialsUnlitExtensionFactory() }, + { KHR_lights_punctualExtensionFactory.EXTENSION_NAME, new KHR_lights_punctualExtensionFactory() }, + { KHR_materials_emissive_strength_Factory.EXTENSION_NAME, new KHR_materials_emissive_strength_Factory() }, + { KHR_materials_transmission_Factory.EXTENSION_NAME, new KHR_materials_transmission_Factory() }, + { KHR_materials_volume_Factory.EXTENSION_NAME, new KHR_materials_volume_Factory() }, + { KHR_materials_ior_Factory.EXTENSION_NAME, new KHR_materials_ior_Factory() }, + { KHR_materials_iridescence_Factory.EXTENSION_NAME, new KHR_materials_iridescence_Factory() }, + { KHR_materials_specular_Factory.EXTENSION_NAME, new KHR_materials_specular_Factory() }, + { KHR_materials_clearcoat_Factory.EXTENSION_NAME, new KHR_materials_clearcoat_Factory() }, + { MSFT_LODExtensionFactory.EXTENSION_NAME, new MSFT_LODExtensionFactory() }, + { KHR_draco_mesh_compression_Factory.EXTENSION_NAME, new KHR_draco_mesh_compression_Factory() }, + { KHR_texture_basisu_Factory.EXTENSION_NAME, new KHR_texture_basisu_Factory() }, + { EXT_meshopt_compression_Factory.EXTENSION_NAME, new EXT_meshopt_compression_Factory() } + }; + + private static DefaultExtensionFactory _defaultExtensionFactory = new DefaultExtensionFactory(); + + public static bool IsExtensionRegistered(string extensionName) + { + lock (_extensionRegistry) + { + return _extensionRegistry.ContainsKey(extensionName); + } + } + + public static void RegisterExtension(ExtensionFactory extensionFactory) + { + lock (_extensionRegistry) + { + _extensionRegistry[extensionFactory.ExtensionName] = extensionFactory; + } + } + + public static ExtensionFactory TryGetExtension(string extensionName) + { + lock (_extensionRegistry) + { + ExtensionFactory result; + if (_extensionRegistry.TryGetValue(extensionName, out result)) + { + return result; + } + return null; + } + } + + public static IExtension CreateEmptyExtension(string extensionName) + { + return TryGetExtension(extensionName)?.Deserialize(null, new JProperty(extensionName, new JObject())); + } + + public static bool TryRegisterExtension(ExtensionFactory extensionFactory) + { + lock (_extensionRegistry) + { + if (_extensionRegistry.ContainsKey(extensionFactory.ExtensionName)) + { + return false; + } + _extensionRegistry.Add(extensionFactory.ExtensionName, extensionFactory); + return true; + } + } + + public Dictionary Extensions; + public JToken Extras; + + public GLTFProperty() + { + } + + public GLTFProperty(GLTFProperty property, GLTFRoot gltfRoot = null) + { + if (property == null) return; + + if (property.Extensions != null) + { + Extensions = new Dictionary(property.Extensions.Count); + foreach (KeyValuePair extensionKeyValuePair in property.Extensions) + { + Extensions.Add(extensionKeyValuePair.Key, extensionKeyValuePair.Value.Clone(gltfRoot)); + } + } + + if (property.Extras != null) + { + Extras = property.Extras.DeepClone(); + } + } + + public void DefaultPropertyDeserializer(GLTFRoot root, JsonReader reader) + { + switch (reader.Value.ToString()) + { + case "extensions": + Extensions = DeserializeExtensions(root, reader); + break; + case "extras": + // advance to property value + reader.Read(); + if (reader.TokenType != JsonToken.StartObject) + throw new Exception(string.Format("extras must be an object at: {0}", reader.Path)); + Extras = JToken.ReadFrom(reader); + break; + default: + SkipValue(reader); + break; + } + } + + public void AddExtension(string extname, IExtension extension) + { + if (Extensions == null) + { + Extensions = new Dictionary(); + } + if (Extensions.ContainsKey(extname)) + { + throw new Exception($"Extension {extname} already exist on GLTFProperty"); + } + Extensions.Add(extname, extension); + } + + private void SkipValue(JsonReader reader) + { + if (!reader.Read()) + { + throw new Exception("No value found."); + } + + if (reader.TokenType == JsonToken.StartObject) + { + SkipObject(reader); + } + else if (reader.TokenType == JsonToken.StartArray) + { + SkipArray(reader); + } + } + + private void SkipObject(JsonReader reader) + { + while (reader.Read() && reader.TokenType != JsonToken.EndObject) + { + if (reader.TokenType == JsonToken.StartArray) + { + SkipArray(reader); + } + else if (reader.TokenType == JsonToken.StartObject) + { + SkipObject(reader); + } + } + } + + private void SkipArray(JsonReader reader) + { + while (reader.Read() && reader.TokenType != JsonToken.EndArray) + { + if (reader.TokenType == JsonToken.StartArray) + { + SkipArray(reader); + } + else if (reader.TokenType == JsonToken.StartObject) + { + SkipObject(reader); + } + } + } + + internal static Dictionary DeserializeExtensions(GLTFRoot root, JsonReader reader) + { + if (reader.Read() && reader.TokenType != JsonToken.StartObject) + { + throw new GLTFParseException("GLTF extensions must be an object"); + } + + JObject extensions = (JObject)JToken.ReadFrom(reader); + var extensionsCollection = new Dictionary(); + + foreach(JToken child in extensions.Children()) + { + if (child.Type != JTokenType.Property) + { + throw new GLTFParseException("Children token of extensions should be properties"); + } + + JProperty childAsJProperty = (JProperty) child; + string extensionName = childAsJProperty.Name; + ExtensionFactory extensionFactory; + + lock (_extensionRegistry) + { + if (_extensionRegistry.TryGetValue(extensionName, out extensionFactory)) + { + extensionsCollection.Add(extensionName, extensionFactory.Deserialize(root, childAsJProperty)); + } + else + { + extensionsCollection.Add(extensionName, _defaultExtensionFactory.Deserialize(root, childAsJProperty)); + } + } + + } + + return extensionsCollection; + } + + public virtual void Serialize(JsonWriter writer) + { + if (Extensions != null && Extensions.Count > 0) + { + writer.WritePropertyName("extensions"); + writer.WriteStartObject(); + foreach (var extension in Extensions) + { + JToken extensionToken = extension.Value.Serialize(); + extensionToken.WriteTo(writer); + } + writer.WriteEndObject(); + } + + if(Extras != null) + { + writer.WritePropertyName("extras"); + Extras.WriteTo(writer); + } + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs.meta new file mode 100644 index 000000000..7832fa780 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFProperty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5209123bd4cc0c341b4acc610846c177 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFRoot.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFRoot.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs index 53028add2..073aa6e8e 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/GLTFRoot.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using GLTF.Extensions; +using GLTF.Schema.KHR_lights_punctual; using Newtonsoft.Json; namespace GLTF.Schema @@ -98,6 +99,8 @@ public class GLTFRoot : GLTFProperty /// public List Textures; + public List Lights; + public GLTFRoot() { } @@ -240,6 +243,16 @@ public GLTFRoot(GLTFRoot gltfRoot) : base(gltfRoot) Textures.Add(new GLTFTexture(texture, this)); } } + + + if (gltfRoot.Lights != null) + { + Lights = new List(gltfRoot.Lights.Count); + foreach (GLTFLight light in gltfRoot.Lights) + { + Lights.Add(new GLTFLight(light, this)); + } + } } /// @@ -258,7 +271,7 @@ public GLTFScene GetDefaultScene() return Scene.Value; } - if (Scenes.Count > 0) + if (Scenes?.Count > 0) { return Scenes[0]; } @@ -333,6 +346,9 @@ public static GLTFRoot Deserialize(TextReader textReader) case "textures": root.Textures = jsonReader.ReadList(() => GLTFTexture.Deserialize(root, jsonReader)); break; + //case "lights": + // root.Lights = jsonReader.ReadList(() => GLTFLight.Deserialize(root, jsonReader)); + // break; default: root.DefaultPropertyDeserializer(root, jsonReader); break; @@ -356,6 +372,9 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteStartObject(); + jsonWriter.WritePropertyName("asset"); + Asset.Serialize(jsonWriter); + if (ExtensionsUsed != null && ExtensionsUsed.Count > 0) { jsonWriter.WritePropertyName("extensionsUsed"); @@ -378,6 +397,23 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteEndArray(); } + if (Scene != null) + { + jsonWriter.WritePropertyName("scene"); + Scene.Serialize(jsonWriter); + } + + if (Scenes != null && Scenes.Count > 0) + { + jsonWriter.WritePropertyName("scenes"); + jsonWriter.WriteStartArray(); + foreach (var scene in Scenes) + { + scene.Serialize(jsonWriter); + } + jsonWriter.WriteEndArray(); + } + if (Accessors != null && Accessors.Count > 0) { jsonWriter.WritePropertyName("accessors"); @@ -400,9 +436,6 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteEndArray(); } - jsonWriter.WritePropertyName("asset"); - Asset.Serialize(jsonWriter); - if (Buffers != null && Buffers.Count > 0) { jsonWriter.WritePropertyName("buffers"); @@ -475,6 +508,12 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteStartArray(); foreach (var node in Nodes) { + if (node.Light != null) + { + var khrLightPunctual = new KHR_LightsPunctualNodeExtension(node.Light.Id, this); + node.AddExtension(KHR_lights_punctualExtensionFactory.EXTENSION_NAME, khrLightPunctual); + } + node.Serialize(jsonWriter); } jsonWriter.WriteEndArray(); @@ -491,23 +530,6 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteEndArray(); } - if (Scene != null) - { - jsonWriter.WritePropertyName("scene"); - Scene.Serialize(jsonWriter); - } - - if (Scenes != null && Scenes.Count > 0) - { - jsonWriter.WritePropertyName("scenes"); - jsonWriter.WriteStartArray(); - foreach (var scene in Scenes) - { - scene.Serialize(jsonWriter); - } - jsonWriter.WriteEndArray(); - } - if (Skins != null && Skins.Count > 0) { jsonWriter.WritePropertyName("skins"); @@ -530,6 +552,12 @@ public void Serialize(TextWriter textWriter, bool isGLB = false) jsonWriter.WriteEndArray(); } + if (Lights != null) + { + var ext = new KHR_LightsPunctualRootExtension(Lights); + this.AddExtension(KHR_LightsPunctualRootExtension.EXTENSION_NAME, ext); + } + base.Serialize(jsonWriter); jsonWriter.WriteEndObject(); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs.meta new file mode 100644 index 000000000..e6142cdea --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFRoot.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edc6a3756446b834caf021ac90cab9b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFScene.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFScene.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFScene.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFScene.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFScene.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFScene.cs.meta new file mode 100644 index 000000000..0a43bddb2 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f337f9fa42d223d478aafeaedfd8fb68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/GLTFTexture.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTFTexture.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/GLTFTexture.cs rename to Runtime/Plugins/GLTFSerialization/Schema/GLTFTexture.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTFTexture.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTFTexture.cs.meta new file mode 100644 index 000000000..c23d1bb61 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTFTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c65a34c3cbf08664d83fbde6d15da516 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs new file mode 100644 index 000000000..67cb1fb19 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs @@ -0,0 +1,102 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Extensions; +using GLTF.Math; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + /// + /// A node in the node hierarchy. + /// When the node contains `skin`, all `mesh.primitives` must contain `JOINT` + /// and `WEIGHT` attributes. A node can have either a `matrix` or any combination + /// of `translation`/`rotation`/`scale` (TRS) properties. + /// TRS properties are converted to matrices and postmultiplied in + /// the `T * R * S` order to compose the transformation matrix; + /// first the scale is applied to the vertices, then the rotation, and then + /// the translation. If none are provided, the transform is the Identity. + /// When a node is targeted for animation + /// (referenced by an animation.channel.target), only TRS properties may be present; + /// `matrix` will not be present. + /// + public class GLTFDirectionalLight : GLTFLight + { + + public GLTFDirectionalLight() + { + } + + public GLTFDirectionalLight(GLTFDirectionalLight node, GLTFRoot gltfRoot) : base(node, gltfRoot) + { + if (node == null) return; + } + + public new static GLTFDirectionalLight Deserialize(GLTFRoot root, JsonReader reader) + { + var node = new GLTFDirectionalLight(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "type": + node.type = reader.ReadAsString(); + break; + case "color": + node.color = reader.ReadAsRGBAColor(); + break; + case "range": + node.range = (float)reader.ReadAsDouble(); + break; + case "intensity": + node.intensity = (float)reader.ReadAsDouble(); + break; + case "name": + node.name = reader.ReadAsString(); + break; + } + } + + return node; + } + + public override void Serialize(JsonWriter writer) + { + //writer.WriteStartObject(); + // + //writer.WritePropertyName("type"); + //writer.WriteValue(type); + // + //if (range > 0) + //{ + // writer.WritePropertyName("range"); + // writer.WriteValue(range); + //} + // + //if (intensity != 1.0f) + //{ + // writer.WritePropertyName("intensity"); + // writer.WriteValue(intensity); + //} + //if (!string.IsNullOrEmpty(name)) + //{ + // writer.WritePropertyName("name"); + // writer.WriteValue(name); + //} + // + //writer.WritePropertyName("color"); + //writer.WriteStartArray(); + //writer.WriteValue(color.R); + //writer.WriteValue(color.G); + //writer.WriteValue(color.B); + //writer.WriteValue(color.A); + //writer.WriteEndArray(); + // + base.Serialize(writer); + // + //writer.WriteEndObject(); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs.meta new file mode 100644 index 000000000..c94245e12 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_DirectionalLight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7ba89d77222428478d2712c6c970732 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs new file mode 100644 index 000000000..96cdd8f2f --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs @@ -0,0 +1,98 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Extensions; +using GLTF.Math; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + public class GLTFLight : GLTFChildOfRootProperty + { + public string name; + public Color color; + public string type; + public float intensity; + public float range; + + public GLTFLight() + { + } + + public GLTFLight(GLTFLight light, GLTFRoot gltfRoot) : base(light, gltfRoot) + { + if (light == null) return; + + color = light.color; + type = light.type; + name = ""; + intensity = 1.0f; + } + + public static GLTFLight Deserialize(GLTFRoot root, JsonReader reader) + { + var node = new GLTFLight(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "type": + node.type = reader.ReadAsString(); + break; + case "color": + node.color = reader.ReadAsRGBAColor(); + break; + case "range": + node.range = (float)reader.ReadAsDouble(); + break; + case "intensity": + node.intensity = (float)reader.ReadAsDouble(); + break; + case "name": + node.name = reader.ReadAsString(); + break; + } + } + + return node; + } + + public override void Serialize(JsonWriter writer) + { + writer.WriteStartObject(); + + writer.WritePropertyName("type"); + writer.WriteValue(type); + + if (range > 0) + { + writer.WritePropertyName("range"); + writer.WriteValue(range); + } + + if (intensity != 1.0f) + { + writer.WritePropertyName("intensity"); + writer.WriteValue(intensity); + } + if (!string.IsNullOrEmpty(name)) + { + writer.WritePropertyName("name"); + writer.WriteValue(name); + } + + writer.WritePropertyName("color"); + writer.WriteStartArray(); + writer.WriteValue(color.R); + writer.WriteValue(color.G); + writer.WriteValue(color.B); + writer.WriteEndArray(); + + base.Serialize(writer); + + writer.WriteEndObject(); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs.meta new file mode 100644 index 000000000..c9282d6ff --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_Light.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56f461ee5cb371843b46aae5b9e0b7a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs new file mode 100644 index 000000000..beb708d74 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Extensions; +using GLTF.Math; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + public class GLTFPointLight : GLTFLight + { + + public GLTFPointLight() + { + } + + public GLTFPointLight(GLTFPointLight node, GLTFRoot gltfRoot) : base(node, gltfRoot) + { + if (node == null) return; + } + + public new static GLTFPointLight Deserialize(GLTFRoot root, JsonReader reader) + { + var node = new GLTFPointLight(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "type": + node.type = reader.ReadAsString(); + break; + case "color": + node.color = reader.ReadAsRGBAColor(); + break; + case "range": + node.range = (float)reader.ReadAsDouble(); + break; + case "intensity": + node.intensity = (float)reader.ReadAsDouble(); + break; + case "name": + node.name = reader.ReadAsString(); + break; + } + } + + return node; + } + + public override void Serialize(JsonWriter writer) + { + base.Serialize(writer); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs.meta new file mode 100644 index 000000000..634edbee2 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_PointLight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 802c7ccb6de792f47bd97fcbbb57b036 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs new file mode 100644 index 000000000..6aa758fbb --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Extensions; +using GLTF.Math; +using GLTF.Schema.KHR_lights_punctual; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + public class GLTFSpotLight : GLTFLight + { + public float innerConeAngle = 0; + public float outerConeAngle = (float)(System.Math.PI / 4.0); + + public GLTFSpotLight() + { + } + + public GLTFSpotLight(GLTFSpotLight node, GLTFRoot gltfRoot) : base(node, gltfRoot) + { + if (node == null) return; + + innerConeAngle = node.innerConeAngle; + outerConeAngle = node.outerConeAngle; + } + + public new static GLTFSpotLight Deserialize(GLTFRoot root, JsonReader reader) + { + var node = new GLTFSpotLight(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "type": + node.type = reader.ReadAsString(); + break; + case "color": + node.color = reader.ReadAsRGBAColor(); + break; + case "range": + node.range = (float)reader.ReadAsDouble(); + break; + case "intensity": + node.intensity = (float)reader.ReadAsDouble(); + break; + case "name": + node.name = reader.ReadAsString(); + break; + case "spot": + var spot = Spot.Deserialize(reader); + node.innerConeAngle = (float) spot.InnerConeAngle; + node.outerConeAngle = (float) spot.OuterConeAngle; + break; + } + } + + return node; + } + + public override void Serialize(JsonWriter writer) + { + writer.WriteStartObject(); + + writer.WritePropertyName("type"); + writer.WriteValue(type); + + if (range > 0) + { + writer.WritePropertyName("range"); + writer.WriteValue(range); + } + + if (intensity != 1.0f) + { + writer.WritePropertyName("intensity"); + writer.WriteValue(intensity); + } + if (!string.IsNullOrEmpty(name)) + { + writer.WritePropertyName("name"); + writer.WriteValue(name); + } + + writer.WritePropertyName("spot"); + writer.WriteStartObject(); + if(innerConeAngle != 0) + { + writer.WritePropertyName("innerConeAngle"); + writer.WriteValue(innerConeAngle); + } + // if (outerConeAngle != PI / 4) + { + writer.WritePropertyName("outerConeAngle"); + writer.WriteValue(outerConeAngle); + } + writer.WriteEndObject(); + + // //write raw json + // writer.WriteRaw(",\"spot\":{\"innerConeAngle\":" + innerConeAngle.ToString(System.Globalization.CultureInfo.InvariantCulture)); + // writer.WriteRaw(",\"outerConeAngle\":" + outerConeAngle.ToString(System.Globalization.CultureInfo.InvariantCulture)); + // writer.WriteRaw("}"); + + writer.WritePropertyName("color"); + writer.WriteStartArray(); + writer.WriteValue(color.R); + writer.WriteValue(color.G); + writer.WriteValue(color.B); + //writer.WriteValue(color.A); + writer.WriteEndArray(); + + //base.Serialize(writer); + + writer.WriteEndObject(); + } + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs.meta new file mode 100644 index 000000000..c36eded7e --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/GLTF_SpotLight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1174c79e1671fb943990d2b52eab704a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/IExtension.cs b/Runtime/Plugins/GLTFSerialization/Schema/IExtension.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/IExtension.cs rename to Runtime/Plugins/GLTFSerialization/Schema/IExtension.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/IExtension.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/IExtension.cs.meta new file mode 100644 index 000000000..26a0958fb --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/IExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75612d2ea4aa44c4ab737749e6395401 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/MaterialCommonConstant.cs b/Runtime/Plugins/GLTFSerialization/Schema/MaterialCommonConstant.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/MaterialCommonConstant.cs rename to Runtime/Plugins/GLTFSerialization/Schema/MaterialCommonConstant.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MaterialCommonConstant.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/MaterialCommonConstant.cs.meta new file mode 100644 index 000000000..7f2fe48e1 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MaterialCommonConstant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0c9f9ed6cc5d864ab86f662ca671226 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs b/Runtime/Plugins/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs rename to Runtime/Plugins/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs.meta new file mode 100644 index 000000000..a257c9003 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MaterialNormalTextureInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc1cb3319141e8d4abc855bea912734f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs b/Runtime/Plugins/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs rename to Runtime/Plugins/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs.meta new file mode 100644 index 000000000..aa5da5558 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MaterialOcclusionTextureInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 407f0eb80f575c54bbd18b139e6cb511 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs b/Runtime/Plugins/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs rename to Runtime/Plugins/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs.meta new file mode 100644 index 000000000..536fd0dea --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MaterialPBRMetallicRoughness.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3154ff5377a58a145b6250c4b0f7d27f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs b/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs new file mode 100644 index 000000000..fe90ab6e4 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs @@ -0,0 +1,270 @@ +using System.Collections.Generic; +using GLTF.Extensions; +using Newtonsoft.Json; + +namespace GLTF.Schema +{ + /// + /// Geometry to be rendered with the given material. + /// + public class MeshPrimitive : GLTFProperty + { + /// + /// A dictionary object, where each key corresponds to mesh attribute semantic + /// and each value is the index of the accessor containing attribute's data. + /// + public Dictionary Attributes = new Dictionary(); + + /// + /// The index of the accessor that contains mesh indices. + /// When this is not defined, the primitives should be rendered without indices + /// using `drawArrays()`. When defined, the accessor must contain indices: + /// the `bufferView` referenced by the accessor must have a `target` equal + /// to 34963 (ELEMENT_ARRAY_BUFFER); a `byteStride` that is tightly packed, + /// i.e., 0 or the byte size of `componentType` in bytes; + /// `componentType` must be 5121 (UNSIGNED_BYTE), 5123 (UNSIGNED_SHORT) + /// or 5125 (UNSIGNED_INT), the latter is only allowed + /// when `OES_element_index_uint` extension is used; `type` must be `\"SCALAR\"`. + /// + public AccessorId Indices; + + /// + /// The index of the material to apply to this primitive when rendering. + /// + public MaterialId Material; + + /// + /// The type of primitives to render. All valid values correspond to WebGL enums. + /// + public DrawMode Mode = DrawMode.Triangles; + + /// + /// An array of Morph Targets, each Morph Target is a dictionary mapping + /// attributes (only "POSITION" and "NORMAL" supported) to their deviations + /// in the Morph Target (index of the accessor containing the attribute + /// displacements' data). + /// + /// TODO: Make dictionary key enums? + public List> Targets; + + public MeshPrimitive() + { + } + + public MeshPrimitive(MeshPrimitive meshPrimitive, GLTFRoot gltfRoot) : base(meshPrimitive) + { + if (meshPrimitive == null) return; + + if (meshPrimitive.Attributes != null) + { + Attributes = new Dictionary(meshPrimitive.Attributes.Count); + foreach (KeyValuePair attributeKeyValuePair in meshPrimitive.Attributes) + { + Attributes[attributeKeyValuePair.Key] = new AccessorId(attributeKeyValuePair.Value, gltfRoot); + } + } + + if (meshPrimitive.Indices != null) + { + Indices = new AccessorId(meshPrimitive.Indices, gltfRoot); + } + + if (meshPrimitive.Material != null) + { + Material = new MaterialId(meshPrimitive.Material, gltfRoot); + } + + Mode = meshPrimitive.Mode; + + if (meshPrimitive.Targets != null) + { + Targets = new List>(meshPrimitive.Targets.Count); + foreach (Dictionary targetToCopy in meshPrimitive.Targets) + { + Dictionary target = new Dictionary(targetToCopy.Count); + foreach (KeyValuePair targetKeyValuePair in targetToCopy) + { + target[targetKeyValuePair.Key] = new AccessorId(targetKeyValuePair.Value, gltfRoot); + } + Targets.Add(target); + } + } + } + + public static int[] GenerateTriangles(int vertCount) + { + var arr = new int[vertCount]; + for (var i = 0; i < vertCount; i+=3) + { + arr[i] = i + 2; + arr[i + 1] = i + 1; + arr[i + 2] = i; + } + + return arr; + } + + public static MeshPrimitive Deserialize(GLTFRoot root, JsonReader reader) + { + var primitive = new MeshPrimitive(); + + while (reader.Read() && reader.TokenType == JsonToken.PropertyName) + { + var curProp = reader.Value.ToString(); + + switch (curProp) + { + case "attributes": + primitive.Attributes = reader.ReadAsDictionary(() => new AccessorId + { + Id = reader.ReadAsInt32().Value, + Root = root + }); + break; + case "indices": + primitive.Indices = AccessorId.Deserialize(root, reader); + break; + case "material": + primitive.Material = MaterialId.Deserialize(root, reader); + break; + case "mode": + primitive.Mode = (DrawMode)reader.ReadAsInt32().Value; + break; + case "targets": + primitive.Targets = reader.ReadList(() => + { + return reader.ReadAsDictionary(() => new AccessorId + { + Id = reader.ReadAsInt32().Value, + Root = root + }, + skipStartObjectRead: true); + }); + break; + default: + primitive.DefaultPropertyDeserializer(root, reader); + break; + } + } + + return primitive; + } + + public override void Serialize(JsonWriter writer) + { + writer.WriteStartObject(); + + writer.WritePropertyName("attributes"); + writer.WriteStartObject(); + foreach (var attribute in Attributes) + { + writer.WritePropertyName(attribute.Key); + writer.WriteValue(attribute.Value.Id); + } + writer.WriteEndObject(); + + if (Indices != null) + { + writer.WritePropertyName("indices"); + writer.WriteValue(Indices.Id); + } + + if (Material != null) + { + writer.WritePropertyName("material"); + writer.WriteValue(Material.Id); + } + + if (Mode != DrawMode.Triangles) + { + writer.WritePropertyName("mode"); + writer.WriteValue((int)Mode); + } + + if (Targets != null && Targets.Count > 0) + { + writer.WritePropertyName("targets"); + writer.WriteStartArray(); + foreach (var target in Targets) + { + writer.WriteStartObject(); + + foreach (var attribute in target) + { + writer.WritePropertyName(attribute.Key); + writer.WriteValue(attribute.Value.Id); + } + + writer.WriteEndObject(); + } + writer.WriteEndArray(); + } + + base.Serialize(writer); + + writer.WriteEndObject(); + } + } + + public static class SemanticProperties + { + public const string POSITION = "POSITION"; + public const string NORMAL = "NORMAL"; + public const string JOINT = "JOINT"; + public const string WEIGHT = "WEIGHT"; + public const string TANGENT = "TANGENT"; + public const string INDICES = "INDICES"; + + public const string TEXCOORD_0 = "TEXCOORD_0"; + public const string TEXCOORD_1 = "TEXCOORD_1"; + public const string TEXCOORD_2 = "TEXCOORD_2"; + public const string TEXCOORD_3 = "TEXCOORD_3"; + public static readonly string[] TexCoord = { TEXCOORD_0, TEXCOORD_1, TEXCOORD_2, TEXCOORD_3 }; + + public const string COLOR_0 = "COLOR_0"; + public static readonly string[] Color = { COLOR_0 }; + + public const string WEIGHTS_0 = "WEIGHTS_0"; + public const string WEIGHTS_1 = "WEIGHTS_1"; + public static readonly string[] Weight = { WEIGHTS_0, WEIGHTS_1 }; + + public const string JOINTS_0 = "JOINTS_0"; + public const string JOINTS_1 = "JOINTS_1"; + public static readonly string[] Joint = { JOINTS_0, JOINTS_1 }; + + /// + /// Parse out the index of a given semantic property. + /// + /// Semantic property to parse + /// Parsed index to assign + /// + public static bool ParsePropertyIndex(string property, out int index) + { + index = -1; + var parts = property.Split('_'); + + if (parts.Length != 2) + { + return false; + } + + if (!int.TryParse(parts[1], out index)) + { + return false; + } + + return true; + } + } + + public enum DrawMode + { + Points = 0, + Lines = 1, + LineLoop = 2, + LineStrip = 3, + Triangles = 4, + TriangleStrip = 5, + TriangleFan = 6 + } +} diff --git a/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs.meta new file mode 100644 index 000000000..cbba55687 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/MeshPrimitive.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22062a4fc434af14f80728e7e3b39069 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/Node.cs b/Runtime/Plugins/GLTFSerialization/Schema/Node.cs similarity index 98% rename from GLTFSerialization/GLTFSerialization/Schema/Node.cs rename to Runtime/Plugins/GLTFSerialization/Schema/Node.cs index 2f4deb851..71938efde 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/Node.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Node.cs @@ -73,6 +73,8 @@ public class Node : GLTFChildOfRootProperty /// public List Weights; + public LightId Light; + public Node() { } @@ -122,6 +124,11 @@ public Node(Node node, GLTFRoot gltfRoot) : base(node, gltfRoot) { Weights = node.Weights.ToList(); } + + if (node.Light != null) + { + Light = node.Light; + } } public static Node Deserialize(GLTFRoot root, JsonReader reader) @@ -207,7 +214,7 @@ public override void Serialize(JsonWriter writer) writer.WriteValue(Skin.Id); } - if (!Matrix.Equals(Matrix4x4.Identity)) + if (Matrix != Matrix4x4.Identity) { writer.WritePropertyName("matrix"); writer.WriteStartArray(); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Node.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/Node.cs.meta new file mode 100644 index 000000000..07b9d35cf --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/Node.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91eca59d86fe98c4097a0a5a1dcaba28 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/Sampler.cs b/Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs similarity index 94% rename from GLTFSerialization/GLTFSerialization/Schema/Sampler.cs rename to Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs index eca9fc526..cccf53c9b 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/Sampler.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs @@ -77,13 +77,13 @@ public override void Serialize(JsonWriter writer) { writer.WriteStartObject(); - if (MagFilter != MagFilterMode.Linear) + if (MagFilter != MagFilterMode.Linear && MagFilter != MagFilterMode.None) { writer.WritePropertyName("magFilter"); writer.WriteValue((int)MagFilter); } - if (MinFilter != MinFilterMode.NearestMipmapLinear) + if (MinFilter != MinFilterMode.NearestMipmapLinear && MinFilter != MinFilterMode.None) { writer.WritePropertyName("minFilter"); writer.WriteValue((int)MinFilter); diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs.meta new file mode 100644 index 000000000..39db29a13 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/Sampler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5360cd93389152e4399f96bef4f7d5b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/Skin.cs b/Runtime/Plugins/GLTFSerialization/Schema/Skin.cs similarity index 98% rename from GLTFSerialization/GLTFSerialization/Schema/Skin.cs rename to Runtime/Plugins/GLTFSerialization/Schema/Skin.cs index 48c9416c9..34974b3ca 100644 --- a/GLTFSerialization/GLTFSerialization/Schema/Skin.cs +++ b/Runtime/Plugins/GLTFSerialization/Schema/Skin.cs @@ -30,6 +30,7 @@ public class Skin : GLTFChildOfRootProperty public Skin() { + Joints = new List(); } public Skin(Skin skin, GLTFRoot gltfRoot) : base(skin, gltfRoot) diff --git a/Runtime/Plugins/GLTFSerialization/Schema/Skin.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/Skin.cs.meta new file mode 100644 index 000000000..9b1b906c8 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/Skin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5de7dba147dab814ea285ea8f0e29f2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Schema/TextureInfo.cs b/Runtime/Plugins/GLTFSerialization/Schema/TextureInfo.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Schema/TextureInfo.cs rename to Runtime/Plugins/GLTFSerialization/Schema/TextureInfo.cs diff --git a/Runtime/Plugins/GLTFSerialization/Schema/TextureInfo.cs.meta b/Runtime/Plugins/GLTFSerialization/Schema/TextureInfo.cs.meta new file mode 100644 index 000000000..e61e07c24 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Schema/TextureInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d647d19b3479834f9763fb7f53f0b99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/GLTFSerialization/Utilities.meta b/Runtime/Plugins/GLTFSerialization/Utilities.meta new file mode 100644 index 000000000..43dc78991 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ae0e6abadf8de44db06715064bd7938 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Utilities/JsonReaderExtensions.cs b/Runtime/Plugins/GLTFSerialization/Utilities/JsonReaderExtensions.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Utilities/JsonReaderExtensions.cs rename to Runtime/Plugins/GLTFSerialization/Utilities/JsonReaderExtensions.cs diff --git a/Runtime/Plugins/GLTFSerialization/Utilities/JsonReaderExtensions.cs.meta b/Runtime/Plugins/GLTFSerialization/Utilities/JsonReaderExtensions.cs.meta new file mode 100644 index 000000000..4ac9a77a4 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Utilities/JsonReaderExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4ec7ce58a8f26d44bfd5cde279a594f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Utilities/StreamExtensions.cs b/Runtime/Plugins/GLTFSerialization/Utilities/StreamExtensions.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Utilities/StreamExtensions.cs rename to Runtime/Plugins/GLTFSerialization/Utilities/StreamExtensions.cs diff --git a/Runtime/Plugins/GLTFSerialization/Utilities/StreamExtensions.cs.meta b/Runtime/Plugins/GLTFSerialization/Utilities/StreamExtensions.cs.meta new file mode 100644 index 000000000..fc01c8232 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Utilities/StreamExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1cef435e4865e234ca0f479df0676ba3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GLTFSerialization/GLTFSerialization/Utilities/SubStream.cs b/Runtime/Plugins/GLTFSerialization/Utilities/SubStream.cs similarity index 100% rename from GLTFSerialization/GLTFSerialization/Utilities/SubStream.cs rename to Runtime/Plugins/GLTFSerialization/Utilities/SubStream.cs diff --git a/Runtime/Plugins/GLTFSerialization/Utilities/SubStream.cs.meta b/Runtime/Plugins/GLTFSerialization/Utilities/SubStream.cs.meta new file mode 100644 index 000000000..a6d823cc1 --- /dev/null +++ b/Runtime/Plugins/GLTFSerialization/Utilities/SubStream.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 655fa8eee650c064aa123b5754cb5df0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Optimization.meta b/Runtime/Plugins/Optimization.meta new file mode 100644 index 000000000..601826fb1 --- /dev/null +++ b/Runtime/Plugins/Optimization.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eccbe01f8cce2cb498ea33635d5ac1ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Optimization/AssemblyInfo.cs b/Runtime/Plugins/Optimization/AssemblyInfo.cs new file mode 100644 index 000000000..e9701f4d9 --- /dev/null +++ b/Runtime/Plugins/Optimization/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("UnityGLTFScripts")] diff --git a/Runtime/Plugins/Optimization/AssemblyInfo.cs.meta b/Runtime/Plugins/Optimization/AssemblyInfo.cs.meta new file mode 100644 index 000000000..4fc48c793 --- /dev/null +++ b/Runtime/Plugins/Optimization/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f6e7dc425f2f1a45a0148a80a14220d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs b/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs new file mode 100644 index 000000000..a064d8297 --- /dev/null +++ b/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs @@ -0,0 +1,293 @@ +using System; +using System.IO; +using UnityEngine; + +namespace UnityGLTF +{ + // It seems that BinaryWriter creates a ton of garbage: the implementation allocates a byte[4] for every float write. (and for double as well) + // foreach (var v in arr) + // { + // _bufferWriter.Write(v); // this will allocate 36B per call + // } + // For large accessors, this adds up to hundreds of megabytes of garbage. + // This class adds special implementations that skip BitConverterLE and instead convert with the same logic, + // differentiating between LittleEndian and BigEndian. + + // Following https://github.com/mono/mono/blob/4a5ffcabd58d6439e60126f46e0063bcf30e7a47/mcs/class/referencesource/mscorlib/system/io/binarywriter.cs#L381 + // Here's the 4-byte allocation we're seeing: https://github.com/mono/mono/blob/4a5ffcabd58d6439e60126f46e0063bcf30e7a47/mcs/class/System.ServiceModel/Mono.Security.Protocol.Ntlm/BitConverterLE.cs#L127 + // Another discussion of this problem: https://forum.unity.com/threads/binarywriter-floats.1108478/ + // The implementations here pull BitConverter.IsLittleEndian out of the loop and directly write converted bytes into the BinaryWriter. + internal class BinaryWriterWithLessAllocations : BinaryWriter + { + private static readonly byte[] _buffer = new byte[16]; // temp space for writing primitives to. + + public BinaryWriterWithLessAllocations(Stream binStream) : base(binStream) { } + + public unsafe void Write(float[] value) + { + if (BitConverter.IsLittleEndian) + { + foreach (var v in value) + { + uint tmpValue = *(uint *)&v; + _buffer[0] = (byte) (tmpValue); + _buffer[1] = (byte) (tmpValue >> 8); + _buffer[2] = (byte) (tmpValue >> 16); + _buffer[3] = (byte) (tmpValue >> 24); + Write(_buffer, 0, 4); + } + } + else + { + foreach (var v in value) + { + uint tmpValue = *(uint *)&v; + _buffer[0] = (byte) (tmpValue >> 24); + _buffer[1] = (byte) (tmpValue >> 16); + _buffer[2] = (byte) (tmpValue >> 8); + _buffer[3] = (byte) (tmpValue); + Write(_buffer, 0, 4); + } + } + } + + public override unsafe void Write(float value) + { + if (BitConverter.IsLittleEndian) + { + uint tmpValue = *(uint *)&value; + _buffer[0] = (byte) (tmpValue); + _buffer[1] = (byte) (tmpValue >> 8); + _buffer[2] = (byte) (tmpValue >> 16); + _buffer[3] = (byte) (tmpValue >> 24); + Write(_buffer, 0, 4); + } + else + { + uint tmpValue = *(uint *)&value; + _buffer[0] = (byte) (tmpValue >> 24); + _buffer[1] = (byte) (tmpValue >> 16); + _buffer[2] = (byte) (tmpValue >> 8); + _buffer[3] = (byte) (tmpValue); + Write(_buffer, 0, 4); + } + } + + public unsafe void Write(Vector4[] arr) + { + if (BitConverter.IsLittleEndian) + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + float vw = v0.w; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue); + _buffer[ 1] = (byte) (tmpValue >> 8); + _buffer[ 2] = (byte) (tmpValue >> 16); + _buffer[ 3] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue); + _buffer[ 5] = (byte) (tmpValue >> 8); + _buffer[ 6] = (byte) (tmpValue >> 16); + _buffer[ 7] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue); + _buffer[ 9] = (byte) (tmpValue >> 8); + _buffer[10] = (byte) (tmpValue >> 16); + _buffer[11] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vw; + _buffer[12] = (byte) (tmpValue); + _buffer[13] = (byte) (tmpValue >> 8); + _buffer[14] = (byte) (tmpValue >> 16); + _buffer[15] = (byte) (tmpValue >> 24); + + + Write(_buffer, 0, 16); + } + } + else + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + float vw = v0.w; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue >> 24); + _buffer[ 1] = (byte) (tmpValue >> 16); + _buffer[ 2] = (byte) (tmpValue >> 8); + _buffer[ 3] = (byte) (tmpValue); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue >> 24); + _buffer[ 5] = (byte) (tmpValue >> 16); + _buffer[ 6] = (byte) (tmpValue >> 8); + _buffer[ 7] = (byte) (tmpValue); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue >> 24); + _buffer[ 9] = (byte) (tmpValue >> 16); + _buffer[10] = (byte) (tmpValue >> 8); + _buffer[11] = (byte) (tmpValue); + + tmpValue = *(uint *)&vw; + _buffer[12] = (byte) (tmpValue >> 24); + _buffer[13] = (byte) (tmpValue >> 16); + _buffer[14] = (byte) (tmpValue >> 8); + _buffer[15] = (byte) (tmpValue); + + + Write(_buffer, 0, 16); + } + } + } + + public unsafe void Write(Vector3[] arr) + { + if (BitConverter.IsLittleEndian) + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue); + _buffer[ 1] = (byte) (tmpValue >> 8); + _buffer[ 2] = (byte) (tmpValue >> 16); + _buffer[ 3] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue); + _buffer[ 5] = (byte) (tmpValue >> 8); + _buffer[ 6] = (byte) (tmpValue >> 16); + _buffer[ 7] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue); + _buffer[ 9] = (byte) (tmpValue >> 8); + _buffer[10] = (byte) (tmpValue >> 16); + _buffer[11] = (byte) (tmpValue >> 24); + + + Write(_buffer, 0, 12); + } + } + else + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue >> 24); + _buffer[ 1] = (byte) (tmpValue >> 16); + _buffer[ 2] = (byte) (tmpValue >> 8); + _buffer[ 3] = (byte) (tmpValue); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue >> 24); + _buffer[ 5] = (byte) (tmpValue >> 16); + _buffer[ 6] = (byte) (tmpValue >> 8); + _buffer[ 7] = (byte) (tmpValue); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue >> 24); + _buffer[ 9] = (byte) (tmpValue >> 16); + _buffer[10] = (byte) (tmpValue >> 8); + _buffer[11] = (byte) (tmpValue); + + Write(_buffer, 0, 12); + } + } + } + + public unsafe void Write(Quaternion[] arr) + { + if (BitConverter.IsLittleEndian) + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + float vw = v0.w; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue); + _buffer[ 1] = (byte) (tmpValue >> 8); + _buffer[ 2] = (byte) (tmpValue >> 16); + _buffer[ 3] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue); + _buffer[ 5] = (byte) (tmpValue >> 8); + _buffer[ 6] = (byte) (tmpValue >> 16); + _buffer[ 7] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue); + _buffer[ 9] = (byte) (tmpValue >> 8); + _buffer[10] = (byte) (tmpValue >> 16); + _buffer[11] = (byte) (tmpValue >> 24); + + tmpValue = *(uint *)&vw; + _buffer[12] = (byte) (tmpValue); + _buffer[13] = (byte) (tmpValue >> 8); + _buffer[14] = (byte) (tmpValue >> 16); + _buffer[15] = (byte) (tmpValue >> 24); + + Write(_buffer, 0, 16); + } + } + else + { + foreach (var v0 in arr) + { + float vx = v0.x; + float vy = v0.y; + float vz = v0.z; + float vw = v0.w; + + uint tmpValue = *(uint *)&vx; + _buffer[ 0] = (byte) (tmpValue >> 24); + _buffer[ 1] = (byte) (tmpValue >> 16); + _buffer[ 2] = (byte) (tmpValue >> 8); + _buffer[ 3] = (byte) (tmpValue); + + tmpValue = *(uint *)&vy; + _buffer[ 4] = (byte) (tmpValue >> 24); + _buffer[ 5] = (byte) (tmpValue >> 16); + _buffer[ 6] = (byte) (tmpValue >> 8); + _buffer[ 7] = (byte) (tmpValue); + + tmpValue = *(uint *)&vz; + _buffer[ 8] = (byte) (tmpValue >> 24); + _buffer[ 9] = (byte) (tmpValue >> 16); + _buffer[10] = (byte) (tmpValue >> 8); + _buffer[11] = (byte) (tmpValue); + + tmpValue = *(uint *)&vw; + _buffer[12] = (byte) (tmpValue >> 24); + _buffer[13] = (byte) (tmpValue >> 16); + _buffer[14] = (byte) (tmpValue >> 8); + _buffer[15] = (byte) (tmpValue); + + Write(_buffer, 0, 16); + } + } + } + } +} diff --git a/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs.meta b/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs.meta new file mode 100644 index 000000000..69a75c163 --- /dev/null +++ b/Runtime/Plugins/Optimization/BinaryWriterWithLessAllocations.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb8524c06641ea041996dd207ba02996 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef b/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef new file mode 100644 index 000000000..ba894c587 --- /dev/null +++ b/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef @@ -0,0 +1,14 @@ +{ + "name": "UnityGLTF.Helpers", + "rootNamespace": "", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": true, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef.meta b/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef.meta new file mode 100644 index 000000000..63c59d769 --- /dev/null +++ b/Runtime/Plugins/Optimization/UnityGLTF.Helpers.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d58a4b8a1f92baa4f8100941944470f7 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs.meta b/Runtime/Prefabs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs.meta rename to Runtime/Prefabs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs/GLTF.prefab b/Runtime/Prefabs/GLTF.prefab similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs/GLTF.prefab rename to Runtime/Prefabs/GLTF.prefab diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs/GLTF.prefab.meta b/Runtime/Prefabs/GLTF.prefab.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Prefabs/GLTF.prefab.meta rename to Runtime/Prefabs/GLTF.prefab.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources.meta b/Runtime/Resources.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources.meta rename to Runtime/Resources.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/MetalGlossChannelSwap.shader b/Runtime/Resources/MetalGlossChannelSwap.shader similarity index 77% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/MetalGlossChannelSwap.shader rename to Runtime/Resources/MetalGlossChannelSwap.shader index b0393d81a..f0b86daea 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/MetalGlossChannelSwap.shader +++ b/Runtime/Resources/MetalGlossChannelSwap.shader @@ -3,6 +3,7 @@ Properties { _MainTex ("Texture", 2D) = "white" {} + _SmoothnessMultiplier ("Smoothness Multiplier", float) = 1 } SubShader { @@ -38,6 +39,7 @@ } sampler2D _MainTex; + float _SmoothnessMultiplier; float4 frag (v2f i) : SV_Target { @@ -53,7 +55,14 @@ // Conversion Summary // Unity R channel goes into B channel // Unity A channel goes into G channel, then inverted - return float4(1, 1 - col.a, col.r, 1); + float4 result = float4(0, 1 - (col.a * _SmoothnessMultiplier), col.r, 1); + #ifdef UNITY_COLORSPACE_GAMMA + #else + // hack for linear color space, need to figure out + // right way to sample textures. + result.xyz = GammaToLinearSpace(result.xyz); + #endif + return result; } ENDCG } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/MetalGlossChannelSwap.shader.meta b/Runtime/Resources/MetalGlossChannelSwap.shader.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/MetalGlossChannelSwap.shader.meta rename to Runtime/Resources/MetalGlossChannelSwap.shader.meta diff --git a/Runtime/Resources/NormalChannel.shader b/Runtime/Resources/NormalChannel.shader new file mode 100644 index 000000000..957f2908b --- /dev/null +++ b/Runtime/Resources/NormalChannel.shader @@ -0,0 +1,66 @@ +Shader "Hidden/NormalChannel" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + } + SubShader + { + // No culling or depth + Cull Off ZWrite Off ZTest Always + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + sampler2D _MainTex; + + // fixed4 frag (v2f i) : SV_Target + // { + // float4 col = tex2D(_MainTex, i.uv); + // float4 res = float4(col.a, col.g, 1, 1); + // //res = float4(0.5,0.5,1,1); + // //res.xyz = GammaToLinearSpaceExact(res.xyz); + // // If a texture is marked as a normal map + // // the values are stored in the A and G channel. + // return res; + // } + + float4 frag (v2f i) : SV_Target + { + float4 col = tex2D(_MainTex, i.uv); + // If a texture is marked as a normal map + // the values are stored in the A and G channel. + float3 unpacked = UnpackNormal(col); + float4 result = float4(unpacked * 0.5f + 0.5f, 1); + return result; + } + + ENDCG + } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/NormalChannel.shader.meta b/Runtime/Resources/NormalChannel.shader.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/NormalChannel.shader.meta rename to Runtime/Resources/NormalChannel.shader.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/README.txt b/Runtime/Resources/README.txt similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/README.txt rename to Runtime/Resources/README.txt diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/README.txt.meta b/Runtime/Resources/README.txt.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/README.txt.meta rename to Runtime/Resources/README.txt.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).mat b/Runtime/Resources/Standard (Specular setup).mat similarity index 89% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).mat rename to Runtime/Resources/Standard (Specular setup).mat index 55d15e180..7ea174662 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).mat +++ b/Runtime/Resources/Standard (Specular setup).mat @@ -36,11 +36,11 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _EmissionMap: - m_Texture: {fileID: 2800000, guid: 928be703400f4eb48af2f94d55bf3f74, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MainTex: - m_Texture: {fileID: 2800000, guid: 928be703400f4eb48af2f94d55bf3f74, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MetallicGlossMap: @@ -56,7 +56,7 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 928be703400f4eb48af2f94d55bf3f74, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: @@ -80,3 +80,4 @@ Material: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).mat.meta b/Runtime/Resources/Standard (Specular setup).mat.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).mat.meta rename to Runtime/Resources/Standard (Specular setup).mat.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).shadervariants b/Runtime/Resources/Standard (Specular setup).shadervariants similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).shadervariants rename to Runtime/Resources/Standard (Specular setup).shadervariants diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).shadervariants.meta b/Runtime/Resources/Standard (Specular setup).shadervariants.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/Standard (Specular setup).shadervariants.meta rename to Runtime/Resources/Standard (Specular setup).shadervariants.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/TestScenePrefab.prefab b/Runtime/Resources/TestScenePrefab.prefab similarity index 88% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/TestScenePrefab.prefab rename to Runtime/Resources/TestScenePrefab.prefab index bb1fab040..914e89b4f 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/TestScenePrefab.prefab +++ b/Runtime/Resources/TestScenePrefab.prefab @@ -101,7 +101,6 @@ GameObject: m_Component: - component: {fileID: 4225727463385260} - component: {fileID: 45916004938725370} - - component: {fileID: 114771327033317188} m_Layer: 0 m_Name: TestScenePrefab m_TagString: Untagged @@ -134,18 +133,6 @@ Skybox: m_GameObject: {fileID: 1034827199715104} m_Enabled: 1 m_CustomSkybox: {fileID: 2100000, guid: b4101f3a635a9cd4187c92cf274d68ce, type: 2} ---- !u!114 &114771327033317188 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1034827199715104} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a18b6c11896ab5f449d61ef13337f3db, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &1191679913451980 GameObject: m_ObjectHideFlags: 0 @@ -185,12 +172,14 @@ Light: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1191679913451980} m_Enabled: 1 - serializedVersion: 8 + serializedVersion: 10 m_Type: 1 + m_Shape: 0 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 m_CookieSize: 10 m_Shadows: m_Type: 0 @@ -200,6 +189,24 @@ Light: m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} @@ -207,12 +214,16 @@ Light: m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 + m_RenderingLayerMask: 1 m_Lightmapping: 4 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1478240168550960 @@ -225,7 +236,6 @@ GameObject: m_Component: - component: {fileID: 4095513381898270} - component: {fileID: 20961921853974160} - - component: {fileID: 114819471581835328} - component: {fileID: 3629069418977858857} m_Layer: 0 m_Name: Camera @@ -261,9 +271,10 @@ Camera: m_ClearFlags: 1 m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 @@ -291,27 +302,6 @@ Camera: m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 ---- !u!114 &114819471581835328 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1478240168550960} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 1.3 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -80 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 500 --- !u!45 &3629069418977858857 Skybox: m_ObjectHideFlags: 0 diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/TestScenePrefab.prefab.meta b/Runtime/Resources/TestScenePrefab.prefab.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Resources/TestScenePrefab.prefab.meta rename to Runtime/Resources/TestScenePrefab.prefab.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts.meta b/Runtime/Scripts.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts.meta rename to Runtime/Scripts.meta diff --git a/Runtime/Scripts/AssemblyInfo.cs b/Runtime/Scripts/AssemblyInfo.cs new file mode 100644 index 000000000..f0d60476a --- /dev/null +++ b/Runtime/Scripts/AssemblyInfo.cs @@ -0,0 +1,5 @@ + + +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("UnityGLTFEditor")] diff --git a/Runtime/Scripts/AssemblyInfo.cs.meta b/Runtime/Scripts/AssemblyInfo.cs.meta new file mode 100644 index 000000000..907fe5258 --- /dev/null +++ b/Runtime/Scripts/AssemblyInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3c0a4d01957543f782ec22407ee6848e +timeCreated: 1678903758 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async.meta b/Runtime/Scripts/Async.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async.meta rename to Runtime/Scripts/Async.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/AsyncCoroutineHelper.cs b/Runtime/Scripts/Async/AsyncCoroutineHelper.cs similarity index 96% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/AsyncCoroutineHelper.cs rename to Runtime/Scripts/Async/AsyncCoroutineHelper.cs index 70a22a3be..30230d19a 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/AsyncCoroutineHelper.cs +++ b/Runtime/Scripts/Async/AsyncCoroutineHelper.cs @@ -16,7 +16,7 @@ public async Task YieldOnTimeout() { if (Time.realtimeSinceStartup > _timeout) { - await Task.Delay(1); + await Task.Yield(); _timeout = Time.realtimeSinceStartup + BudgetPerFrameInSeconds; } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/AsyncCoroutineHelper.cs.meta b/Runtime/Scripts/Async/AsyncCoroutineHelper.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/AsyncCoroutineHelper.cs.meta rename to Runtime/Scripts/Async/AsyncCoroutineHelper.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/TaskExtensions.cs b/Runtime/Scripts/Async/TaskExtensions.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/TaskExtensions.cs rename to Runtime/Scripts/Async/TaskExtensions.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/TaskExtensions.cs.meta b/Runtime/Scripts/Async/TaskExtensions.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Async/TaskExtensions.cs.meta rename to Runtime/Scripts/Async/TaskExtensions.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache.meta b/Runtime/Scripts/Cache.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache.meta rename to Runtime/Scripts/Cache.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AnimationCacheData.cs b/Runtime/Scripts/Cache/AnimationCacheData.cs similarity index 87% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AnimationCacheData.cs rename to Runtime/Scripts/Cache/AnimationCacheData.cs index 03a7b2a11..57672aa59 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AnimationCacheData.cs +++ b/Runtime/Scripts/Cache/AnimationCacheData.cs @@ -1,4 +1,6 @@ -using GLTF; +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER + +using GLTF; using GLTF.Schema; namespace UnityGLTF.Cache @@ -21,3 +23,5 @@ public AnimationCacheData(int samplerCount) } } } + +#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AnimationCacheData.cs.meta b/Runtime/Scripts/Cache/AnimationCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AnimationCacheData.cs.meta rename to Runtime/Scripts/Cache/AnimationCacheData.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AssetCache.cs b/Runtime/Scripts/Cache/AssetCache.cs similarity index 81% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AssetCache.cs rename to Runtime/Scripts/Cache/AssetCache.cs index 446d3d9e1..d00884bf2 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AssetCache.cs +++ b/Runtime/Scripts/Cache/AssetCache.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using UnityEngine; using System.IO; using GLTF.Schema; @@ -20,12 +19,18 @@ public class AssetCache : IDisposable /// Loaded raw texture data /// public Texture2D[] ImageCache { get; private set; } - + + /// + /// Invalid/missing textures. These are cached since we can still remap them after import, but don't + /// want to apply them to materials. + /// + public Texture2D[] InvalidImageCache { get; private set; } + /// /// Textures to be used for assets. Textures from image cache with samplers applied /// public TextureCacheData[] TextureCache { get; private set; } - + /// /// Cache for materials to be applied to the meshes /// @@ -41,10 +46,12 @@ public class AssetCache : IDisposable /// public MeshCacheData[] MeshCache { get; private set; } +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER /// /// Cache of loaded animations /// public AnimationCacheData[] AnimationCache { get; private set; } +#endif /// /// Cache of loaded node objects @@ -58,6 +65,7 @@ public class AssetCache : IDisposable public AssetCache(GLTFRoot root) { ImageCache = new Texture2D[root.Images?.Count ?? 0]; + InvalidImageCache = new Texture2D[ImageCache.Length]; ImageStreamCache = new Stream[ImageCache.Length]; TextureCache = new TextureCacheData[root.Textures?.Count ?? 0]; MaterialCache = new MaterialCacheData[root.Materials?.Count ?? 0]; @@ -65,13 +73,24 @@ public AssetCache(GLTFRoot root) MeshCache = new MeshCacheData[root.Meshes?.Count ?? 0]; NodeCache = new GameObject[root.Nodes?.Count ?? 0]; +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER AnimationCache = new AnimationCacheData[root.Animations?.Count ?? 0]; +#endif } public void Dispose() { + if (ImageStreamCache != null) + { + foreach (var stream in ImageStreamCache) + { + stream?.Dispose(); + } + + ImageStreamCache = null; + } + ImageCache = null; - ImageStreamCache = null; TextureCache = null; MaterialCache = null; if (BufferCache != null) @@ -96,7 +115,9 @@ public void Dispose() } MeshCache = null; +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER AnimationCache = null; +#endif } } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AssetCache.cs.meta b/Runtime/Scripts/Cache/AssetCache.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/AssetCache.cs.meta rename to Runtime/Scripts/Cache/AssetCache.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/BufferCacheData.cs b/Runtime/Scripts/Cache/BufferCacheData.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/BufferCacheData.cs rename to Runtime/Scripts/Cache/BufferCacheData.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/BufferCacheData.cs.meta b/Runtime/Scripts/Cache/BufferCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/BufferCacheData.cs.meta rename to Runtime/Scripts/Cache/BufferCacheData.cs.meta diff --git a/Runtime/Scripts/Cache/ExportCache.cs b/Runtime/Scripts/Cache/ExportCache.cs new file mode 100644 index 000000000..48ae1321c --- /dev/null +++ b/Runtime/Scripts/Cache/ExportCache.cs @@ -0,0 +1,110 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace UnityGLTF.Cache +{ + internal static class ExportCache + { + public const int DefaultCacheSize = 1024; +#if UNITY_EDITOR + [InitializeOnLoadMethod] + private static void Init() + { + // Keep some files in cache that were last exported + EditorApplication.quitting += () => Shrink(DefaultCacheSize); + } + + public static void OpenCacheDirectory() + { + var dir = CacheDirectory; + if(Directory.Exists(dir)) EditorUtility.RevealInFinder(dir); + else Debug.LogWarning($"Cache directory does not exist: {dir}"); + } +#endif + + public static string CacheDirectory + { + get + { + var tempDirectory = Path.Combine(Application.temporaryCachePath, "UnityGLTF"); + return tempDirectory; + } + } + + public static bool TryGetBytes(Object asset, string seed, out byte[] bytes) + { +#if UNITY_EDITOR + var path = CacheDirectory + "/" + GlobalObjectId.GetGlobalObjectIdSlow(asset) + seed; + if (File.Exists(path)) + { + bytes = File.ReadAllBytes(path); + return true; + } +#endif + + bytes = null; + return false; + } + + public static void AddBytes(Object asset, string seed, byte[] bytes) + { +#if UNITY_EDITOR + var dir = CacheDirectory; + Directory.CreateDirectory(dir); + var path = dir + "/" + GlobalObjectId.GetGlobalObjectIdSlow(asset) + seed; + // Debug.Log($"Writing {bytes.Length} bytes to cache: {path}"); + File.WriteAllBytes(path, bytes); +#endif + } + + public static void Clear() + { + var dir = CacheDirectory; + if (Directory.Exists(dir)) + { + Directory.Delete(dir, true); + } + } + + public static void Shrink(int maxCacheSizeInMB) + { + if (maxCacheSizeInMB <= 0) + { + Clear(); + return; + } + + var maxCacheSize = maxCacheSizeInMB * 1024 * 1024; + var files = new List(); + var currentSize = CalculateCacheSize(files); + if(currentSize <= maxCacheSizeInMB) + return; + var filesSortedByLastAccess = files.OrderBy(f => f.LastAccessTimeUtc).ToList(); + foreach (var file in filesSortedByLastAccess) + { + file.Delete(); + currentSize -= (int)file.Length; + if (currentSize <= maxCacheSize) + break; + } + } + + public static long CalculateCacheSize(ICollection files = null) + { + var dir = CacheDirectory; + if (!Directory.Exists(dir)) return 0; + var filePaths = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories); + long size = 0; + foreach (var file in filePaths) + { + var info = new FileInfo(file); + files?.Add(info); + size += (long) info.Length; + } + return size; + } + } +} diff --git a/Runtime/Scripts/Cache/ExportCache.cs.meta b/Runtime/Scripts/Cache/ExportCache.cs.meta new file mode 100644 index 000000000..7df8d91ee --- /dev/null +++ b/Runtime/Scripts/Cache/ExportCache.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b67adc482fa84697bf30de7918e7d995 +timeCreated: 1672777985 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MaterialCacheData.cs b/Runtime/Scripts/Cache/MaterialCacheData.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MaterialCacheData.cs rename to Runtime/Scripts/Cache/MaterialCacheData.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MaterialCacheData.cs.meta b/Runtime/Scripts/Cache/MaterialCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MaterialCacheData.cs.meta rename to Runtime/Scripts/Cache/MaterialCacheData.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MeshCacheData.cs b/Runtime/Scripts/Cache/MeshCacheData.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MeshCacheData.cs rename to Runtime/Scripts/Cache/MeshCacheData.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MeshCacheData.cs.meta b/Runtime/Scripts/Cache/MeshCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/MeshCacheData.cs.meta rename to Runtime/Scripts/Cache/MeshCacheData.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/RefCountedCacheData.cs b/Runtime/Scripts/Cache/RefCountedCacheData.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/RefCountedCacheData.cs rename to Runtime/Scripts/Cache/RefCountedCacheData.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/RefCountedCacheData.cs.meta b/Runtime/Scripts/Cache/RefCountedCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/RefCountedCacheData.cs.meta rename to Runtime/Scripts/Cache/RefCountedCacheData.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/TextureCacheData.cs b/Runtime/Scripts/Cache/TextureCacheData.cs similarity index 82% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/TextureCacheData.cs rename to Runtime/Scripts/Cache/TextureCacheData.cs index 5f4bc1bdd..a2dfef4a5 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/TextureCacheData.cs +++ b/Runtime/Scripts/Cache/TextureCacheData.cs @@ -7,8 +7,10 @@ namespace UnityGLTF.Cache public class TextureCacheData : IDisposable { public GLTFTexture TextureDefinition; - public Texture Texture; - + public Texture2D Texture; + public bool IsLinear; + public bool IsNormal; + /// /// Unloads the textures in this cache. /// diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/TextureCacheData.cs.meta b/Runtime/Scripts/Cache/TextureCacheData.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Cache/TextureCacheData.cs.meta rename to Runtime/Scripts/Cache/TextureCacheData.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Exceptions.cs b/Runtime/Scripts/Exceptions.cs similarity index 81% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Exceptions.cs rename to Runtime/Scripts/Exceptions.cs index 7740b40a9..6ce50fa04 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Exceptions.cs +++ b/Runtime/Scripts/Exceptions.cs @@ -1,15 +1,16 @@ using System; -using UnityEngine.Networking; -namespace UnityGLTF +namespace UnityGLTF { [Serializable()] - public class WebRequestException : Exception + public class WebRequestException : Exception { public WebRequestException() : base() { } public WebRequestException(string message) : base(message) { } public WebRequestException(string message, Exception inner) : base(message, inner) { } - public WebRequestException(UnityWebRequest www) : base(string.Format("Error: {0} when requesting: {1}", www.responseCode, www.url)) { } +#if UNITY_WEBREQUEST + public WebRequestException(UnityEngine.Networking.UnityWebRequest www) : base(string.Format("Error: {0} when requesting: {1}", www.responseCode, www.url)) { } +#endif #if !WINDOWS_UWP protected WebRequestException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Exceptions.cs.meta b/Runtime/Scripts/Exceptions.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Exceptions.cs.meta rename to Runtime/Scripts/Exceptions.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions.meta b/Runtime/Scripts/Extensions.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions.meta rename to Runtime/Scripts/Extensions.meta diff --git a/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs b/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs new file mode 100644 index 000000000..0568c4c50 --- /dev/null +++ b/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using Unity.Profiling; +using UnityEngine; + +namespace UnityGLTF.Extensions +{ + public class KHR_animation_pointer_Resolver + { + private readonly List registered = new List(); + private static readonly ProfilerMarker animationPointerResolverMarker = new ProfilerMarker("Resolve Animation Pointer"); + + public void Add(KHR_animation_pointer anim) + { + registered.Add(anim); + } + + // private struct MaterialMapping + // { + // public string propertyName; + // public string exportName; + // } + // + // private readonly Dictionary> mappings = new Dictionary>(); + // + // // TODO: should we use a static switch instead? + // public void RegisterMapping(Material mat, string propertyName, string exportedPropertyName) + // { + // if (!mappings.ContainsKey(mat)) + // { + // mappings.Add(mat, new List()); + // } + // mappings[mat].Add(new MaterialMapping() { propertyName = propertyName, exportName = exportedPropertyName }); + // } + + public void Resolve(GLTFSceneExporter exporter) + { + foreach (var reg in registered) + { + animationPointerResolverMarker.Begin(); + int id = exporter.GetIndex(reg.animatedObject); + switch (reg.animatedObject) + { + case Light light: + reg.path = "/extensions/KHR_lights_punctual/lights/" + id + "/" + reg.propertyBinding; + break; + case Camera camera: + if (reg.propertyBinding == "backgroundColor") + { + id = exporter.GetTransformIndex(camera.transform); + goto ResolveComponent; + } + reg.path = "/cameras/" + id + "/" + reg.propertyBinding; + break; + case SkinnedMeshRenderer smr: + if (smr && reg.propertyBinding == "weights") + { + reg.path = "/nodes/" + id + "/" + reg.propertyBinding; + break; + } + goto ResolveComponent; + case Component comp: + case GameObject g: + ResolveComponent: + reg.path = "/nodes/" + id + "/" + reg.propertyBinding; + var componentPath = reg.path; + + var anyOtherResolverWasAbleToResolve = false; + foreach (var res in exporter.pointerResolvers) + { + if (res.TryResolve(reg.animatedObject, ref componentPath)) + { + reg.path = componentPath; + anyOtherResolverWasAbleToResolve = true; + break; + } + } + if (exporter.pointerResolvers.Count > 0 && !anyOtherResolverWasAbleToResolve) + { + // we don't need to warn for regular transforms that are not RectTransforms, + // but we want to warn for everything else that may be animated. + if (!(reg.animatedObject is Transform && !(reg.animatedObject is RectTransform))) + Debug.LogWarning("Wasn't able to resolve animation pointer for " + reg.animatedObject + " at " + componentPath + ". You can attach custom resolvers to animate properties in extensions.", reg.animatedObject as Object); + } + else if (!anyOtherResolverWasAbleToResolve) + { + // we don't need to warn for regular transforms that are not RectTransforms, + // but we want to warn for everything else that may be animated. + if (!(reg.animatedObject is Transform && !(reg.animatedObject is RectTransform))) + Debug.LogWarning("Wasn't able to resolve animation pointer for " + reg.animatedObject + " at " + componentPath + ". You can attach custom resolvers to animate properties in extensions.", reg.animatedObject as Object); + } + break; + case Material mat: + reg.path = "/materials/" + id + "/" + reg.propertyBinding; + break; + } + animationPointerResolverMarker.End(); + } + } + } +} diff --git a/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs.meta b/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs.meta new file mode 100644 index 000000000..12f83991b --- /dev/null +++ b/Runtime/Scripts/Extensions/KHR_animation_pointer_Resolver.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 23086a9473b049b3ab8e64001d13a28b +timeCreated: 1648544951 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions/SchemaExtensions.cs b/Runtime/Scripts/Extensions/SchemaExtensions.cs similarity index 79% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions/SchemaExtensions.cs rename to Runtime/Scripts/Extensions/SchemaExtensions.cs index c0d10aa1e..8615c7f8d 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions/SchemaExtensions.cs +++ b/Runtime/Scripts/Extensions/SchemaExtensions.cs @@ -55,15 +55,18 @@ public static void GetUnityTRSProperties(this Node node, out Vector3 position, o } } + internal static readonly Quaternion InvertDirection = new Quaternion(0, -1, 0, 0); + /// /// Set a gltf node's converted translation, rotation, and scale from a unity transform /// /// gltf node to modify /// unity transform to convert - public static void SetUnityTransform(this Node node, Transform transform) + /// invert look direction (e.g. for lights and cameras) + public static void SetUnityTransform(this Node node, Transform transform, bool invertLookDirection) { node.Translation = transform.localPosition.ToGltfVector3Convert(); - node.Rotation = transform.localRotation.ToGltfQuaternionConvert(); + node.Rotation = (transform.localRotation * (invertLookDirection ? InvertDirection : Quaternion.identity)).ToGltfQuaternionConvert(); node.Scale = transform.localScale.ToGltfVector3Raw(); } @@ -322,12 +325,48 @@ public static void ToUnityVector4Raw(this GLTF.Math.Vector4[] inArr, Vector4[] o public static UnityEngine.Color ToUnityColorRaw(this GLTF.Math.Color color) { - return new UnityEngine.Color(color.R, color.G, color.B, color.A); + var c = new UnityEngine.Color(color.R, color.G, color.B, color.A).gamma; + return c; + } + + public static UnityEngine.Color ToUnityColorLinear(this GLTF.Math.Color color) + { + var c = new UnityEngine.Color(color.R, color.G, color.B, color.A); + return c; + } + + public static UnityEngine.Color ToUnityColorGamma(this GLTF.Math.Color color) + { + var c = new UnityEngine.Color(color.R, color.G, color.B, color.A).linear; + return c; } public static GLTF.Math.Color ToNumericsColorRaw(this UnityEngine.Color color) { - return new GLTF.Math.Color(color.r, color.g, color.b, color.a); + var c = color; + return new GLTF.Math.Color(c.r, c.g, c.b, c.a); + } + + public static GLTF.Math.Color ToNumericsColorLinear(this UnityEngine.Color color) + { + var lc = color.linear; + return new GLTF.Math.Color(lc.r, lc.g, lc.b, lc.a); + } + + public static GLTF.Math.Color ToNumericsColorGamma(this UnityEngine.Color color) + { + var lc = color.gamma; + return new GLTF.Math.Color(lc.r, lc.g, lc.b, lc.a); + } + + public static GLTF.Math.Color[] ToNumericsColorLinear(this UnityEngine.Color[] inColorArr) + { + GLTF.Math.Color[] outColorArr = new GLTF.Math.Color[inColorArr.Length]; + for (int i = 0; i < inColorArr.Length; ++i) + { + outColorArr[i] = inColorArr[i].ToNumericsColorLinear(); + } + return outColorArr; } public static UnityEngine.Color[] ToUnityColorRaw(this GLTF.Math.Color[] inColorArr) @@ -340,6 +379,16 @@ public static UnityEngine.Color[] ToUnityColorRaw(this GLTF.Math.Color[] inColor return outColorArr; } + public static UnityEngine.Color[] ToLinear(this UnityEngine.Color[] inColorArr) + { + UnityEngine.Color[] outColorArr = new UnityEngine.Color[inColorArr.Length]; + for (int i = 0; i < inColorArr.Length; ++i) + { + outColorArr[i] = inColorArr[i].linear; + } + return outColorArr; + } + public static void ToUnityColorRaw(this GLTF.Math.Color[] inArr, Color[] outArr, int offset = 0) { for (int i = 0; i < inArr.Length; i++) @@ -348,6 +397,14 @@ public static void ToUnityColorRaw(this GLTF.Math.Color[] inArr, Color[] outArr, } } + public static void ToUnityColorLinear(this GLTF.Math.Color[] inArr, Color[] outArr, int offset = 0) + { + for (int i = 0; i < inArr.Length; i++) + { + outArr[offset + i] = inArr[i].ToUnityColorLinear(); + } + } + public static int[] ToIntArrayRaw(this uint[] uintArr) { int[] intArr = new int[uintArr.Length]; @@ -425,12 +482,12 @@ public static void ConvertVector3CoordinateSpace(ref AttributeAccessor attribute public static UnityEngine.Vector3[] ConvertVector3CoordinateSpaceAndCopy(Vector3[] array, GLTF.Math.Vector3 coordinateSpaceCoordinateScale) { var returnArray = new UnityEngine.Vector3[array.Length]; + var coordinateScale = coordinateSpaceCoordinateScale.ToUnityVector3Raw(); for (int i = 0; i < array.Length; i++) { - returnArray[i].x = array[i].x * coordinateSpaceCoordinateScale.X; - returnArray[i].y = array[i].y * coordinateSpaceCoordinateScale.Y; - returnArray[i].z = array[i].z * coordinateSpaceCoordinateScale.Z; + returnArray[i] = array[i]; + returnArray[i].Scale(coordinateScale); } return returnArray; @@ -461,17 +518,37 @@ public static void ConvertVector4CoordinateSpace(ref AttributeAccessor attribute public static Vector4[] ConvertVector4CoordinateSpaceAndCopy(Vector4[] array, GLTF.Math.Vector4 coordinateSpaceCoordinateScale) { var returnArray = new Vector4[array.Length]; + var coordinateScale = coordinateSpaceCoordinateScale.ToUnityVector4Raw(); for (var i = 0; i < array.Length; i++) { - returnArray[i].x = array[i].x * coordinateSpaceCoordinateScale.X; - returnArray[i].y = array[i].y * coordinateSpaceCoordinateScale.Y; - returnArray[i].z = array[i].z * coordinateSpaceCoordinateScale.Z; - returnArray[i].w = array[i].w * coordinateSpaceCoordinateScale.W; + returnArray[i] = array[i]; + returnArray[i].Scale(coordinateScale); } return returnArray; } + + /// + /// Converts and copies based on the specified coordinate scale. Also verify the tangent.w component to be -1 or 1 + /// + /// The array to convert and copy + /// The specified coordinate space + /// The copied and converted coordinate space + public static Vector4[] ConvertTangentCoordinateSpaceAndCopy(Vector4[] array, GLTF.Math.Vector4 coordinateSpaceCoordinateScale) + { + var returnArray = new Vector4[array.Length]; + var coordinateScale = coordinateSpaceCoordinateScale.ToUnityVector4Raw(); + + for (var i = 0; i < array.Length; i++) + { + returnArray[i] = array[i]; + returnArray[i].w = Mathf.Sign(returnArray[i].w); + returnArray[i].Scale(coordinateScale); + } + + return returnArray; + } /// /// Rewinds the indicies into Unity coordinate space from glTF space @@ -519,5 +596,44 @@ public static Matrix4x4[] ToUnityMatrix4x4(this GLTF.Math.Matrix4x4[] inMatrixAr } return outMatrixArr; } + + public static Quaternion SwitchHandedness(this Quaternion input) + { + return new Quaternion(-input.x, input.y, input.z, -input.w); + } + + /* + public static Vector4 SwitchHandedness(this Vector4 input) + { + return new Vector4(-input.x, input.y, input.z, -input.w); + } + + public static Matrix4x4 SwitchHandedness(this Matrix4x4 matrix) + { + Vector3 position = matrix.GetColumn(3).SwitchHandedness(); + Quaternion rotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1)).SwitchHandedness(); + Vector3 scale = new Vector3(matrix.GetColumn(0).magnitude, matrix.GetColumn(1).magnitude, matrix.GetColumn(2).magnitude); + + float epsilon = 0.00001f; + + // Some issues can occurs with non uniform scales + if (Mathf.Abs(scale.x - scale.y) > epsilon || Mathf.Abs(scale.y - scale.z) > epsilon || Mathf.Abs(scale.x - scale.z) > epsilon) + { + Debug.LogWarning("A matrix with non uniform scale is being converted from left to right handed system. This code is not working correctly in this case"); + } + + // Handle negative scale component in matrix decomposition + if (Matrix4x4.Determinant(matrix) < 0) + { + Quaternion rot = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1)); + Matrix4x4 corr = Matrix4x4.TRS(matrix.GetColumn(3), rot, Vector3.one).inverse; + Matrix4x4 extractedScale = corr * matrix; + scale = new Vector3(extractedScale.m00, extractedScale.m11, extractedScale.m22); + } + + // convert transform values from left handed to right handed + return Matrix4x4.TRS(position, rotation, scale); + } + */ } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions/SchemaExtensions.cs.meta b/Runtime/Scripts/Extensions/SchemaExtensions.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Extensions/SchemaExtensions.cs.meta rename to Runtime/Scripts/Extensions/SchemaExtensions.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories.meta b/Runtime/Scripts/Factories.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories.meta rename to Runtime/Scripts/Factories.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories/ImporterFactory.cs b/Runtime/Scripts/Factories/ImporterFactory.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories/ImporterFactory.cs rename to Runtime/Scripts/Factories/ImporterFactory.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories/ImporterFactory.cs.meta b/Runtime/Scripts/Factories/ImporterFactory.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Factories/ImporterFactory.cs.meta rename to Runtime/Scripts/Factories/ImporterFactory.cs.meta diff --git a/Runtime/Scripts/GLTFComponent.cs b/Runtime/Scripts/GLTFComponent.cs new file mode 100644 index 000000000..9b54643be --- /dev/null +++ b/Runtime/Scripts/GLTFComponent.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Runtime.ExceptionServices; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Events; +using UnityGLTF.Loader; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + /// + /// Component to load a GLTF scene with + /// + public class GLTFComponent : MonoBehaviour + { + public string GLTFUri = null; + public bool Multithreaded = true; + public bool UseStream = false; + public bool AppendStreamingAssets = true; + public bool PlayAnimationOnLoad = true; + public ImporterFactory Factory = null; + public UnityAction onLoadComplete; + +#if UNITY_ANIMATION + public IEnumerable Animations { get; private set; } +#endif + + [SerializeField] + private bool loadOnStart = true; + + [SerializeField] private int RetryCount = 10; + [SerializeField] private float RetryTimeout = 2.0f; + private int numRetries = 0; + + + public int MaximumLod = 300; + public int Timeout = 8; + public GLTFSceneImporter.ColliderType Collider = GLTFSceneImporter.ColliderType.None; + public GameObject LastLoadedScene { get; private set; } = null; + + [SerializeField] + private Shader shaderOverride = null; + + [Header("Import Settings")] + public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; + public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; + public bool SwapUVs = false; + + private async void Start() + { + if (!loadOnStart) return; + + try + { + await Load(); + } +#if WINDOWS_UWP + catch (Exception) +#else + catch (HttpRequestException) +#endif + { + if (numRetries++ >= RetryCount) + throw; + + Debug.LogWarning("Load failed, retrying"); + await Task.Delay((int)(RetryTimeout * 1000)); + Start(); + } + } + + public async Task Load() + { + var importOptions = new ImportOptions + { + AsyncCoroutineHelper = gameObject.GetComponent() ?? gameObject.AddComponent(), + ImportNormals = ImportNormals, + ImportTangents = ImportTangents, + SwapUVs = SwapUVs + }; + + var settings = GLTFSettings.GetOrCreateSettings(); + importOptions.ImportContext = new GLTFImportContext(settings); + + GLTFSceneImporter sceneImporter = null; + try + { + if (!Factory) Factory = ScriptableObject.CreateInstance(); + + // UseStream is currently not supported... + string fullPath; + if (AppendStreamingAssets) + fullPath = Path.Combine(Application.streamingAssetsPath, GLTFUri.TrimStart(new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar })); + else + fullPath = GLTFUri; + + string dir = URIHelper.GetDirectoryName(fullPath); + importOptions.DataLoader = new UnityWebRequestLoader(dir); + sceneImporter = Factory.CreateSceneImporter( + Path.GetFileName(fullPath), + importOptions + ); + + sceneImporter.SceneParent = gameObject.transform; + sceneImporter.Collider = Collider; + sceneImporter.MaximumLod = MaximumLod; + sceneImporter.Timeout = Timeout; + sceneImporter.IsMultithreaded = Multithreaded; + sceneImporter.CustomShaderName = shaderOverride ? shaderOverride.name : null; + + // for logging progress + await sceneImporter.LoadSceneAsync( + onLoadComplete:LoadCompleteAction + // ,progress: new Progress( + // p => + // { + // Debug.Log("Progress: " + p); + // }) + ); + + // Override the shaders on all materials if a shader is provided + if (shaderOverride != null) + { + Renderer[] renderers = gameObject.GetComponentsInChildren(); + foreach (Renderer renderer in renderers) + { + renderer.sharedMaterial.shader = shaderOverride; + } + } + + LastLoadedScene = sceneImporter.LastLoadedScene; + +#if UNITY_ANIMATION + Animations = sceneImporter.LastLoadedScene.GetComponents(); + + if (PlayAnimationOnLoad && Animations.Any()) + { + Animations.First().Play(); + } +#endif + } + finally + { + if(importOptions.DataLoader != null) + { + sceneImporter?.Dispose(); + sceneImporter = null; + importOptions.DataLoader = null; + } + } + } + + private void LoadCompleteAction(GameObject obj, ExceptionDispatchInfo exceptionDispatchInfo) + { + onLoadComplete?.Invoke(); + } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFComponent.cs.meta b/Runtime/Scripts/GLTFComponent.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFComponent.cs.meta rename to Runtime/Scripts/GLTFComponent.cs.meta diff --git a/Runtime/Scripts/GLTFRecorderComponent.cs b/Runtime/Scripts/GLTFRecorderComponent.cs new file mode 100644 index 000000000..a96bd3426 --- /dev/null +++ b/Runtime/Scripts/GLTFRecorderComponent.cs @@ -0,0 +1,144 @@ +#if ENABLE_INPUT_SYSTEM && HAVE_INPUTSYSTEM +#define NEW_INPUT +#endif + +using System.Collections; +using System.Linq; +using UnityEngine; +using UnityEngine.Events; +using UnityGLTF.Plugins; +#if NEW_INPUT +using UnityEngine.InputSystem; +#endif +using UnityGLTF.Timeline; + +namespace UnityGLTF +{ + public class GLTFRecorderComponent : MonoBehaviour + { + public string outputFile = "Assets/Recordings/Recorded_.glb"; + public Transform exportRoot; + public bool recordBlendShapes = true; + public bool recordRootInWorldSpace = true; + public bool recordAnimationPointer = false; + +#if NEW_INPUT + public InputAction recordingKey = new InputAction(binding: "/F11"); +#else + public KeyCode recordingKey = KeyCode.F11; +#endif + + public bool IsRecording => recorder?.IsRecording ?? false; + protected GLTFRecorder recorder; + + public UnityEvent recordingStarted; + public UnityEvent recordingEnded; + + private double CurrentTime => +#if UNITY_2020_1_OR_NEWER + Time.timeAsDouble; +#else + Time.time; +#endif + + [ContextMenu("Start Recording")] + public virtual void StartRecording() + { + if (!isActiveAndEnabled) return; + + var settings = GLTFSettings.GetOrCreateSettings(); + var shouldRecordBlendShapes = recordBlendShapes; + if (settings.BlendShapeExportProperties == GLTFSettings.BlendShapeExportPropertyFlags.None && recordBlendShapes) + { + Debug.LogWarning("Attempting to record blend shapes but export is disabled in ProjectSettings/UnityGLTF. Set BlendShapeExportProperties to something other than \"None\" if you want to export them."); + shouldRecordBlendShapes = false; + } + + var shouldUseAnimationPointer = recordAnimationPointer; + var animationPointerIsEnabled = settings.ExportPlugins?.Any(x => x is AnimationPointerExport && x.Enabled) ?? false; + if (animationPointerIsEnabled && recordAnimationPointer) + { + Debug.LogWarning("Attempting to record KHR_animation_pointer but that is disabled in ProjectSettings/UnityGLTF. Please enable it."); + shouldUseAnimationPointer = false; + } + + recorder = new GLTFRecorder(exportRoot, shouldRecordBlendShapes, recordRootInWorldSpace, shouldUseAnimationPointer); + recorder.StartRecording(CurrentTime); + recordingStarted?.Invoke(); + + StartCoroutine(_UpdateRecording()); + } + + [ContextMenu("Stop Recording")] + public virtual void StopRecording() + { + var filename = outputFile.Replace("", System.DateTime.Now.ToString("yyyyMMdd-HHmmss")); + recorder.EndRecording(filename); + recordingEnded?.Invoke(filename); + } + + private void ToggleRecording() + { + if (!exportRoot || string.IsNullOrEmpty(outputFile)) + { + Debug.LogError($"[GLTFRecorderComponent] Can't record, please assign exportRoot and outputFile on {nameof(GLTFRecorderComponent)}", this); + return; + } + + if(IsRecording) + { + StopRecording(); + Debug.Log("Recording Stopped", this); + } + else { + StartRecording(); + Debug.Log("Recording Started", this); + } + } + +#if NEW_INPUT + private void Start() + { + recordingKey.performed += _ => ToggleRecording(); + } + + private void OnEnable() + { + recordingKey.Enable(); + } +#else + protected virtual void Update() + { + if(Input.GetKeyDown(recordingKey)) + ToggleRecording(); + } +#endif + + protected virtual void OnDisable() + { + if(IsRecording) + StopRecording(); +#if NEW_INPUT + recordingKey.Disable(); +#endif + } + + protected virtual void UpdateRecording() + { + if(CurrentTime > recorder.LastRecordedTime) + recorder.UpdateRecording(CurrentTime); + } + + private IEnumerator _UpdateRecording() + { + while (true) + { + yield return new WaitForEndOfFrame(); + if (!IsRecording) + yield break; + + UpdateRecording(); + } + } + } +} diff --git a/Runtime/Scripts/GLTFRecorderComponent.cs.meta b/Runtime/Scripts/GLTFRecorderComponent.cs.meta new file mode 100644 index 000000000..a9602fcdb --- /dev/null +++ b/Runtime/Scripts/GLTFRecorderComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e76d60ddbac22cd4ba183f725ba62c5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/GLTFSceneExporter.cs b/Runtime/Scripts/GLTFSceneExporter.cs new file mode 100644 index 000000000..92680aa84 --- /dev/null +++ b/Runtime/Scripts/GLTFSceneExporter.cs @@ -0,0 +1,1364 @@ +#if UNITY_EDITOR +#define ANIMATION_EXPORT_SUPPORTED +#endif + +#if ANIMATION_EXPORT_SUPPORTED && (UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER) +#define ANIMATION_SUPPORTED +#endif + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using GLTF.Schema; +using Unity.Profiling; +using UnityEngine; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + public class ExportContext + { + public bool TreatEmptyRootAsScene = false; + public bool MergeClipsWithMatchingNames = false; + public LayerMask ExportLayers = -1; + public ILogger logger; + internal readonly GLTFSettings settings; + + public ExportContext() : this(GLTFSettings.GetOrCreateSettings()) { } + + public ExportContext(GLTFSettings settings) + { + if (!settings) settings = GLTFSettings.GetOrCreateSettings(); + if (settings.UseMainCameraVisibility) + ExportLayers = Camera.main ? Camera.main.cullingMask : -1; + this.settings = settings; + } + + public GLTFSceneExporter.RetrieveTexturePathDelegate TexturePathRetriever = (texture) => texture.name; + + // TODO Should we make all the callbacks on ExportContext obsolete? + // Pro: We can remove them from the API + // Con: No direct way to "just add callbacks" right now, always needs a plugin. + // See GLTFSceneExporter for a case here we "just want callbacks" instead of a new class/context + public GLTFSceneExporter.AfterSceneExportDelegate AfterSceneExport; + public GLTFSceneExporter.BeforeSceneExportDelegate BeforeSceneExport; + public GLTFSceneExporter.AfterNodeExportDelegate AfterNodeExport; + public GLTFSceneExporter.BeforeMaterialExportDelegate BeforeMaterialExport; + public GLTFSceneExporter.AfterMaterialExportDelegate AfterMaterialExport; + public GLTFSceneExporter.BeforeTextureExportDelegate BeforeTextureExport; + public GLTFSceneExporter.AfterTextureExportDelegate AfterTextureExport; + public GLTFSceneExporter.AfterPrimitiveExportDelegate AfterPrimitiveExport; + + internal GLTFExportPluginContext GetExportContextCallbacks() => new ExportContextCallbacks(this); + +#pragma warning disable CS0618 // Type or member is obsolete + internal class ExportContextCallbacks : GLTFExportPluginContext + { + private readonly ExportContext _exportContext; + + internal ExportContextCallbacks(ExportContext context) + { + _exportContext = context; + } + + public override void BeforeSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) => _exportContext.BeforeSceneExport?.Invoke(exporter, gltfRoot); + public override void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) => _exportContext.AfterSceneExport?.Invoke(exporter, gltfRoot); + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) => _exportContext.AfterNodeExport?.Invoke(exporter, gltfRoot, transform, node); + + public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) + { + // static callback, run after options callback + // we're iterating here because we want to stop calling any once we hit one that can export this material. + if (_exportContext.BeforeMaterialExport != null) + { + var list = _exportContext.BeforeMaterialExport.GetInvocationList(); + foreach (var entry in list) + { + var cb = (GLTFSceneExporter.BeforeMaterialExportDelegate) entry; + if (cb != null && cb.Invoke(exporter, gltfRoot, material, materialNode)) + { + return true; + } + } + } + return false; + } + public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) => _exportContext.AfterMaterialExport?.Invoke(exporter, gltfRoot, material, materialNode); + public override void BeforeTextureExport(GLTFSceneExporter exporter, ref GLTFSceneExporter.UniqueTexture texture, string textureSlot) => _exportContext.BeforeTextureExport?.Invoke(exporter, ref texture, textureSlot); + public override void AfterTextureExport(GLTFSceneExporter exporter, GLTFSceneExporter.UniqueTexture texture, int index, GLTFTexture tex) => _exportContext.AfterTextureExport?.Invoke(exporter, texture, index, tex); + public override void AfterPrimitiveExport(GLTFSceneExporter exporter, Mesh mesh, MeshPrimitive primitive, int index) => _exportContext.AfterPrimitiveExport?.Invoke(exporter, mesh, primitive, index); + } +#pragma warning restore CS0618 // Type or member is obsolete + } + + [Obsolete("Use UnityGLTF.ExportContext instead. (UnityUpgradable) -> UnityGLTF.ExportContext")] + public class ExportOptions: ExportContext + { + public ExportOptions(): base() { } + public ExportOptions(GLTFSettings settings): base(settings) { } + } + + public partial class GLTFSceneExporter + { + // Available export callbacks. + // Callbacks can be either set statically (for exporters that register themselves) + // or added in the ExportOptions. + public delegate string RetrieveTexturePathDelegate(Texture texture); + public delegate void BeforeSceneExportDelegate(GLTFSceneExporter exporter, GLTFRoot gltfRoot); + public delegate void AfterSceneExportDelegate(GLTFSceneExporter exporter, GLTFRoot gltfRoot); + public delegate void AfterNodeExportDelegate(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node); + /// True: material export is complete. False: continue regular export. + public delegate bool BeforeMaterialExportDelegate(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode); + public delegate void AfterMaterialExportDelegate(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode); + public delegate void BeforeTextureExportDelegate(GLTFSceneExporter exporter, ref UniqueTexture texture, string textureSlot); + public delegate void AfterTextureExportDelegate(GLTFSceneExporter exporter, UniqueTexture texture, int index, GLTFTexture tex); + public delegate void AfterPrimitiveExportDelegate(GLTFSceneExporter exporter, Mesh mesh, MeshPrimitive primitive, int index); + + + private class LegacyCallbacksPlugin : GLTFExportPluginContext + { + public override void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) => GLTFSceneExporter.AfterSceneExport?.Invoke(exporter, gltfRoot); + public override void BeforeSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) => GLTFSceneExporter.BeforeSceneExport?.Invoke(exporter, gltfRoot); + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) => GLTFSceneExporter.AfterNodeExport?.Invoke(exporter, gltfRoot, transform, node); + + public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) + { + // static callback, run after options callback + // we're iterating here because we want to stop calling any once we hit one that can export this material. + if (GLTFSceneExporter.BeforeMaterialExport != null) + { + var list = GLTFSceneExporter.BeforeMaterialExport.GetInvocationList(); + foreach (var entry in list) + { + var cb = (BeforeMaterialExportDelegate) entry; + if (cb != null && cb.Invoke(exporter, gltfRoot, material, materialNode)) + { + return true; + } + } + } + return false; + } + public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) => GLTFSceneExporter.AfterMaterialExport?.Invoke(exporter, gltfRoot, material, materialNode); + } + + private static ILogger Debug = UnityEngine.Debug.unityLogger; + private List _plugins = new List(); + + public struct TextureMapType + { + public const string BaseColor = "baseColorTexture"; + [Obsolete("Use BaseColor instead")] public const string Main = BaseColor; + public const string Emissive = "emissiveTexture"; + [Obsolete("Use Emissive instead")] public const string Emission = Emissive; + + public const string Normal = "normalTexture"; + [Obsolete("Use Normal instead")] public const string Bump = Normal; + public const string MetallicGloss = "metallicGloss"; + public const string MetallicRoughness = "metallicRoughnessTexture"; + public const string SpecGloss = "specularGlossinessTexture"; // not really supported anymore + public const string Light = Linear; + public const string Occlusion = "occlusionTexture"; + + public const string Linear = "linear"; + public const string sRGB = "sRGB"; + public const string Custom_Unknown = "linearWithAlpha"; + public const string Custom_HDR = "hdr"; + + [Obsolete("Use Linear or the right texture slot instead")] public const string MetallicGloss_DontConvert = Linear; + + } + + public struct TextureExportSettings + { + public bool isValid; + + // does the texture need a channel conversion when exporting + public Conversion conversion; + // do we know something about the alpha channel of this texture + public AlphaMode alphaMode; + // is the texture linear or sRGB + public bool linear; + // required for metallic-smoothness conversion + public float smoothnessMultiplier; + + public TextureExportSettings(TextureExportSettings source) + { + conversion = source.conversion; + alphaMode = source.alphaMode; + linear = source.linear; + smoothnessMultiplier = source.smoothnessMultiplier; + isValid = true; + } + + public enum Conversion + { + None, + MetalGlossChannelSwap, + NormalChannel, + } + + public enum AlphaMode + { + Never = 0, + Always = 1, + Heuristic = 2, + } + + public static bool operator ==(TextureExportSettings lhs, TextureExportSettings rhs) + { + return lhs.Equals(rhs); + } + + public static bool operator !=(TextureExportSettings lhs, TextureExportSettings rhs) + { + return !(lhs == rhs); + } + + public bool Equals(TextureExportSettings other) + { + return + conversion == other.conversion && + alphaMode == other.alphaMode && + linear == other.linear && + Mathf.Approximately(smoothnessMultiplier, other.smoothnessMultiplier); + } + + public override bool Equals(object obj) + { + return obj is TextureExportSettings other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + var hashCode = (int)conversion; + hashCode = (hashCode * 397) ^ (int)alphaMode; + hashCode = (hashCode * 397) ^ linear.GetHashCode(); + hashCode = (hashCode * 397) ^ smoothnessMultiplier.GetHashCode(); + return hashCode; + } + } + } + + public TextureExportSettings GetExportSettingsForSlot(string textureSlot) + { + var exportSettings = new TextureExportSettings(); + exportSettings.isValid = true; + + switch (textureSlot) + { + case TextureMapType.BaseColor: // Main = new TextureExportSettings() { alphaMode = AlphaMode.Heuristic }; + exportSettings.linear = false; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Heuristic; + return exportSettings; + case TextureMapType.Emissive: // Emission = new TextureExportSettings() { alphaMode = AlphaMode.Heuristic }; + exportSettings.linear = false; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + return exportSettings; + case TextureMapType.Normal: // Bump = new TextureExportSettings() { alphaMode = AlphaMode.Never, conversion = Conversion.NormalChannel }; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + exportSettings.conversion = TextureExportSettings.Conversion.NormalChannel; + return exportSettings; + case TextureMapType.MetallicGloss: // MetallicGloss = new TextureExportSettings() { alphaMode = AlphaMode.Never, conversion = Conversion.MetalGlossChannelSwap, smoothnessMultiplier = 1f}; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + exportSettings.conversion = TextureExportSettings.Conversion.MetalGlossChannelSwap; + return exportSettings; + case TextureMapType.MetallicRoughness: + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + return exportSettings; + + case TextureMapType.SpecGloss: // SpecGloss = MetallicGloss; // not really supported anymore + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + exportSettings.conversion = TextureExportSettings.Conversion.MetalGlossChannelSwap; + return exportSettings; + case TextureMapType.Occlusion: // Occlusion = Linear; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + return exportSettings; + + // custom slot types that allow us to export more arbitrary textures + case TextureMapType.Linear: // MetallicGloss_DontConvert = Linear; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Heuristic; + return exportSettings; + case TextureMapType.sRGB: // MetallicGloss_DontConvert = Linear; + exportSettings.linear = false; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Heuristic; + return exportSettings; + case TextureMapType.Custom_Unknown: + case "rgbm": // Custom_Unknown = new TextureExportSettings() { linear = true, alphaMode = AlphaMode.Always }; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Always; + return exportSettings; + case TextureMapType.Custom_HDR: // Custom_HDR = new TextureExportSettings() { alphaMode = AlphaMode.Always }; + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Always; + return exportSettings; + } + + // assume unknown linear + exportSettings.linear = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Heuristic; + return exportSettings; + } + + private Material GetConversionMaterial(TextureExportSettings textureMapType) + { + switch (textureMapType.conversion) + { + case TextureExportSettings.Conversion.NormalChannel: + return _normalChannelMaterial; + case TextureExportSettings.Conversion.MetalGlossChannelSwap: + return _metalGlossChannelSwapMaterial; + default: + return null; + } + } + + private struct ImageInfo + { + public Texture2D texture; + public TextureExportSettings textureMapType; + public string outputPath; + public bool canBeExportedFromDisk; + } + + private struct FileInfo + { + public Stream stream; + public string uniqueFileName; + } + + public struct ExportFileResult + { + public string uri; + public string mimeType; + public BufferViewId bufferView; + } + + public IReadOnlyList RootTransforms => _rootTransforms; + + private Transform[] _rootTransforms; + private GLTFRoot _root; + private BufferId _bufferId; + private GLTFBuffer _buffer; + private List _imageInfos; + private List _fileInfos; + private HashSet _fileNames; + private List _textures; + private Dictionary _exportedMaterials; + private bool _shouldUseInternalBufferForImages; + private Dictionary _exportedTransforms; + private List _animatedNodes; + + private int _exportLayerMask; + private ExportContext _exportContext; + + private Material _metalGlossChannelSwapMaterial; + private Material _normalChannelMaterial; + + private const uint MagicGLTF = 0x46546C67; + private const uint Version = 2; + private const uint MagicJson = 0x4E4F534A; + private const uint MagicBin = 0x004E4942; + private const int GLTFHeaderSize = 12; + private const int SectionHeaderSize = 8; + + public struct UniqueTexture : IEquatable + { + public Texture Texture; + public int MaxSize; + // additional settings that make exporting a texture unique + public TextureExportSettings ExportSettings; + + public int GetWidth() => Mathf.Min(MaxSize, Texture.width); + public int GetHeight() => Mathf.Min(MaxSize, Texture.height); + + public UniqueTexture(Texture tex, string textureSlot, GLTFSceneExporter exporter) + { + Texture = tex; + ExportSettings = exporter.GetExportSettingsForSlot(textureSlot); + MaxSize = Mathf.Max(tex.width, tex.height); + } + + public UniqueTexture(Texture tex, TextureExportSettings exportSettings) + { + Texture = tex; + ExportSettings = exportSettings; + MaxSize = Mathf.Max(tex.width, tex.height); + } + + public bool Equals(UniqueTexture other) + { + return Equals(Texture, other.Texture) && MaxSize == other.MaxSize && ExportSettings == other.ExportSettings; + } + + public override bool Equals(object obj) + { + return obj is UniqueTexture other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + // We dont want to use GetHashCode() for the texture here since it will change the hash after restarting the editor + #if UNITY_EDITOR + var hashCode = Texture ? Texture.imageContentsHash.GetHashCode() : 0; + #else + var hashCode = Texture ? Texture.GetHashCode() : 0; + #endif + hashCode = (hashCode * 397) ^ ExportSettings.GetHashCode(); + hashCode = (hashCode * 397) ^ MaxSize; + return hashCode; + } + } + } + + /// + /// A Primitive is a combination of Mesh + Material(s). It also contains a reference to the original SkinnedMeshRenderer, + /// if any, since that's the only way to get the actual current weights to export a blend shape primitive. + /// + public struct UniquePrimitive + { + public bool Equals(UniquePrimitive other) + { + if (!Equals(Mesh, other.Mesh)) return false; + if (Materials == null && other.Materials == null) return true; + if (!Equals(SkinnedMeshRenderer, other.SkinnedMeshRenderer)) return false; + if (!(Materials != null && other.Materials != null)) return false; + if (!Equals(Materials.Length, other.Materials.Length)) return false; + for (var i = 0; i < Materials.Length; i++) + { + if (!Equals(Materials[i], other.Materials[i])) return false; + } + + return true; + } + + public override bool Equals(object obj) + { + return obj is UniquePrimitive other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + var code = (Mesh != null ? Mesh.GetHashCode() : 0) * 397; + if (SkinnedMeshRenderer != null) + { + code = code ^ SkinnedMeshRenderer.GetHashCode() * 397; + } + if (Materials != null) + { + code = code ^ Materials.Length.GetHashCode() * 397; + foreach (var mat in Materials) + code = (code ^ (mat != null ? mat.GetHashCode() : 0)) * 397; + } + + return code; + } + } + + public Mesh Mesh; + public Material[] Materials; + public SkinnedMeshRenderer SkinnedMeshRenderer; // needed for BlendShape export, since Unity stores the actually used blend shape weights on the renderer. see ExporterMeshes.ExportBlendShapes + } + + private readonly Dictionary _primOwner = new Dictionary(); + + #region Settings + + private GLTFSettings settings => _exportContext.settings; + private bool ExportNames => settings.ExportNames; + private bool RequireExtensions => settings.RequireExtensions; + private bool ExportAnimations => settings.ExportAnimations; + + #endregion + +#region Profiler Markers + // ReSharper disable InconsistentNaming + private static ProfilerMarker exportGltfMarker = new ProfilerMarker("Export glTF"); + private static ProfilerMarker gltfSerializationMarker = new ProfilerMarker("Serialize exported data"); + private static ProfilerMarker exportMeshMarker = new ProfilerMarker("Export Mesh"); + private static ProfilerMarker exportPrimitiveMarker = new ProfilerMarker("Export Primitive"); + private static ProfilerMarker exportBlendShapeMarker = new ProfilerMarker("Export BlendShape"); + private static ProfilerMarker exportSkinFromNodeMarker = new ProfilerMarker("Export Skin"); + private static ProfilerMarker exportSparseAccessorMarker = new ProfilerMarker("Export Sparse Accessor"); + private static ProfilerMarker beforeNodeExportMarker = new ProfilerMarker("Before Node Export (Callback)"); + private static ProfilerMarker exportNodeMarker = new ProfilerMarker("Export Node"); + private static ProfilerMarker afterNodeExportMarker = new ProfilerMarker("After Node Export (Callback)"); + private static ProfilerMarker exportAnimationFromNodeMarker = new ProfilerMarker("Export Animation from Node"); + private static ProfilerMarker convertClipToGLTFAnimationMarker = new ProfilerMarker("Convert Clip to GLTF Animation"); + private static ProfilerMarker beforeSceneExportMarker = new ProfilerMarker("Before Scene Export (Callback)"); + private static ProfilerMarker exportSceneMarker = new ProfilerMarker("Export Scene"); + private static ProfilerMarker beforeMaterialExportMarker = new ProfilerMarker("Before Material Export (Callback)"); + private static ProfilerMarker exportMaterialMarker = new ProfilerMarker("Export Material"); + private static ProfilerMarker afterMaterialExportMarker = new ProfilerMarker("After Material Export (Callback)"); + private static ProfilerMarker writeImageToDiskMarker = new ProfilerMarker("Export Image - Write to Disk"); + private static ProfilerMarker afterSceneExportMarker = new ProfilerMarker("After Scene Export (Callback)"); + + private static ProfilerMarker exportAccessorMarker = new ProfilerMarker("Export Accessor"); + private static ProfilerMarker exportAccessorMatrix4x4ArrayMarker = new ProfilerMarker("Matrix4x4[]"); + private static ProfilerMarker exportAccessorVector4ArrayMarker = new ProfilerMarker("Vector4[]"); + private static ProfilerMarker exportAccessorUintArrayMarker = new ProfilerMarker("Uint[]"); + private static ProfilerMarker exportAccessorColorArrayMarker = new ProfilerMarker("Color[]"); + private static ProfilerMarker exportAccessorVector3ArrayMarker = new ProfilerMarker("Vector3[]"); + private static ProfilerMarker exportAccessorVector2ArrayMarker = new ProfilerMarker("Vector2[]"); + private static ProfilerMarker exportAccessorIntArrayIndicesMarker = new ProfilerMarker("int[] (Indices)"); + private static ProfilerMarker exportAccessorIntArrayMarker = new ProfilerMarker("int[]"); + private static ProfilerMarker exportAccessorFloatArrayMarker = new ProfilerMarker("float[]"); + private static ProfilerMarker exportAccessorByteArrayMarker = new ProfilerMarker("byte[]"); + + private static ProfilerMarker exportAccessorMinMaxMarker = new ProfilerMarker("Calculate min/max"); + private static ProfilerMarker exportAccessorBufferWriteMarker = new ProfilerMarker("Buffer.Write"); + + private static ProfilerMarker exportGltfInitMarker = new ProfilerMarker("Init glTF Export"); + private static ProfilerMarker gltfWriteOutMarker = new ProfilerMarker("Write glTF"); + private static ProfilerMarker gltfWriteJsonStreamMarker = new ProfilerMarker("Write JSON stream"); + private static ProfilerMarker gltfWriteBinaryStreamMarker = new ProfilerMarker("Write binary stream"); + + private static ProfilerMarker addAnimationDataMarker = new ProfilerMarker("Add animation data to glTF"); + private static ProfilerMarker exportRotationAnimationDataMarker = new ProfilerMarker("Rotation Keyframes"); + private static ProfilerMarker exportPositionAnimationDataMarker = new ProfilerMarker("Position Keyframes"); + private static ProfilerMarker exportScaleAnimationDataMarker = new ProfilerMarker("Scale Keyframes"); + private static ProfilerMarker exportWeightsAnimationDataMarker = new ProfilerMarker("Weights Keyframes"); + private static ProfilerMarker removeAnimationUnneededKeyframesMarker = new ProfilerMarker("Simplify Keyframes"); + private static ProfilerMarker removeAnimationUnneededKeyframesInitMarker = new ProfilerMarker("Init"); + private static ProfilerMarker removeAnimationUnneededKeyframesCheckIdenticalMarker = new ProfilerMarker("Check Identical"); + private static ProfilerMarker removeAnimationUnneededKeyframesCheckIdenticalKeepMarker = new ProfilerMarker("Keep Keyframe"); + private static ProfilerMarker removeAnimationUnneededKeyframesFinalizeMarker = new ProfilerMarker("Finalize"); + // ReSharper restore InconsistentNaming +#endregion + + /// + /// Create a GLTFExporter that exports out a transform + /// + /// Root transform of object to export + [Obsolete("Please switch to GLTFSceneExporter(Transform[] rootTransforms, ExportOptions options). This constructor is deprecated and will be removed in a future release.")] + public GLTFSceneExporter(Transform[] rootTransforms, RetrieveTexturePathDelegate texturePathRetriever) + : this(rootTransforms, new ExportContext { TexturePathRetriever = texturePathRetriever }) + { + } + + public GLTFSceneExporter(Transform rootTransform, ExportContext context) : this(new [] { rootTransform }, context) + { + } + + /// + /// Create a GLTFExporter that exports out a transform + /// + /// Root transform of object to export + /// Export Settings + public GLTFSceneExporter(Transform[] rootTransforms, ExportContext context) + { + _exportContext = context; + if (context.logger != null) + Debug = context.logger; + else + Debug = UnityEngine.Debug.unityLogger; + + // legacy: implicit plugin for all the static methods on GLTFSceneExporter + _plugins.Add(new LegacyCallbacksPlugin()); + // legacy: implicit plugin for all the methods on ExportContext + _plugins.Add(context.GetExportContextCallbacks()); + + // create export plugin instances + foreach (var plugin in settings.ExportPlugins) + { + if (plugin != null && plugin.Enabled) + { + var instance = plugin.CreateInstance(context); + if (instance != null) _plugins.Add(instance); + } + } + + _exportLayerMask = _exportContext.ExportLayers; + + var metalGlossChannelSwapShader = Resources.Load("MetalGlossChannelSwap", typeof(Shader)) as Shader; + _metalGlossChannelSwapMaterial = new Material(metalGlossChannelSwapShader); + + var normalChannelShader = Resources.Load("NormalChannel", typeof(Shader)) as Shader; + _normalChannelMaterial = new Material(normalChannelShader); + + _rootTransforms = rootTransforms; + + _exportedTransforms = new Dictionary(); + _exportedCameras = new Dictionary(); + _exportedLights = new Dictionary(); + _animatedNodes = new List(); + _skinnedNodes = new List(); + _bakedMeshes = new Dictionary(); + + _root = new GLTFRoot + { + Accessors = new List(), + Animations = new List(), + Asset = new Asset + { + Version = "2.0", + Generator = "UnityGLTF" + }, + Buffers = new List(), + BufferViews = new List(), + Cameras = new List(), + Images = new List(), + Materials = new List(), + Meshes = new List(), + Nodes = new List(), + Samplers = new List(), + Scenes = new List(), + Skins = new List(), + Textures = new List() + }; + + _imageInfos = new List(); + _fileInfos = new List(); + _fileNames = new HashSet(); + _exportedMaterials = new Dictionary(); + _textures = new List(); + + _buffer = new GLTFBuffer(); + _bufferId = new BufferId + { + Id = _root.Buffers.Count, + Root = _root + }; + _root.Buffers.Add(_buffer); + } + + /// + /// Gets the root object of the exported GLTF + /// + /// Root parsed GLTF Json + public GLTFRoot GetRoot() + { + return _root; + } + + /// + /// Writes a binary GLB file with filename at path. + /// + /// File path for saving the binary file + /// The name of the GLTF file + public void SaveGLB(string path, string fileName) + { + var fullPath = GetFileName(path, fileName, ".glb"); + var dirName = Path.GetDirectoryName(fullPath); + if (dirName != null && !Directory.Exists(dirName)) + Directory.CreateDirectory(dirName); + _shouldUseInternalBufferForImages = true; + + using (FileStream glbFile = new FileStream(fullPath, FileMode.Create)) + { + SaveGLBToStream(glbFile, fileName); + } + + if (!_shouldUseInternalBufferForImages) + { + ExportImages(path); + ExportFiles(path); + } + } + + /// + /// In-memory GLB creation helper. Useful for platforms where no filesystem is available (e.g. WebGL). + /// + /// + /// + public byte[] SaveGLBToByteArray(string sceneName) + { + _shouldUseInternalBufferForImages = true; + using (var stream = new MemoryStream()) + { + SaveGLBToStream(stream, sceneName); + return stream.ToArray(); + } + } + + /// + /// Writes a binary GLB file into a stream (memory stream, filestream, ...) + /// + /// File path for saving the binary file + /// The name of the GLTF file + public void SaveGLBToStream(Stream stream, string sceneName) + { + exportGltfMarker.Begin(); + + exportGltfInitMarker.Begin(); + Stream binStream = new MemoryStream(); + Stream jsonStream = new MemoryStream(); + _shouldUseInternalBufferForImages = true; + + _bufferWriter = new BinaryWriterWithLessAllocations(binStream); + + TextWriter jsonWriter = new StreamWriter(jsonStream, new UTF8Encoding(false)); + exportGltfInitMarker.End(); + + beforeSceneExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.BeforeSceneExport(this, _root); + beforeSceneExportMarker.End(); + + _root.Scene = ExportScene(sceneName, _rootTransforms); + + if (ExportAnimations) + { + ExportAnimation(); + } + + // Export skins + for (int i = 0; i < _skinnedNodes.Count; ++i) + { + Transform t = _skinnedNodes[i]; + ExportSkinFromNode(t); + } + + afterSceneExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.AfterSceneExport(this, _root); + afterSceneExportMarker.End(); + + animationPointerResolver?.Resolve(this); + + _buffer.ByteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Length, 4); + + gltfSerializationMarker.Begin(); + _root.Serialize(jsonWriter, true); + gltfSerializationMarker.End(); + + gltfWriteOutMarker.Begin(); + _bufferWriter.Flush(); + jsonWriter.Flush(); + + // align to 4-byte boundary to comply with spec. + AlignToBoundary(jsonStream); + AlignToBoundary(binStream, 0x00); + + int glbLength = (int)(GLTFHeaderSize + SectionHeaderSize + + jsonStream.Length + SectionHeaderSize + binStream.Length); + + BinaryWriter writer = new BinaryWriter(stream); + + // write header + writer.Write(MagicGLTF); + writer.Write(Version); + writer.Write(glbLength); + + gltfWriteJsonStreamMarker.Begin(); + // write JSON chunk header. + writer.Write((int)jsonStream.Length); + writer.Write(MagicJson); + + jsonStream.Position = 0; + CopyStream(jsonStream, writer); + gltfWriteJsonStreamMarker.End(); + + gltfWriteBinaryStreamMarker.Begin(); + writer.Write((int)binStream.Length); + writer.Write(MagicBin); + + binStream.Position = 0; + CopyStream(binStream, writer); + gltfWriteBinaryStreamMarker.End(); + + writer.Flush(); + + gltfWriteOutMarker.End(); + exportGltfMarker.End(); + } + + /// + /// Specifies the path and filename for the GLTF Json and binary + /// + /// File path for saving the GLTF and binary files + /// The name of the GLTF file + public void SaveGLTFandBin(string path, string fileName, bool exportTextures = true) + { + exportGltfMarker.Begin(); + + exportGltfInitMarker.Begin(); + _shouldUseInternalBufferForImages = false; + var toLower = fileName.ToLowerInvariant(); + if (toLower.EndsWith(".gltf")) + fileName = fileName.Substring(0, fileName.Length - 5); + if (toLower.EndsWith(".bin")) + fileName = fileName.Substring(0, fileName.Length - 4); + var fullPath = GetFileName(path, fileName, ".bin"); + var dirName = Path.GetDirectoryName(fullPath); + if (dirName != null && !Directory.Exists(dirName)) + Directory.CreateDirectory(dirName); + + // sanitized file path can differ + fileName = Path.GetFileNameWithoutExtension(fullPath); + var binFile = File.Create(fullPath); + + _bufferWriter = new BinaryWriterWithLessAllocations(binFile); + exportGltfInitMarker.End(); + + beforeSceneExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.BeforeSceneExport(this, _root); + beforeSceneExportMarker.End(); + + if (_rootTransforms != null) + _root.Scene = ExportScene(fileName, _rootTransforms); + + if (ExportAnimations) + ExportAnimation(); + + // Export skins + for (int i = 0; i < _skinnedNodes.Count; ++i) + { + Transform t = _skinnedNodes[i]; + ExportSkinFromNode(t); + } + + afterSceneExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.AfterSceneExport(this, _root); + afterSceneExportMarker.End(); + + animationPointerResolver?.Resolve(this); + + // we don't need to create a .bin file if there's no buffer at all + var anyDataInBinFile = _bufferWriter.BaseStream.Length > 0; + if (anyDataInBinFile) + { + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + _buffer.Uri = fileName + ".bin"; + _buffer.ByteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Length, 4); + } + else + { + _buffer = null; + _root.Buffers.Clear(); + } + + var gltfFile = File.CreateText(Path.ChangeExtension(fullPath, ".gltf")); + gltfSerializationMarker.Begin(); + _root.Serialize(gltfFile); + gltfSerializationMarker.End(); + + gltfWriteOutMarker.Begin(); + + _bufferWriter.Close(); + +#if WINDOWS_UWP + gltfFile.Dispose(); + binFile.Dispose(); +#else + gltfFile.Close(); + binFile.Close(); +#endif + if (!anyDataInBinFile) + File.Delete(fullPath); + + if (exportTextures) + ExportImages(path); + + ExportFiles(path); + + gltfWriteOutMarker.End(); + exportGltfMarker.End(); + } + + /// + /// Ensures a specific file extension from an absolute path that may or may not already have that extension. + /// + /// Absolute path that may or may not already have the required extension + /// The extension to ensure, with leading dot + /// An absolute path that has the required extension + public static string GetFileName(string directory, string fileNameThatMayHaveExtension, string requiredExtension) + { + var absolutePathThatMayHaveExtension = Path.Combine(directory, EnsureValidFileName(fileNameThatMayHaveExtension)); + + if (!requiredExtension.StartsWith(".", StringComparison.Ordinal)) + requiredExtension = "." + requiredExtension; + + if (!Path.GetExtension(absolutePathThatMayHaveExtension).Equals(requiredExtension, StringComparison.OrdinalIgnoreCase)) + return absolutePathThatMayHaveExtension + requiredExtension; + + return absolutePathThatMayHaveExtension; + } + + /// + /// Strip illegal chars and reserved words from a candidate filename (should not include the directory path) + /// + /// + /// http://stackoverflow.com/questions/309485/c-sharp-sanitize-file-name + /// + private static string EnsureValidFileName(string filename) + { + var invalidChars = Regex.Escape(new string(Path.GetInvalidFileNameChars())); + var invalidReStr = string.Format(@"[{0}]+", invalidChars); + + var reservedWords = new [] + { + "CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", + "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", + "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" + }; + + var sanitisedNamePart = Regex.Replace(filename, invalidReStr, "_"); + foreach (var reservedWord in reservedWords) + { + var reservedWordPattern = string.Format("^{0}\\.", reservedWord); + sanitisedNamePart = Regex.Replace(sanitisedNamePart, reservedWordPattern, "_reservedWord_.", RegexOptions.IgnoreCase); + } + + return sanitisedNamePart; + } + + public void DeclareExtensionUsage(string extension, bool isRequired=false) + { + if( _root.ExtensionsUsed == null ){ + _root.ExtensionsUsed = new List(); + } + if(!_root.ExtensionsUsed.Contains(extension)) + { + _root.ExtensionsUsed.Add(extension); + } + + if(isRequired){ + + if( _root.ExtensionsRequired == null ){ + _root.ExtensionsRequired = new List(); + } + if( !_root.ExtensionsRequired.Contains(extension)) + { + _root.ExtensionsRequired.Add(extension); + } + } + } + + private bool ShouldExportTransform(Transform transform) + { + // Root transforms should *always* be exported since this is a deliberate decision by the user calling - it should override any other setting that would prevent the export (e.g. if a user calls Export with disabled or hidden objects the exporter should never prevent this) + var isRoot = _rootTransforms.Contains(transform); + if (isRoot) return true; + + if (!settings.ExportDisabledGameObjects && !transform.gameObject.activeSelf) + { + return false; + } + if (settings.UseMainCameraVisibility && (_exportLayerMask >= 0 && _exportLayerMask != (_exportLayerMask | 1 << transform.gameObject.layer))) return false; + if (transform.CompareTag("EditorOnly")) return false; + return true; + } + + private SceneId ExportScene(string name, Transform[] rootObjTransforms) + { + exportSceneMarker.Begin(); + + var scene = new GLTFScene(); + + if (ExportNames) + { + scene.Name = name; + } + + if(_exportContext.TreatEmptyRootAsScene) + { + // if we're exporting with a single object selected, that object can be the scene root, no need for an extra root node. + if (rootObjTransforms.Length == 1 && rootObjTransforms[0].GetComponents().Length == 1) // single root with a single transform + { + var firstRoot = rootObjTransforms[0]; + var newRoots = new Transform[firstRoot.childCount]; + for (int i = 0; i < firstRoot.childCount; i++) + newRoots[i] = firstRoot.GetChild(i); + rootObjTransforms = newRoots; + } + } + + scene.Nodes = new List(rootObjTransforms.Length); + foreach (var transform in rootObjTransforms) + { + scene.Nodes.Add(ExportNode(transform)); + } + + _root.Scenes.Add(scene); + + exportSceneMarker.End(); + + return new SceneId + { + Id = _root.Scenes.Count - 1, + Root = _root + }; + } + + private NodeId ExportNode(Transform nodeTransform) + { + if (_exportedTransforms.TryGetValue(nodeTransform.GetInstanceID(), out var existingNodeId)) + return new NodeId() { Id = existingNodeId, Root = _root }; + + exportNodeMarker.Begin(); + + var node = new Node(); + + if (ExportNames) + { + node.Name = nodeTransform.name; + } + + // TODO think more about how this callback is used – could e.g. be modifying the hierarchy, + // and we would want to prevent exporting children of this node. + // Could also be that we want to add a mesh based on some condition + // (e.g. merged childs, procedural geometry, etc.) + beforeNodeExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.BeforeNodeExport(this, _root, nodeTransform, node); + beforeNodeExportMarker.End(); + +#if ANIMATION_SUPPORTED + if (nodeTransform.GetComponent() || nodeTransform.GetComponent()) + { + _animatedNodes.Add(nodeTransform); + } +#endif + if (nodeTransform.GetComponent() && ContainsValidRenderer(nodeTransform.gameObject, settings.ExportDisabledGameObjects)) + { + _skinnedNodes.Add(nodeTransform); + } + + // export camera attached to node + Camera unityCamera = nodeTransform.GetComponent(); + if (unityCamera != null && unityCamera.enabled) + { + node.Camera = ExportCamera(unityCamera); + } + + var lightPluginEnabled = _plugins.FirstOrDefault(x => x is LightsPunctualExportContext) != null; + Light unityLight = nodeTransform.GetComponent(); + if (unityLight != null && unityLight.enabled && lightPluginEnabled) + { + node.Light = ExportLight(unityLight); + } + + var needsInvertedLookDirection = unityLight || unityCamera; + if (needsInvertedLookDirection) + { + node.SetUnityTransform(nodeTransform, true); + } + else + { + node.SetUnityTransform(nodeTransform, false); + } + + var id = new NodeId + { + Id = _root.Nodes.Count, + Root = _root + }; + + // Register nodes for animation parsing (could be disabled if animation is disabled) + _exportedTransforms.Add(nodeTransform.GetInstanceID(), _root.Nodes.Count); + + _root.Nodes.Add(node); + + // children that are primitives get put in a mesh + FilterPrimitives(nodeTransform, out GameObject[] primitives, out GameObject[] nonPrimitives); + if (primitives.Length > 0) + { + var uniquePrimitives = GetUniquePrimitivesFromGameObjects(primitives); + if (uniquePrimitives != null) + { + node.Mesh = ExportMesh(nodeTransform.name, uniquePrimitives); + RegisterPrimitivesWithNode(node, uniquePrimitives); + } + } + + exportNodeMarker.End(); + + // children that are not primitives get added as child nodes + if (nonPrimitives.Length > 0) + { + var parentOfChilds = node; + + // when we're exporting a light or camera, we add an implicit node as first child of the camera/light node. + // this ensures that child objects and animations etc. "just work". + if (needsInvertedLookDirection) + { + var inbetween = new Node(); + + if (ExportNames) + { + inbetween.Name = nodeTransform.name + "-flipped"; + } + + inbetween.Rotation = Quaternion.Inverse(SchemaExtensions.InvertDirection).ToGltfQuaternionConvert(); + + var inbetweenId = new NodeId + { + Id = _root.Nodes.Count, + Root = _root + }; + + _root.Nodes.Add(inbetween); + + node.Children = new List(1); + node.Children.Add(inbetweenId); + + parentOfChilds = inbetween; + } + + parentOfChilds.Children = new List(nonPrimitives.Length); + foreach (var child in nonPrimitives) + { + if (!ShouldExportTransform(child.transform)) continue; + parentOfChilds.Children.Add(ExportNode(child.transform)); + } + } + + // node export callback + afterNodeExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.AfterNodeExport(this, _root, nodeTransform, node); + afterNodeExportMarker.End(); + + return id; + } + + private static bool ContainsValidRenderer(GameObject gameObject, bool exportDisabledGameObjects) + { + if (!gameObject) return false; + var meshRenderer = gameObject.GetComponent(); + var meshFilter = gameObject.GetComponent(); + var skinnedMeshRender = gameObject.GetComponent(); + var materials = meshRenderer ? meshRenderer.sharedMaterials : skinnedMeshRender ? skinnedMeshRender.sharedMaterials : null; + var anyMaterialIsNonNull = false; + if (materials != null) + for (int i = 0; i < materials.Length; i++) + anyMaterialIsNonNull |= materials[i]; + return (meshFilter && meshRenderer && (meshRenderer.enabled || exportDisabledGameObjects)) || (skinnedMeshRender && (skinnedMeshRender.enabled || exportDisabledGameObjects)) && anyMaterialIsNonNull; + } + + private void FilterPrimitives(Transform transform, out GameObject[] primitives, out GameObject[] nonPrimitives) + { + var childCount = transform.childCount; + var prims = new List(childCount + 1); + var nonPrims = new List(childCount); + + // add another primitive if the root object also has a mesh + if (ShouldExportTransform(transform)) + { + if (ContainsValidRenderer(transform.gameObject, settings.ExportDisabledGameObjects)) + { + prims.Add(transform.gameObject); + } + } + + for (var i = 0; i < childCount; i++) + { + var go = transform.GetChild(i).gameObject; + + // This seems to be a performance optimization but results in transforms that are detected as "primitives" not being animated + // if (IsPrimitive(go)) + // prims.Add(go); + // else + nonPrims.Add(go); + } + + primitives = prims.ToArray(); + nonPrimitives = nonPrims.ToArray(); + } + + // This seems to be a performance optimization but results in transforms that are detected as "primitives" not being animated + // private static bool IsPrimitive(GameObject gameObject) + // { + // /* + // * Primitives have the following properties: + // * - have no children + // * - have no non-default local transform properties + // * - have MeshFilter and MeshRenderer components OR has SkinnedMeshRenderer component + // */ + // return gameObject.transform.childCount == 0 + // && gameObject.transform.localPosition == Vector3.zero + // && gameObject.transform.localRotation == Quaternion.identity + // && gameObject.transform.localScale == Vector3.one + // && ContainsValidRenderer(gameObject); + // } + + public ExportFileResult ExportFile(string fileName, string mimeType, Stream stream) { + if (_shouldUseInternalBufferForImages) { + byte[] data = new byte[stream.Length]; + stream.Read(data, 0, (int)stream.Length); + stream.Close(); + + return new ExportFileResult { + bufferView = this.ExportBufferView(data), + mimeType = mimeType, + }; + } else { + var uniqueFileName = GetUniqueName(_fileNames, fileName); + + _fileNames.Add(uniqueFileName); + + _fileInfos.Add( + new FileInfo { + stream = stream, + uniqueFileName = uniqueFileName, + } + ); + + return new ExportFileResult { + uri = uniqueFileName, + }; + } + } + + private void ExportFiles(string outputPath) + { + for (int i = 0; i < _fileInfos.Count; ++i) + { + var fileInfo = _fileInfos[i]; + + var fileOutputPath = Path.Combine(outputPath, fileInfo.uniqueFileName); + + var dir = Path.GetDirectoryName(fileOutputPath); + if (!Directory.Exists(dir) && dir != null) + Directory.CreateDirectory(dir); + + var outputStream = File.Create(fileOutputPath); + fileInfo.stream.Seek(0, SeekOrigin.Begin); + fileInfo.stream.CopyTo(outputStream); + outputStream.Close(); + } + } + + private void ExportAnimation() + { + for (int i = 0; i < _animatedNodes.Count; ++i) + { + Transform t = _animatedNodes[i]; + ExportAnimationFromNode(ref t); + } + } + +#region Public API +#if ANIMATION_SUPPORTED + + public int GetAnimationId(AnimationClip clip, Transform transform, float speed = 1) + { + if (_clipAndSpeedAndNodeToAnimation.TryGetValue((clip, speed, transform), out var id)) + { + return _root.Animations.IndexOf(id); + } + return -1; + } +#endif + + public MaterialId GetMaterialId(GLTFRoot root, Material materialObj) + { + var materialKey = 0; + if (materialObj == DefaultMaterial) + materialKey = 0; + else if (materialObj) + materialKey = materialObj.GetInstanceID(); + + if (_exportedMaterials.TryGetValue(materialKey, out var id)) + { + return new MaterialId + { + Id = id, + Root = root + }; + } + + return null; + } + + public TextureId GetTextureId(GLTFRoot root, Texture textureObj) + { + for (var i = 0; i < _textures.Count; i++) + { + if (_textures[i].Texture == textureObj) + { + return new TextureId + { + Id = i, + Root = root + }; + } + } + return null; + } + + public TextureId GetTextureId(GLTFRoot root, UniqueTexture textureObj) + { + for (var i = 0; i < _textures.Count; i++) + { + if (_textures[i].Equals(textureObj)) + { + return new TextureId + { + Id = i, + Root = root + }; + } + } + return null; + } + + public MeshId GetMeshId(Mesh meshObj) + { + foreach (var primOwner in _primOwner) + { + // Not sure if this is entirely accurate – we're returning the first instance here. + if (primOwner.Key.Mesh == meshObj) + { + return primOwner.Value; + } + } + + return null; + } + + public ImageId GetImageId(GLTFRoot root, Texture imageObj, TextureExportSettings textureMapType) + { + for (var i = 0; i < _imageInfos.Count; i++) + { + if (_imageInfos[i].texture == imageObj && _imageInfos[i].textureMapType == textureMapType) + { + return new ImageId + { + Id = i, + Root = root + }; + } + } + + return null; + } + + public SamplerId GetSamplerId(GLTFRoot root, Texture textureObj) + { + if (_textureSettingsToSamplerIndices.TryGetValue(new SamplerRelevantTextureData(textureObj), out var samplerId)) + { + return new SamplerId + { + Id = samplerId, + Root = root + }; + } + + return null; + } + + public Texture GetTexture(int id) => _textures[id].Texture; + + #endregion + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneExporter.cs.meta b/Runtime/Scripts/GLTFSceneExporter.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneExporter.cs.meta rename to Runtime/Scripts/GLTFSceneExporter.cs.meta diff --git a/Runtime/Scripts/GLTFSceneImporter.cs b/Runtime/Scripts/GLTFSceneImporter.cs new file mode 100644 index 000000000..3035c8aa5 --- /dev/null +++ b/Runtime/Scripts/GLTFSceneImporter.cs @@ -0,0 +1,1224 @@ +using GLTF; +using GLTF.Schema; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.ExceptionServices; +using System.Threading; +using System.Threading.Tasks; +using UnityEngine; +using UnityGLTF.Cache; +using UnityGLTF.Extensions; +using UnityGLTF.Loader; +using UnityGLTF.Plugins; +using Quaternion = UnityEngine.Quaternion; +using Vector2 = UnityEngine.Vector2; +using Vector3 = UnityEngine.Vector3; +using Vector4 = UnityEngine.Vector4; +#if !WINDOWS_UWP && !UNITY_WEBGL +using ThreadPriority = System.Threading.ThreadPriority; +#endif +using WrapMode = UnityEngine.WrapMode; + +namespace UnityGLTF +{ + public class ImportOptions + { +#pragma warning disable CS0618 // Type or member is obsolete + public ILoader ExternalDataLoader = null; +#pragma warning restore CS0618 // Type or member is obsolete + + /// + /// Optional for loading references from the GLTF to external streams. May also optionally implement . + /// + public IDataLoader DataLoader = null; + public AsyncCoroutineHelper AsyncCoroutineHelper = null; + public bool ThrowOnLowMemory = true; + public AnimationMethod AnimationMethod = AnimationMethod.Legacy; + public bool AnimationLoopTime = true; + public bool AnimationLoopPose = false; + + public bool SwapUVs = false; + public GLTFImporterNormals ImportNormals = GLTFImporterNormals.Import; + public GLTFImporterNormals ImportTangents = GLTFImporterNormals.Import; + public bool ImportBlendShapeNames = true; + +#if UNITY_EDITOR + public GLTFImportContext ImportContext = new GLTFImportContext(null, GLTFSettings.GetOrCreateSettings()); +#else + public GLTFImportContext ImportContext = new GLTFImportContext(GLTFSettings.GetOrCreateSettings()); +#endif + + [NonSerialized] + public ILogger logger; + } + + public enum AnimationMethod + { + None, + Legacy, + Mecanim, + MecanimHumanoid, + } + + public class UnityMeshData + { + public Vector3[] Vertices; + public Vector3[] Normals; + public Vector4[] Tangents; + public Vector2[] Uv1; + public Vector2[] Uv2; + public Vector2[] Uv3; + public Vector2[] Uv4; + public Color[] Colors; + public BoneWeight[] BoneWeights; + + public Vector3[][] MorphTargetVertices; + public Vector3[][] MorphTargetNormals; + public Vector3[][] MorphTargetTangents; + + public MeshTopology[] Topology; + public int[][] Indices; + + public HashSet alreadyAddedAccessors = new HashSet(); + public uint[] subMeshVertexOffset; + } + + public struct ImportProgress + { + public bool IsDownloaded; + + public int NodeTotal; + public int NodeLoaded; + + public int TextureTotal; + public int TextureLoaded; + + public int BuffersTotal; + public int BuffersLoaded; + + public float Progress + { + get + { + int total = NodeTotal + TextureTotal + BuffersTotal; + int loaded = NodeLoaded + TextureLoaded + BuffersLoaded; + if (total > 0) + { + return (float)loaded / total; + } + else + { + return 0.0f; + } + } + } + + public override string ToString() + { + return $"{(Progress * 100.0):F2}% (Buffers: {BuffersLoaded}/{BuffersTotal}, Nodes: {NodeLoaded}/{NodeTotal}, Texs: {TextureLoaded}/{TextureTotal})"; + } + } + + public struct ImportStatistics + { + public long TriangleCount; + public long VertexCount; + } + + /// + /// Converts gltf animation data to unity + /// + public delegate float[] ValuesConvertion(NumericArray data, int frame); + + public partial class GLTFSceneImporter : IDisposable + { + public enum ColliderType + { + None, + Box, + Mesh, + MeshConvex + } + + protected struct GLBStream + { + public Stream Stream; + public long StartPosition; + } + + /// + /// Maximum LOD + /// + public int MaximumLod = 300; + + /// + /// Timeout for certain threading operations + /// + public int Timeout = 8; + + private bool _isMultithreaded; + + /// + /// Use Multithreading or not. + /// In editor, this is always false. This is to prevent a freeze in editor (noticed in Unity versions 2017.x and 2018.x) + /// + public bool IsMultithreaded + { + get + { + return (Application.isEditor || Application.platform == RuntimePlatform.WebGLPlayer) ? false : _isMultithreaded; + } + set + { + _isMultithreaded = value; + } + } + + public GLTFRoot Root => _gltfRoot; + + /// + /// The parent transform for the created GameObject + /// + public Transform SceneParent { get; set; } + + /// + /// The last created object + /// + public GameObject CreatedObject { get; private set; } + + /// + /// All created animation clips + /// + public AnimationClip[] CreatedAnimationClips { get; private set; } + + /// + /// Adds colliders to primitive objects when created + /// + public ColliderType Collider { get; set; } + + /// + /// Override for the shader to use on created materials + /// + public string CustomShaderName { get; set; } + + public GameObject LastLoadedScene + { + get { return _lastLoadedScene; } + } + + public TextureCacheData[] TextureCache => _assetCache.TextureCache; + public Texture2D[] InvalidImageCache => _assetCache.InvalidImageCache; + public MaterialCacheData[] MaterialCache => _assetCache.MaterialCache; + public AnimationCacheData[] AnimationCache => _assetCache.AnimationCache; + public GameObject[] NodeCache => _assetCache.NodeCache; + public MeshCacheData[] MeshCache => _assetCache.MeshCache; + + /// + /// Whether to keep a CPU-side copy of the mesh after upload to GPU (for example, in case normals/tangents need recalculation) + /// + public bool KeepCPUCopyOfMesh = true; + + /// + /// Whether to keep a CPU-side copy of the texture after upload to GPU + /// + /// + /// This is is necessary when a texture is used with different sampler states, as Unity doesn't allow setting + /// of filter and wrap modes separately form the texture object. Setting this to false will omit making a copy + /// of a texture in that case and use the original texture's sampler state wherever it's referenced; this is + /// appropriate in cases such as the filter and wrap modes being specified in the shader instead + /// + public bool KeepCPUCopyOfTexture = true; + + /// + /// Specifies whether the MipMap chain should be generated for model textures + /// + public bool GenerateMipMapsForTextures = true; + + /// + /// When screen coverage is above threshold and no LOD mesh, cull the object + /// + public bool CullFarLOD = false; + + public bool IsRunning => _isRunning; + + public bool LoadUnreferencedImagesAndMaterials = false; + + /// + /// Statistics from the scene + /// + public ImportStatistics Statistics; + + protected GLTFImportContext Context => _options.ImportContext; + + protected ImportOptions _options; + protected MemoryChecker _memoryChecker; + + protected GameObject _lastLoadedScene; + protected readonly GLTFMaterial DefaultMaterial = new GLTFMaterial(); + internal MaterialCacheData _defaultLoadedMaterial = null; + + protected string _gltfFileName; + protected GLBStream _gltfStream; + protected GLTFRoot _gltfRoot; + protected AssetCache _assetCache; + protected bool _isRunning = false; + + protected ImportProgress progressStatus = default(ImportProgress); + protected IProgress progress = null; + + private static ILogger Debug = UnityEngine.Debug.unityLogger; + + protected ColorSpace _activeColorSpace; + + public GLTFSceneImporter(string gltfFileName, ImportOptions options) + { + if (options.ImportContext != null) + { + options.ImportContext.SceneImporter = this; + } + + _gltfFileName = gltfFileName; + _options = options; + + _activeColorSpace = QualitySettings.activeColorSpace; + + if (options.logger != null) + Debug = options.logger; + else + Debug = UnityEngine.Debug.unityLogger; + + VerifyDataLoader(); + } + + public GLTFSceneImporter(GLTFRoot rootNode, Stream gltfStream, ImportOptions options) + { + if (options.ImportContext != null) + { + options.ImportContext.SceneImporter = this; + } + + _activeColorSpace = QualitySettings.activeColorSpace; + + _gltfRoot = rootNode; + + if (gltfStream != null) + { + _gltfStream = new GLBStream { Stream = gltfStream, StartPosition = gltfStream.Position }; + } + + _options = options; + VerifyDataLoader(); + } + + private void VerifyDataLoader() + { + if (_options.DataLoader == null) + { + if (_options.ExternalDataLoader == null) + { + _options.DataLoader = new UnityWebRequestLoader(URIHelper.GetDirectoryName(_gltfFileName)); + _gltfFileName = URIHelper.GetFileFromUri(new Uri(_gltfFileName)); + } + else + _options.DataLoader = LegacyLoaderWrapper.Wrap(_options.ExternalDataLoader); + } + } + + public void Dispose() + { + Cleanup(); + } + + /// + /// Loads a glTF Scene into the LastLoadedScene field + /// + /// The scene to load, If the index isn't specified, we use the default index in the file. Failing that we load index 0. + /// + /// Callback function for when load is completed + /// Cancellation token for loading + /// + public async Task LoadSceneAsync(int sceneIndex = -1, bool showSceneObj = true, Action onLoadComplete = null, CancellationToken cancellationToken = default(CancellationToken), IProgress progress = null) + { + try + { + lock (this) + { + if (_isRunning) + { + throw new GLTFLoadException("Cannot call LoadScene while GLTFSceneImporter is already running"); + } + + _isRunning = true; + } + + // TODO check where the right place is to call OnBeforeImport as early as possible + foreach (var plugin in Context.Plugins) + { + plugin.OnBeforeImport(); + } + + if (_options.ThrowOnLowMemory) + { + _memoryChecker = new MemoryChecker(); + } + + this.progressStatus = new ImportProgress(); + this.progress = progress; + + Statistics = new ImportStatistics(); + progress?.Report(progressStatus); + +#if UNITY_EDITOR + // When loading from a buffer, this is not set; sanitizing that here + // so we can log proper file names later on + if (_gltfFileName == null) + { + var importSource = _options?.ImportContext?.AssetContext?.assetPath; + if (importSource != null) + _gltfFileName = importSource; + } +#endif + + if (_gltfRoot == null) + { + foreach (var plugin in Context.Plugins) + plugin.OnBeforeImportRoot(); + await LoadJson(_gltfFileName); + progressStatus.IsDownloaded = true; + } + + foreach (var plugin in Context.Plugins) + { + plugin.OnAfterImportRoot(_gltfRoot); + } + + cancellationToken.ThrowIfCancellationRequested(); + + if (_assetCache == null) + { + _assetCache = new AssetCache(_gltfRoot); + } + +#if HAVE_MESHOPT_DECOMPRESS + if (Context.TryGetPlugin(out _)) + { + await MeshOptDecodeBuffer(_gltfRoot); + } +#endif + await _LoadScene(sceneIndex, showSceneObj, cancellationToken); + + // for Editor import, we also want to load unreferenced assets that wouldn't be loaded at runtime + + if (LoadUnreferencedImagesAndMaterials) + await LoadUnreferencedAssetsAsync(); + + } + catch (Exception ex) + { + Cleanup(); + + onLoadComplete?.Invoke(null, ExceptionDispatchInfo.Capture(ex)); + throw; + } + finally + { + lock (this) + { + _isRunning = false; + } + } + _gltfStream.Stream.Close(); + + if (progressStatus.NodeLoaded != progressStatus.NodeTotal) Debug.Log(LogType.Error, $"Nodes loaded ({progressStatus.NodeLoaded}) does not match node total in the scene ({progressStatus.NodeTotal})"); + if (progressStatus.TextureLoaded > progressStatus.TextureTotal) Debug.Log(LogType.Error, $"Textures loaded ({progressStatus.TextureLoaded}) is larger than texture total in the scene ({progressStatus.TextureTotal})"); + + onLoadComplete?.Invoke(LastLoadedScene, null); + } + + private async Task LoadUnreferencedAssetsAsync() + { + for (int i = 0; i < TextureCache.Length; i++) + { + if (TextureCache[i] == null) + { + await CreateNotReferencedTexture(i); + } + } + + // check which additional materials are in the root, but not yet in the MaterialCache + for (var index = 0; index < MaterialCache.Length; index++) + { + if (_assetCache.MaterialCache[index] == null) + { + var def = _gltfRoot.Materials[index]; + await ConstructMaterialImageBuffers(def); + await ConstructMaterial(def, index); + } + } + } + + public IEnumerator LoadScene(int sceneIndex = -1, bool showSceneObj = true, Action onLoadComplete = null) + { + return LoadSceneAsync(sceneIndex, showSceneObj, onLoadComplete).AsCoroutine(); + } + + /// + /// Loads a node tree from a glTF file into the LastLoadedScene field + /// + /// The node index to load from the glTF + /// + public async Task LoadNodeAsync(int nodeIndex, CancellationToken cancellationToken) + { + await SetupLoad(async () => + { + CreatedObject = await GetNode(nodeIndex, cancellationToken); + InitializeGltfTopLevelObject(); + }); + } + + /// + /// Load a Material from the glTF by index + /// + /// + /// + public virtual async Task LoadMaterialAsync(int materialIndex) + { + await SetupLoad(async () => + { + if (materialIndex < 0 || materialIndex >= _gltfRoot.Materials.Count) + { + throw new ArgumentException($"There is no material for index {materialIndex}"); + } + + if (_assetCache.MaterialCache[materialIndex] == null) + { + var def = _gltfRoot.Materials[materialIndex]; + await ConstructMaterialImageBuffers(def); + await ConstructMaterial(def, materialIndex); + } + }); + return _assetCache.MaterialCache[materialIndex].UnityMaterialWithVertexColor; + } + + /// + /// Load a Mesh from the glTF by index + /// + /// + /// + public virtual async Task LoadMeshAsync(int meshIndex, CancellationToken cancellationToken) + { + await SetupLoad(async () => + { + if (meshIndex < 0 || meshIndex >= _gltfRoot.Meshes.Count) + { + throw new ArgumentException($"There is no mesh for index {meshIndex}"); + } + + if (_assetCache.MeshCache[meshIndex] == null) + { + var def = _gltfRoot.Meshes[meshIndex]; + await ConstructMeshAttributes(def, new MeshId() { Id = meshIndex, Root = _gltfRoot }); + await ConstructMesh(def, meshIndex, cancellationToken); + } + }); + return _assetCache.MeshCache[meshIndex].LoadedMesh; + } + + private async Task LoadJson(string jsonFilePath) + { +#if !WINDOWS_UWP && !UNITY_WEBGL + var dataLoader2 = _options.DataLoader as IDataLoader2; + if (IsMultithreaded && dataLoader2 != null) + { + Thread loadThread = new Thread(() => _gltfStream.Stream = dataLoader2.LoadStream(jsonFilePath)); + loadThread.Priority = ThreadPriority.Highest; + loadThread.Start(); + RunCoroutineSync(WaitUntilEnum(new WaitUntil(() => !loadThread.IsAlive))); + } + else +#endif + { + _gltfStream.Stream = await _options.DataLoader.LoadStreamAsync(jsonFilePath); + } + + _gltfStream.StartPosition = 0; + +#if !WINDOWS_UWP && !UNITY_WEBGL + if (IsMultithreaded) + { + Thread parseJsonThread = new Thread(() => GLTFParser.ParseJson(_gltfStream.Stream, out _gltfRoot, _gltfStream.StartPosition)); + parseJsonThread.Priority = ThreadPriority.Highest; + parseJsonThread.Start(); + RunCoroutineSync(WaitUntilEnum(new WaitUntil(() => !parseJsonThread.IsAlive))); + if (_gltfRoot == null) + { + throw new GLTFLoadException("Failed to parse glTF"); + } + } + else +#endif + { + GLTFParser.ParseJson(_gltfStream.Stream, out _gltfRoot, _gltfStream.StartPosition); + } + + } + + /// + /// Initializes the top-level created node by adding an instantiated GLTF object component to it, + /// so that it can cleanup after itself properly when destroyed + /// + private void InitializeGltfTopLevelObject() + { + InstantiatedGLTFObject instantiatedGltfObject = CreatedObject.AddComponent(); + instantiatedGltfObject.CachedData = new RefCountedCacheData + ( + _assetCache.MaterialCache, + _assetCache.MeshCache, + _assetCache.TextureCache, + _assetCache.ImageCache + ); + } + + private GameObject NoSceneRoot; + + /// + /// Creates a scene based off loaded JSON. Includes loading in binary and image data to construct the meshes required. + /// + /// The bufferIndex of scene in gltf file to load + /// + protected async Task _LoadScene(int sceneIndex = -1, bool showSceneObj = true, CancellationToken cancellationToken = default(CancellationToken)) + { + GLTFScene scene; + + if (sceneIndex >= 0 && sceneIndex < _gltfRoot.Scenes.Count) + { + scene = _gltfRoot.Scenes[sceneIndex]; + } + else + { + scene = _gltfRoot.GetDefaultScene(); + } + + if (scene == null) + { + // throw new GLTFLoadException("No default scene in gltf file."); + } + + try + { + foreach (var plugin in Context.Plugins) + plugin.OnBeforeImportScene(scene); + } + catch (Exception e) + { + Debug.LogException(e); + } + + GetGltfContentTotals(scene); + + await ConstructScene(scene, showSceneObj, cancellationToken); + + if (SceneParent != null) + { + CreatedObject.transform.SetParent(SceneParent, false); + } + + _lastLoadedScene = CreatedObject; + + try + { + foreach (var plugin in Context.Plugins) + plugin.OnAfterImportScene(scene, sceneIndex, CreatedObject); + } + catch (Exception e) + { + Debug.LogException(e); + } + } + + private void GetGltfContentTotals(GLTFScene scene) + { + // Count Nodes + Queue nodeQueue = new Queue(); + + // Add scene nodes + if (scene != null && scene.Nodes != null) + { + for (int i = 0; i < scene.Nodes.Count; ++i) + { + nodeQueue.Enqueue(scene.Nodes[i]); + } + } + + // BFS of nodes + while (nodeQueue.Count > 0) + { + var cur = nodeQueue.Dequeue(); + progressStatus.NodeTotal++; + + if (cur.Value.Children != null) + { + for (int i = 0; i < cur.Value.Children.Count; ++i) + { + nodeQueue.Enqueue(cur.Value.Children[i]); + } + } + } + + // Total textures + progressStatus.TextureTotal += _gltfRoot.Textures?.Count ?? 0; + + // Total buffers + progressStatus.BuffersTotal += _gltfRoot.Buffers?.Count ?? 0; + + // Send report + progress?.Report(progressStatus); + } + + private async Task GetBufferData(BufferId bufferId) + { + if (_assetCache.BufferCache[bufferId.Id] == null) + { + await ConstructBuffer(bufferId.Value, bufferId.Id); + } + + return _assetCache.BufferCache[bufferId.Id]; + } + + private float GetLodCoverage(List lodCoverageExtras, int lodIndex) + { + if (lodCoverageExtras != null && lodIndex < lodCoverageExtras.Count) + { + return (float)lodCoverageExtras[lodIndex]; + } + else + { + return 1.0f / (lodIndex + 2); + } + } + + private async Task GetNode(int nodeId, CancellationToken cancellationToken) + { + try + { + if (_assetCache.NodeCache[nodeId] == null) + { + if (nodeId >= _gltfRoot.Nodes.Count) + { + throw new ArgumentException("nodeIndex is out of range"); + } + + var node = _gltfRoot.Nodes[nodeId]; + + cancellationToken.ThrowIfCancellationRequested(); + await ConstructBufferData(node, cancellationToken); + + await ConstructNode(node, nodeId, cancellationToken); + + try + { + foreach (var plugin in Context.Plugins) + plugin.OnAfterImportNode(node, nodeId, _assetCache.NodeCache[nodeId]); + } + catch (Exception ex) + { + Debug.LogException(ex); + } + + // HACK belongs in an extension, but we don't have Importer callbacks yet + const string msft_LODExtName = MSFT_LODExtensionFactory.EXTENSION_NAME; + if (_gltfRoot.ExtensionsUsed != null + && _gltfRoot.ExtensionsUsed.Contains(msft_LODExtName) + && node.Extensions != null + && node.Extensions.ContainsKey(msft_LODExtName)) + { + var lodsExtension = node.Extensions[msft_LODExtName] as MSFT_LODExtension; + if (lodsExtension != null && lodsExtension.NodeIds.Count > 0) + { + for (int i = 0; i < lodsExtension.NodeIds.Count; i++) + { + int lodNodeId = lodsExtension.NodeIds[i]; + await GetNode(lodNodeId, cancellationToken); + } + } + } + } + + return _assetCache.NodeCache[nodeId]; + } + catch (Exception ex) + { + // If some failure occured during loading, remove the node + + if (_assetCache.NodeCache[nodeId] != null) + { + GameObject.DestroyImmediate(_assetCache.NodeCache[nodeId]); + _assetCache.NodeCache[nodeId] = null; + } + + if (ex is OutOfMemoryException) + { +#if UNITY_2023_1_OR_NEWER + await +#endif + Resources.UnloadUnusedAssets(); + } + + throw; + } + } + + protected virtual async Task ConstructNode(Node node, int nodeIndex, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + if (_assetCache.NodeCache[nodeIndex] != null) + { + return; + } + + var nodeObj = new GameObject(string.IsNullOrEmpty(node.Name) ? ("GLTFNode" + nodeIndex) : node.Name); + // If we're creating a really large node, we need it to not be visible in partial stages. So we hide it while we create it + nodeObj.SetActive(false); + + Vector3 position; + Quaternion rotation; + Vector3 scale; + node.GetUnityTRSProperties(out position, out rotation, out scale); + nodeObj.transform.localPosition = position; + nodeObj.transform.localRotation = rotation; + nodeObj.transform.localScale = scale; + _assetCache.NodeCache[nodeIndex] = nodeObj; + + if (node.Children != null) + { + foreach (var child in node.Children) + { + GameObject childObj = await GetNode(child.Id, cancellationToken); + childObj.transform.SetParent(nodeObj.transform, false); + } + } + + if (node.Mesh != null) + { + var mesh = node.Mesh.Value; + await ConstructMesh(mesh, node.Mesh.Id, cancellationToken); + var unityMesh = _assetCache.MeshCache[node.Mesh.Id].LoadedMesh; + var materials = node.Mesh.Value.Primitives.Select(p => + p.Material != null ? + _assetCache.MaterialCache[p.Material.Id].UnityMaterialWithVertexColor : + _defaultLoadedMaterial.UnityMaterialWithVertexColor + ).ToArray(); + + var morphTargets = mesh.Primitives[0].Targets; + var weights = node.Weights ?? mesh.Weights ?? + (morphTargets != null ? new List(morphTargets.Select(mt => 0.0)) : null); + if (node.Skin != null || weights != null) + { + var renderer = nodeObj.AddComponent(); + renderer.sharedMesh = unityMesh; + renderer.sharedMaterials = materials; + renderer.quality = SkinQuality.Auto; + + if (node.Skin != null) + await SetupBones(node.Skin.Value, renderer, cancellationToken); + + // morph target weights + if (weights != null) + { + for (int i = 0; i < weights.Count; ++i) + { + // GLTF weights are [0, 1] range; Unity weights must match the frame weight + renderer.SetBlendShapeWeight(i, (float)(weights[i] * 1f)); + } + } + } + else + { + var filter = nodeObj.AddComponent(); + filter.sharedMesh = unityMesh; + var renderer = nodeObj.AddComponent(); + renderer.sharedMaterials = materials; + } + +#if UNITY_PHYSICS + switch (Collider) + { + case ColliderType.Box: + var boxCollider = nodeObj.AddComponent(); + boxCollider.center = unityMesh.bounds.center; + boxCollider.size = unityMesh.bounds.size; + break; + case ColliderType.Mesh: + var meshCollider = nodeObj.AddComponent(); + meshCollider.sharedMesh = unityMesh; + break; + case ColliderType.MeshConvex: + var meshConvexCollider = nodeObj.AddComponent(); + meshConvexCollider.sharedMesh = unityMesh; + meshConvexCollider.convex = true; + break; + } +#endif + } + + await ConstructLods(_gltfRoot, nodeObj, node, nodeIndex, cancellationToken); + + /* TODO: implement camera (probably a flag to disable for VR as well) + if (camera != null) + { + GameObject cameraObj = camera.Value.Create(); + cameraObj.transform.parent = nodeObj.transform; + } + */ + + ConstructLights(nodeObj, node); + + nodeObj.SetActive(true); + + progressStatus.NodeLoaded++; + progress?.Report(progressStatus); + } + + private async Task ConstructBufferData(Node node, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + MeshId mesh = node.Mesh; + if (mesh != null) + { + if (mesh.Value.Primitives != null) + { + await ConstructMeshAttributes(mesh.Value, mesh); + } + } + + if (node.Children != null) + { + foreach (NodeId child in node.Children) + { + await ConstructBufferData(child.Value, cancellationToken); + } + } + } + + protected async Task ConstructBuffer(GLTFBuffer buffer, int bufferIndex) + { +#if HAVE_MESHOPT_DECOMPRESS + if (buffer.Extensions != null && buffer.Extensions.ContainsKey(EXT_meshopt_compression_Factory.EXTENSION_NAME)) + { + if (_assetCache.BufferCache[bufferIndex] != null) Debug.Log(LogType.Error, "_assetCache.BufferCache[bufferIndex] != null;"); + + var meshOptBufferMemoryStream = new MemoryStream((int)buffer.ByteLength); + meshOptBufferMemoryStream.SetLength((int)buffer.ByteLength); + + var bufferCacheDate = new BufferCacheData + { + Stream = meshOptBufferMemoryStream, + ChunkOffset = 0 + }; + + _assetCache.BufferCache[bufferIndex] = bufferCacheDate; + return; + } +#else + if (buffer.Extensions != null && + buffer.Extensions.ContainsKey(EXT_meshopt_compression_Factory.EXTENSION_NAME)) + { + //TODO: check for fallback URI or Buffer... ? + throw new NotSupportedException("Can't import model because it uses the EXT_meshopt_compression extension. Add the package \"com.unity.meshopt.decompress\" to your project to import this file."); + } +#endif + + if (buffer.Uri == null) + { + if (_assetCache.BufferCache[bufferIndex] != null) Debug.Log(LogType.Error, "Error: _assetCache.BufferCache[bufferIndex] != null. Please report a bug."); + _assetCache.BufferCache[bufferIndex] = ConstructBufferFromGLB(bufferIndex); + + progressStatus.BuffersLoaded++; + progress?.Report(progressStatus); + } + else + { + Stream bufferDataStream = null; + var uri = buffer.Uri; + + byte[] bufferData; + URIHelper.TryParseBase64(uri, out bufferData); + if (bufferData != null) + { + bufferDataStream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); + } + else + { + bufferDataStream = await _options.DataLoader.LoadStreamAsync(buffer.Uri); + } + + if (_assetCache.BufferCache[bufferIndex] != null) Debug.Log(LogType.Error, "_assetCache.BufferCache[bufferIndex] != null;"); + _assetCache.BufferCache[bufferIndex] = new BufferCacheData + { + Stream = bufferDataStream + }; + + progressStatus.BuffersLoaded++; + progress?.Report(progressStatus); + } + } + + protected virtual async Task ConstructScene(GLTFScene scene, bool showSceneObj, CancellationToken cancellationToken) + { + if (scene == null) + { + return; + } + + var sceneObj = new GameObject(string.IsNullOrEmpty(scene.Name) ? ("Scene") : scene.Name); + + try + { + sceneObj.SetActive(showSceneObj); + + if (scene.Nodes != null) + { + Transform[] nodeTransforms = new Transform[scene.Nodes.Count]; + for (int i = 0; i < scene.Nodes.Count; ++i) + { + NodeId node = scene.Nodes[i]; + GameObject nodeObj = await GetNode(node.Id, cancellationToken); + nodeObj.transform.SetParent(sceneObj.transform, false); + nodeTransforms[i] = nodeObj.transform; + } + } + + if (_options.AnimationMethod != AnimationMethod.None) + { + if (_gltfRoot.Animations != null && _gltfRoot.Animations.Count > 0) + { +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER + // create the AnimationClip that will contain animation data + var constructedClips = new List(); + for (int i = 0; i < _gltfRoot.Animations.Count; ++i) + { + AnimationClip clip = await ConstructClip(sceneObj.transform, i, cancellationToken); + + clip.wrapMode = WrapMode.Loop; +#if UNITY_EDITOR + var settings = UnityEditor.AnimationUtility.GetAnimationClipSettings(clip); + settings.loopTime = _options.AnimationLoopTime; + settings.loopBlend = _options.AnimationLoopPose; + UnityEditor.AnimationUtility.SetAnimationClipSettings(clip, settings); +#endif + constructedClips.Add(clip); + } + + if (_options.AnimationMethod == AnimationMethod.Legacy) + { + Animation animation = sceneObj.AddComponent(); + for (int i = 0; i < constructedClips.Count; i++) + { + var clip = constructedClips[i]; + animation.AddClip(clip, clip.name); + if (i == 0) + { + animation.clip = clip; + } + } + } + else if (_options.AnimationMethod == AnimationMethod.Mecanim || _options.AnimationMethod == AnimationMethod.MecanimHumanoid) + { + Animator animator = sceneObj.AddComponent(); +#if UNITY_EDITOR + // TODO there's no good way to construct an AnimatorController on import it seems, needs to be a SubAsset etc. + var controller = new UnityEditor.Animations.AnimatorController(); + controller.name = "AnimatorController"; + controller.AddLayer("Base Layer"); + var baseLayer = controller.layers[0]; + for (int i = 0; i < constructedClips.Count; i++) + { + var name = constructedClips[i].name; + // can't be empty + if (string.IsNullOrWhiteSpace(name)) name = "clip " + i; + // can't contain ., / and \ + name = name.Replace(".", "_"); + name = name.Replace("/", "_"); + name = name.Replace("\\", "_"); + var state = baseLayer.stateMachine.AddState(name); + state.motion = constructedClips[i]; + } + animator.runtimeAnimatorController = controller; +#else + Debug.Log(LogType.Warning, "Importing animations at runtime requires the Legacy AnimationMethod to be enabled, or custom handling of the resulting clips."); +#endif + } +#else + Debug.Log(LogType.Warning, "glTF scene contains animations but com.unity.modules.animation isn't installed. Install that module to import animations."); +#endif + CreatedAnimationClips = constructedClips.ToArray(); + } + } + + if (_options.AnimationMethod == AnimationMethod.MecanimHumanoid) + { + if (!sceneObj.GetComponent()) + sceneObj.AddComponent(); + } + + CreatedObject = sceneObj; + InitializeGltfTopLevelObject(); + } + catch (Exception ex) + { + // If some failure occured during loading, clean up the scene + UnityEngine.Object.DestroyImmediate(sceneObj); + CreatedObject = null; + + if (ex is OutOfMemoryException) + { +#if UNITY_2023_1_OR_NEWER + await +#endif + Resources.UnloadUnusedAssets(); + } + + throw; + } + } + + protected virtual BufferCacheData ConstructBufferFromGLB(int bufferIndex) + { + GLTFParser.SeekToBinaryChunk(_gltfStream.Stream, bufferIndex, _gltfStream.StartPosition); // sets stream to correct start position + return new BufferCacheData + { + Stream = _gltfStream.Stream, + ChunkOffset = (uint)_gltfStream.Stream.Position + }; + } + + /// + /// Get the absolute path to a gltf uri reference. + /// + /// The path to the gltf file + /// A path without the filename or extension + protected static string AbsoluteUriPath(string gltfPath) + { + var uri = new Uri(gltfPath); + var partialPath = uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Query.Length - uri.Segments[uri.Segments.Length - 1].Length); + return partialPath; + } + + /// + /// Get the absolute path a gltf file directory + /// + /// The path to the gltf file + /// A path without the filename or extension + protected static string AbsoluteFilePath(string gltfPath) + { + var fileName = Path.GetFileName(gltfPath); + var lastIndex = gltfPath.IndexOf(fileName); + var partialPath = gltfPath.Substring(0, lastIndex); + return partialPath; + } + + /// + /// Cleans up any undisposed streams after loading a scene or a node. + /// + private void Cleanup() + { + if (_assetCache != null) + { + _assetCache.Dispose(); + _assetCache = null; + } + } + + private async Task SetupLoad(Func callback) + { + try + { + lock (this) + { + if (_isRunning) + { + throw new GLTFLoadException("Cannot start a load while GLTFSceneImporter is already running"); + } + + _isRunning = true; + } + + Statistics = new ImportStatistics(); + if (_options.ThrowOnLowMemory) + { + _memoryChecker = new MemoryChecker(); + } + + if (_gltfRoot == null) + { + await LoadJson(_gltfFileName); + } + + if (_assetCache == null) + { + _assetCache = new AssetCache(_gltfRoot); + } + + await callback(); + } + catch + { + Cleanup(); + throw; + } + finally + { + lock (this) + { + _isRunning = false; + } + _gltfStream.Stream.Close(); + + } + } + + protected async Task YieldOnTimeoutAndThrowOnLowMemory() + { + if (_options.ThrowOnLowMemory) + { + _memoryChecker.ThrowIfOutOfMemory(); + } + + if (_options.AsyncCoroutineHelper != null) + { + await _options.AsyncCoroutineHelper.YieldOnTimeout(); + } + } + + protected IEnumerator WaitUntilEnum(WaitUntil waitUntil) + { + yield return waitUntil; + } + + private static void RunCoroutineSync(IEnumerator streamEnum) + { + var stack = new Stack(); + stack.Push(streamEnum); + while (stack.Count > 0) + { + var enumerator = stack.Pop(); + if (enumerator.MoveNext()) + { + stack.Push(enumerator); + var subEnumerator = enumerator.Current as IEnumerator; + if (subEnumerator != null) + { + stack.Push(subEnumerator); + } + } + } + } + + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneImporter.cs.meta b/Runtime/Scripts/GLTFSceneImporter.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneImporter.cs.meta rename to Runtime/Scripts/GLTFSceneImporter.cs.meta diff --git a/Runtime/Scripts/GLTFSettings.cs b/Runtime/Scripts/GLTFSettings.cs new file mode 100644 index 000000000..e1f951bfc --- /dev/null +++ b/Runtime/Scripts/GLTFSettings.cs @@ -0,0 +1,302 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using System.IO; +using System.Linq; +using UnityGLTF.Plugins; +using System.Reflection; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF +{ + + public class GLTFSettings : ScriptableObject + { + private const string k_PreferencesPrefix = "UnityGLTF_Preferences_"; + private const string k_SettingsFileName = "UnityGLTFSettings.asset"; + public const string k_RuntimeAndEditorSettingsPath = "Assets/Resources/" + k_SettingsFileName; + + [Flags] + public enum BlendShapeExportPropertyFlags + { + None = 0, + PositionOnly = 1, + Normal = 2, + Tangent = 4, + All = ~0 + } + + // Plugins + [SerializeField, HideInInspector] + public List ImportPlugins = new List(); + + [SerializeField, HideInInspector] + public List ExportPlugins = new List(); + + [Header("Export Settings")] + [SerializeField] + private bool exportNames = true; + [SerializeField] + [Tooltip("If on, the entire texture path will be preserved. If off (default), textures are exported at root level.")] + private bool exportFullPath = false; + [SerializeField] + private bool requireExtensions = false; + + [Header("Export Visibility")] + [SerializeField] + [Tooltip("Uses Camera.main layer settings to filter which objects are exported")] + private bool useMainCameraVisibility = true; + [SerializeField] + [Tooltip("glTF does not support visibility state. If this setting is true, disabled GameObjects will still be exported and be visible in the glTF file.")] + private bool exportDisabledGameObjects = false; + + [Header("Export Textures")] + [SerializeField] + [Tooltip("(Experimental) Exports PNG/JPEG directly from disk instead of re-encoding from Unity's import result. No channel repacking will happen for these textures. Textures in other formats (PSD, TGA etc) not supported by glTF and in-memory textures (e.g. RenderTextures) are always re-encoded.")] + private bool tryExportTexturesFromDisk = false; + [SerializeField] [Tooltip("Determines texture export type (PNG or JPEG) based on alpha channel. When false, always exports lossless PNG files.")] + private bool useTextureFileTypeHeuristic = true; + [SerializeField] [Tooltip("Quality setting for exported JPEG files.")] + private int defaultJpegQuality = 90; + + [Header("Export Animation")] + [SerializeField] + private bool exportAnimations = true; + [SerializeField, Tooltip("When enabled the Animator State speed parameter is baked into the exported glTF animation")] + private bool bakeAnimationSpeed = true; + // [Tooltip("(Experimental) Export animations using KHR_animation_pointer. Requires the viewer to also support this extension.")] + // [SerializeField] + // private bool useAnimationPointer = false; + [SerializeField] + [Tooltip("Some viewers can't distinguish between animation clips that have the same name. This option ensures all exported animation names are unique.")] + private bool uniqueAnimationNames = false; + [SerializeField] + private bool bakeSkinnedMeshes = false; + + [Header("Export Mesh Data")] + [SerializeField] + private BlendShapeExportPropertyFlags blendShapeExportProperties = BlendShapeExportPropertyFlags.All; + [SerializeField] + [Tooltip("(Experimental) Use Sparse Accessors for blend shape export. Not supported on some viewers.")] + private bool blendShapeExportSparseAccessors = true; + [SerializeField] + [Tooltip("If off, vertex colors are not exported. Vertex Colors aren't supported in some viewers (e.g. Google's SceneViewer).")] + private bool exportVertexColors = true; + + [Header("Export Cache")] + [Tooltip("When enabled textures will be cached to disc for faster export times.\n(The cache size is reduced to stay below 1024 MB when the Editor quits)")] + public bool UseCaching = true; + + public bool ExportNames { get => exportNames; set => exportNames = value; } + public bool ExportFullPath { get => exportFullPath; set => exportFullPath = value; } + public bool UseMainCameraVisibility { get => useMainCameraVisibility; set => useMainCameraVisibility = value; } + public bool RequireExtensions { get => requireExtensions; set => requireExtensions = value; } + public bool TryExportTexturesFromDisk { get => tryExportTexturesFromDisk; set => tryExportTexturesFromDisk = value; } + public bool UseTextureFileTypeHeuristic { get => useTextureFileTypeHeuristic; set => useTextureFileTypeHeuristic = value; } + public bool ExportVertexColors { get => exportVertexColors; set => exportVertexColors = value; } + public int DefaultJpegQuality { get => defaultJpegQuality; set => defaultJpegQuality = value; } + public bool ExportDisabledGameObjects { get => exportDisabledGameObjects; set => exportDisabledGameObjects = value; } + public bool ExportAnimations { get => exportAnimations; set => exportAnimations = value; } + public bool BakeAnimationSpeed { get => bakeAnimationSpeed; set => bakeAnimationSpeed = value; } + + [Obsolete("Add/remove \"AnimationPointerPlugin\" from ExportPlugins instead.")] + public bool UseAnimationPointer + { + get + { + return ExportPlugins?.Any(x => x is AnimationPointerExport && x.Enabled) ?? false; + } + set + { + var plugin = ExportPlugins?.FirstOrDefault(x => x is AnimationPointerExport); + if (plugin != null) + plugin.Enabled = value; + if (!value || plugin != null) return; + + if (ExportPlugins == null) ExportPlugins = new List(); + ExportPlugins.Add(CreateInstance()); +#if UNITY_EDITOR + EditorUtility.SetDirty(this); +#endif + } + } + public bool UniqueAnimationNames { get => uniqueAnimationNames; set => uniqueAnimationNames = value; } + public bool BlendShapeExportSparseAccessors { get => blendShapeExportSparseAccessors; set => blendShapeExportSparseAccessors = value; } + public BlendShapeExportPropertyFlags BlendShapeExportProperties { get => blendShapeExportProperties; set => blendShapeExportProperties = value; } + public bool BakeSkinnedMeshes { get => bakeSkinnedMeshes; set => bakeSkinnedMeshes = value; } + + +#if UNITY_EDITOR + private const string SaveFolderPathPref = k_PreferencesPrefix + "SaveFolderPath"; + public string SaveFolderPath + { + get => EditorPrefs.GetString(SaveFolderPathPref, null); + set => EditorPrefs.SetString(SaveFolderPathPref, value); + } +#endif + + public static GLTFSettings GetOrCreateSettings() + { + #if UNITY_EDITOR + var hadSettings = true; + #endif + if (!TryGetSettings(out var settings)) + { +#if UNITY_EDITOR + hadSettings = false; + settings = ScriptableObject.CreateInstance(); + settings.name = Path.GetFileNameWithoutExtension(k_RuntimeAndEditorSettingsPath); + var dir = Path.GetDirectoryName(k_RuntimeAndEditorSettingsPath); + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir!); + + // we can save it here, but we can't call AssetDatabase.CreateAsset as the importer will complain + UnityEditorInternal.InternalEditorUtility.SaveToSerializedFileAndForget(new UnityEngine.Object[] { settings }, k_RuntimeAndEditorSettingsPath, true); + + // so after import, we have to connect the cachedSettings again + EditorApplication.delayCall += () => + { + // Debug.Log("Deferred settings connection"); + AssetDatabase.Refresh(); + cachedSettings = null; + TryGetSettings(out var newSettings); + cachedSettings = newSettings; + }; +#else + settings = ScriptableObject.CreateInstance(); +#endif + } + + RegisterPlugins(settings); + +#if UNITY_EDITOR + // save again with plugins attached, if needed - the asset was only created in memory + if (!hadSettings && !AssetDatabase.Contains(settings)) + UnityEditorInternal.InternalEditorUtility.SaveToSerializedFileAndForget(new UnityEngine.Object[] { settings }, k_RuntimeAndEditorSettingsPath, true); +#endif + cachedSettings = settings; + return settings; + } + + public static GLTFSettings GetDefaultSettings() + { + var freshSettings = CreateInstance(); + RegisterPlugins(freshSettings); + return freshSettings; + } + + public static bool TryGetSettings(out GLTFSettings settings) + { + settings = cachedSettings; + if (settings) + return true; + + settings = Resources.Load(Path.GetFileNameWithoutExtension(k_SettingsFileName)); + +#if UNITY_EDITOR + if (!settings) + { + settings = AssetDatabase.LoadAssetAtPath(k_RuntimeAndEditorSettingsPath); + } + if (!settings) + { + var allSettings = AssetDatabase.FindAssets("t:GLTFSettings"); + if (allSettings.Length > 0) + { + settings = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(allSettings[0])); + } + } + cachedSettings = settings; + + return settings; +#else + return settings; +#endif + } + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] + private static void ClearStatics() + { + cachedSettings = null; + settingsWherePluginsAreRegistered.Clear(); + } + + private static GLTFSettings cachedSettings; + private static List settingsWherePluginsAreRegistered = new List(); + + private static void RegisterPlugins(GLTFSettings settings) + { + if (settingsWherePluginsAreRegistered.Contains(settings)) return; + + static List GetTypesDerivedFrom() + { +#if UNITY_EDITOR + return TypeCache.GetTypesDerivedFrom().ToList(); +#else + var types = new List(); + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + try + { + types.AddRange(assembly.GetTypes().Where(t => !(t is T) && typeof(T).IsAssignableFrom(t))); + } + catch (ReflectionTypeLoadException e) + { + types.AddRange(e.Types); + } + catch (Exception) + { + // ignored + } + } + return types; +#endif + } + + // Initialize + if (settings.ImportPlugins == null) settings.ImportPlugins = new List(); + if (settings.ExportPlugins == null) settings.ExportPlugins = new List(); + + // Cleanup + settings.ImportPlugins.RemoveAll(x => x == null); + settings.ExportPlugins.RemoveAll(x => x == null); + + void FindAndRegisterPlugins(List plugins) where T : GLTFPlugin + { + foreach (var pluginType in GetTypesDerivedFrom()) + { + if (pluginType.IsAbstract) continue; + if (plugins.Any(p => p != null && p.GetType() == pluginType)) + continue; + + if (typeof(ScriptableObject).IsAssignableFrom(pluginType)) + { + var newInstance = CreateInstance(pluginType) as T; + if (!newInstance) continue; + + newInstance.name = pluginType.Name; + newInstance.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + newInstance.Enabled = newInstance.EnabledByDefault; + + plugins.Add(newInstance); +#if UNITY_EDITOR + if (AssetDatabase.Contains(settings)) + { + AssetDatabase.AddObjectToAsset(newInstance, settings); + EditorUtility.SetDirty(settings); + } +#endif + } + } + } + + // Register with TypeCache + FindAndRegisterPlugins(settings.ImportPlugins); + FindAndRegisterPlugins(settings.ExportPlugins); + + settingsWherePluginsAreRegistered.Add(settings); + } + } +} diff --git a/Runtime/Scripts/GLTFSettings.cs.meta b/Runtime/Scripts/GLTFSettings.cs.meta new file mode 100644 index 000000000..e701272f4 --- /dev/null +++ b/Runtime/Scripts/GLTFSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d9a5969691dba845877d0a52b6d9397 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/InstantiatedGLTFObject.cs b/Runtime/Scripts/InstantiatedGLTFObject.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/InstantiatedGLTFObject.cs rename to Runtime/Scripts/InstantiatedGLTFObject.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/InstantiatedGLTFObject.cs.meta b/Runtime/Scripts/InstantiatedGLTFObject.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/InstantiatedGLTFObject.cs.meta rename to Runtime/Scripts/InstantiatedGLTFObject.cs.meta diff --git a/Runtime/Scripts/JsonPointer.meta b/Runtime/Scripts/JsonPointer.meta new file mode 100644 index 000000000..690e385e2 --- /dev/null +++ b/Runtime/Scripts/JsonPointer.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8b6a60ae7ada43ce81c9fe3d7d34cdb3 +timeCreated: 1651350262 \ No newline at end of file diff --git a/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs b/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs new file mode 100644 index 000000000..b53ebc70d --- /dev/null +++ b/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs @@ -0,0 +1,7 @@ +namespace UnityGLTF.JsonPointer +{ + public interface IJsonPointerResolver + { + bool TryResolve(object target, ref string path); + } +} diff --git a/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs.meta b/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs.meta new file mode 100644 index 000000000..992be1bae --- /dev/null +++ b/Runtime/Scripts/JsonPointer/IJsonPointerResolver.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8c60ec8461d64f80a335777129bdde18 +timeCreated: 1651350280 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader.meta b/Runtime/Scripts/Loader.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader.meta rename to Runtime/Scripts/Loader.meta diff --git a/Runtime/Scripts/Loader/FileLoader.cs b/Runtime/Scripts/Loader/FileLoader.cs new file mode 100644 index 000000000..b3397a48b --- /dev/null +++ b/Runtime/Scripts/Loader/FileLoader.cs @@ -0,0 +1,132 @@ +using System.IO; +using System; +using System.Threading.Tasks; +using UnityEngine; + +namespace UnityGLTF.Loader +{ + public class FileLoader : IDataLoader2 + { + private readonly string _rootDirectoryPath; + + public FileLoader(string rootDirectoryPath) + { + _rootDirectoryPath = rootDirectoryPath; + } + + public static string CombinePaths(string basePath, string relativePath) + { + basePath = basePath.Replace("\\", "/"); + relativePath = relativePath.Replace("\\", "/"); + + string[] baseParts = basePath.Split('/'); + string[] relativeParts = relativePath.Split('/'); + if (relativeParts.Length == 0) + { + return Path.Combine(basePath, relativePath); + } + + int baseIndex = baseParts.Length - 1; + int relativeIndex = 0; + + while (relativeIndex < relativeParts.Length) + { + if (relativeParts[relativeIndex] == "..") + { + if (baseIndex > 0) + { + baseIndex--; + } + else + { + relativeIndex++; + return string.Join("/", relativeParts, relativeIndex, relativeParts.Length - relativeIndex); + } + } + else + { + baseIndex++; + if (baseIndex > baseParts.Length - 1) + { + Array.Resize(ref baseParts, baseParts.Length + 1); + } + baseParts[baseIndex] = relativeParts[relativeIndex]; + } + + relativeIndex++; + } + + return string.Join("/", baseParts, 0, Mathf.Min( baseParts.Length,baseIndex+1)); + } + public Task LoadStreamAsync(string relativeFilePath) + { +#if UNITY_EDITOR + string path = CombinePaths(_rootDirectoryPath, relativeFilePath); + + if (!File.Exists(path)) + { + // Manual combine path with relativeFilePath + path = CombinePaths(_rootDirectoryPath, Uri.UnescapeDataString(relativeFilePath)).Replace("\\", "/"); + } + + if (UnityEditor.AssetDatabase.GetMainAssetTypeAtPath(path) == typeof(UnityEngine.Texture2D)) + { + var stream = new GLTFSceneImporter.AssetDatabaseStream(path); + return Task.FromResult((Stream)stream); + } +#endif + +#if !WINDOWS_UWP && !UNITY_WEBGL + // seems the Editor locks up in some cases when directly using Task.Run(() => {}) + if (UnityEngine.Application.isPlaying) + { + return Task.Run(() => LoadStream(relativeFilePath)); + } +#endif + return Task.FromResult(LoadStream(relativeFilePath)); + } + + public Stream LoadStream(string relativeFilePath) + { + if (relativeFilePath == null) + { + throw new ArgumentNullException(nameof(relativeFilePath)); + } + + if (File.Exists(relativeFilePath)) + return File.OpenRead(relativeFilePath); + + string pathToLoad = Path.Combine(_rootDirectoryPath, relativeFilePath); + if (!File.Exists(pathToLoad)) + { + pathToLoad = Path.Combine(_rootDirectoryPath, Uri.UnescapeDataString(relativeFilePath)); + } + + if (!File.Exists(pathToLoad)) + { + if (relativeFilePath.ToLowerInvariant().EndsWith(".bin")) + throw new FileNotFoundException("Buffer file " + relativeFilePath + " not found in " + _rootDirectoryPath + ", complete path: " + pathToLoad, relativeFilePath); + + // One exception here: we don't want to log an error if we're already knowing that the texture + // has been remapped on import - that's fine! A missing texture can be remapped to a valid one. + return new InvalidStream(relativeFilePath, _rootDirectoryPath, pathToLoad); + } + + return File.OpenRead(pathToLoad); + } + + internal class InvalidStream: MemoryStream + { + public readonly string RelativeFilePath; + public readonly string RootDirectory; + public readonly string AbsoluteFilePath; + + public InvalidStream(string relativeFilePath, string rootDirectory, string pathToLoad) + { + RelativeFilePath = relativeFilePath; + RootDirectory = rootDirectory; + AbsoluteFilePath = pathToLoad; + } + } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/FileLoader.cs.meta b/Runtime/Scripts/Loader/FileLoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/FileLoader.cs.meta rename to Runtime/Scripts/Loader/FileLoader.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader.cs b/Runtime/Scripts/Loader/IDataLoader.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader.cs rename to Runtime/Scripts/Loader/IDataLoader.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader.cs.meta b/Runtime/Scripts/Loader/IDataLoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader.cs.meta rename to Runtime/Scripts/Loader/IDataLoader.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader2.cs b/Runtime/Scripts/Loader/IDataLoader2.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader2.cs rename to Runtime/Scripts/Loader/IDataLoader2.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader2.cs.meta b/Runtime/Scripts/Loader/IDataLoader2.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/IDataLoader2.cs.meta rename to Runtime/Scripts/Loader/IDataLoader2.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/ILoader.cs b/Runtime/Scripts/Loader/ILoader.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/ILoader.cs rename to Runtime/Scripts/Loader/ILoader.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/ILoader.cs.meta b/Runtime/Scripts/Loader/ILoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/ILoader.cs.meta rename to Runtime/Scripts/Loader/ILoader.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs b/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs rename to Runtime/Scripts/Loader/LegacyLoaderWrapper.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs.meta b/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/LegacyLoaderWrapper.cs.meta rename to Runtime/Scripts/Loader/LegacyLoaderWrapper.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/StorageFolderLoader.cs b/Runtime/Scripts/Loader/StorageFolderLoader.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/StorageFolderLoader.cs rename to Runtime/Scripts/Loader/StorageFolderLoader.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/StorageFolderLoader.cs.meta b/Runtime/Scripts/Loader/StorageFolderLoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/StorageFolderLoader.cs.meta rename to Runtime/Scripts/Loader/StorageFolderLoader.cs.meta diff --git a/Runtime/Scripts/Loader/UnityWebRequestLoader.cs b/Runtime/Scripts/Loader/UnityWebRequestLoader.cs new file mode 100644 index 000000000..49c863b38 --- /dev/null +++ b/Runtime/Scripts/Loader/UnityWebRequestLoader.cs @@ -0,0 +1,97 @@ +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Networking; + +namespace UnityGLTF.Loader +{ + public class UnityWebRequestLoader : IDataLoader + { + private string dir; + + public UnityWebRequestLoader(string dir) + { + this.dir = dir; + } +#if UNITY_WEBREQUEST + public async Task LoadStreamAsync(string relativeFilePath) + { + var path = Path.Combine(dir, relativeFilePath).Replace("\\","/"); + if (File.Exists(path)) + path = "file://" + Path.GetFullPath(path); + var request = UnityWebRequest.Get(path); + // request.downloadHandler = new DownloadStreamHandler(new byte[1024 * 1024]); + var asyncOperation = request.SendWebRequest(); + + while (!asyncOperation.isDone) { + await Task.Yield(); + } + +#if UNITY_2020_1_OR_NEWER + if (request.result != UnityWebRequest.Result.Success) +#else + if (request.isNetworkError || request.isHttpError) +#endif + { + Debug.LogError($"Error when loading {relativeFilePath} ({path}): {request.error}"); + return null; + } + + var results = request.downloadHandler.data; + var stream = new MemoryStream(results, 0, results.Length, false, true); + return stream; + } +#else + public async Task LoadStreamAsync(string relativeFilePath) + { + await Task.CompletedTask; + throw new System.ApplicationException("The module com.unity.modules.unitywebrequest is required for this functionality. Please install it in your project."); + } +#endif + + // TODO: figure out how to do this correctly in a streaming fashion. + // private class DownloadStreamHandler : DownloadHandlerScript + // { + // private ulong expectedTotalBytes = 0; + // private Stream stream; + // public Stream GetStream() + // { + // return stream; + // } + // + // public DownloadStreamHandler(byte[] buffer) : base(buffer) + // { + // stream = new MemoryStream(buffer, true); + // } + // + // protected override bool ReceiveData(byte[] data, int dataLength) + // { + // if(data == null || data.Length < 1) + // { + // Debug.Log("LoggingDownloadHandler :: ReceiveData - received a null/empty buffer"); + // return false; + // } + // + // stream.Write(data, 0, dataLength); + // return true; + // } + // + // protected override byte[] GetData() + // { + // throw new System.NotSupportedException("This is a stream, can't get all bytes"); + // } + // + // protected override void CompleteContent() + // { + // Debug.Log("LoggingDownloadHandler :: CompleteContent - DOWNLOAD COMPLETE!"); + // } + // + // protected override void ReceiveContentLengthHeader(ulong contentLength) + // { + // Debug.Log(string.Format("LoggingDownloadHandler :: ReceiveContentLength - length {0}", contentLength)); + // expectedTotalBytes = contentLength; + // stream.SetLength((long) contentLength); + // } + // } + } +} diff --git a/Runtime/Scripts/Loader/UnityWebRequestLoader.cs.meta b/Runtime/Scripts/Loader/UnityWebRequestLoader.cs.meta new file mode 100644 index 000000000..c50e2e9da --- /dev/null +++ b/Runtime/Scripts/Loader/UnityWebRequestLoader.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f570680f27e849d59aeaa47194bfa5e4 +timeCreated: 1650878357 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/WebRequestLoader.cs b/Runtime/Scripts/Loader/WebRequestLoader.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/WebRequestLoader.cs rename to Runtime/Scripts/Loader/WebRequestLoader.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/WebRequestLoader.cs.meta b/Runtime/Scripts/Loader/WebRequestLoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/WebRequestLoader.cs.meta rename to Runtime/Scripts/Loader/WebRequestLoader.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/MemoryChecker.cs b/Runtime/Scripts/MemoryChecker.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/MemoryChecker.cs rename to Runtime/Scripts/MemoryChecker.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/MemoryChecker.cs.meta b/Runtime/Scripts/MemoryChecker.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/MemoryChecker.cs.meta rename to Runtime/Scripts/MemoryChecker.cs.meta diff --git a/Runtime/Scripts/Plugins.meta b/Runtime/Scripts/Plugins.meta new file mode 100644 index 000000000..d31f50af6 --- /dev/null +++ b/Runtime/Scripts/Plugins.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b0082405b7ab43c5ab6ace100b9b813c +timeCreated: 1680099849 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/AnimationPointerExport.cs b/Runtime/Scripts/Plugins/AnimationPointerExport.cs new file mode 100644 index 000000000..8569a2ff2 --- /dev/null +++ b/Runtime/Scripts/Plugins/AnimationPointerExport.cs @@ -0,0 +1,18 @@ +namespace UnityGLTF.Plugins +{ + public class AnimationPointerExport: GLTFExportPlugin + { + public override string DisplayName => "KHR_animation_pointer"; + public override string Description => "Animate arbitrary material and object properties. Without this extension, only node transforms and blend shape weights can be animated."; + public override bool EnabledByDefault => false; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new AnimationPointerExportContext(); + } + } + + public class AnimationPointerExportContext: GLTFExportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/AnimationPointerExport.cs.meta b/Runtime/Scripts/Plugins/AnimationPointerExport.cs.meta new file mode 100644 index 000000000..9c331ccec --- /dev/null +++ b/Runtime/Scripts/Plugins/AnimationPointerExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b6d87ebf60834245a388cd150253839d +timeCreated: 1703957422 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Core.meta b/Runtime/Scripts/Plugins/Core.meta new file mode 100644 index 000000000..845633404 --- /dev/null +++ b/Runtime/Scripts/Plugins/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0aa753fd433dc4cc4933f4b43459a873 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs new file mode 100644 index 000000000..b4e21227d --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs @@ -0,0 +1,27 @@ +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public abstract class GLTFExportPlugin: GLTFPlugin + { + /// + /// Return the Plugin Instance that receives the import callbacks + /// + public abstract GLTFExportPluginContext CreateInstance(ExportContext context); + } + + public abstract class GLTFExportPluginContext + { + public virtual void BeforeSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) {} + public virtual void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) {} + public virtual void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) {} + public virtual void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) {} + public virtual bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) => false; + public virtual void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) {} + public virtual void BeforeTextureExport(GLTFSceneExporter exporter, ref GLTFSceneExporter.UniqueTexture texture, string textureSlot) {} + public virtual void AfterTextureExport(GLTFSceneExporter exporter, GLTFSceneExporter.UniqueTexture texture, int index, GLTFTexture tex) {} + public virtual void AfterPrimitiveExport(GLTFSceneExporter exporter, Mesh mesh, MeshPrimitive primitive, int index) {} + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs.meta b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs.meta new file mode 100644 index 000000000..b227e704a --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfExportPlugin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 201693f491d641c3a7bf53d98828d59c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs new file mode 100644 index 000000000..54e86b8b5 --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs @@ -0,0 +1,65 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public abstract class GLTFImportPlugin : GLTFPlugin + { + /// + /// Return the Plugin Instance that receives the import callbacks + /// + public abstract GLTFImportPluginContext CreateInstance(GLTFImportContext context); + } + + /// + /// Instances are created during import once, they don't have to worry about clearing state + /// + public abstract class GLTFImportPluginContext + { + /// + /// Called before import starts + /// + public virtual void OnBeforeImport() + { + + } + + public virtual void OnBeforeImportRoot() + { + } + + /// + /// Called when the GltfRoot has been deserialized + /// + public virtual void OnAfterImportRoot(GLTFRoot gltfRoot) + { + + } + + public virtual void OnBeforeImportScene(GLTFScene scene) + { + } + + public virtual void OnAfterImportNode(Node node, int nodeIndex, GameObject nodeObject) + { + } + + public virtual void OnAfterImportMaterial(GLTFMaterial material, int materialIndex, Material materialObject) + { + } + + public virtual void OnAfterImportTexture(GLTFTexture texture, int textureIndex, Texture textureObject) + { + } + + public virtual void OnAfterImportScene(GLTFScene scene, int sceneIndex, GameObject sceneObject) + { + } + + public virtual void OnAfterImport() + { + + } + } +} diff --git a/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs.meta b/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs.meta new file mode 100644 index 000000000..c2e8bdb68 --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfImportPlugin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39aa6324e7624d7ea0267a95b9674acf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs new file mode 100644 index 000000000..5a5f38b9f --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs @@ -0,0 +1,61 @@ +using System; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + // When a plugin is registered with the default settings (the scriptable object in the project), + // it will be active "by default" when someone uses those default settings. + // e.g. it's used when someone uses the built-in editor methods for exporting objects. + // When using the API, one needs to manually register wanted plugins and configure them + // (can get the default settings and modify them). + + // Plugins can contain any number of extensions, but are encouraged to specify in the description + // which extensions are imported/exported with that plugin. + // Theoretically there could be multiple plugins operating on the same extension in different ways, in + // which case we currently can't warn about conflicts; they would all run. + // If plugins were required to list the extensions they operate on, we could warn about conflicts. + + // Plugins are ScriptableObjects which are added to the default GLTFSettings scriptable object. + // Their public serialized fields are exposed in the inspector, and they can be enabled/disabled. + // Plugins replace both GLTFSceneExporter.* static callbacks and GLTFSceneExporter.ExportOptions callbacks + // to allow for more control. + + // Example cases where separate plugins operate on the same data: + // - exporting UI as custom extension vs. baking UI to mesh + // - exporting Audio in a custom extension vs. using KHR_audio + // - exporting LODs as custom extension vs. using MSFT_lod + // - exporting particle systems as custom extension vs. baking to mesh + + // Plugins can either be added manually to ExportOptions.plugins / ImportContext.plugins + // or advertise themselves via a static callback which allows configuring their settings in the inspector. + // For each new instance of GLTFSceneExporter, new instances of plugins are created. + // For each new instance of GLTFSceneImporter, new instances of plugins are created. + + public abstract class GLTFPlugin: ScriptableObject + { + public abstract string DisplayName { get; } + public virtual string Description => null; + public virtual string HelpUrl => null; + public bool Enabled { get; set; } = true; + public virtual bool EnabledByDefault => true; + public virtual bool AlwaysEnabled => false; + public virtual string Warning => null; + [Obsolete("Use a custom Editor for this ScriptableObject instead if you want to override how it looks in the Inspector.")] + public virtual void OnGUI() { } + } + + [Obsolete("Use UnityGLTF.Plugins.GLTFPlugin instead. (UnityUpgradable) -> UnityGLTF.Plugins.GLTFPlugin")] + public abstract class GltfPlugin: ScriptableObject {} + + [Obsolete("Use UnityGLTF.Plugins.GLTFImportPlugin instead. (UnityUpgradable) -> UnityGLTF.Plugins.GLTFImportPlugin")] + public abstract class GltfImportPlugin: GltfPlugin {} + + [Obsolete("Use UnityGLTF.Plugins.GLTFExportPlugin instead. (UnityUpgradable) -> UnityGLTF.Plugins.GLTFExportPlugin")] + public abstract class GltfExportPlugin: GltfPlugin {} + + [Obsolete("Use UnityGLTF.Plugins.GLTFImportPluginContext instead. (UnityUpgradable) -> UnityGLTF.Plugins.GLTFImportPluginContext")] + public abstract class GltfImportPluginContext {} + + [Obsolete("Use UnityGLTF.Plugins.GLTFExportPluginContext instead. (UnityUpgradable) -> UnityGLTF.Plugins.GLTFExportPluginContext")] + public abstract class GltfExportPluginContext {} +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Core/GltfPlugin.cs.meta b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs.meta new file mode 100644 index 000000000..61fa185bc --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/GltfPlugin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: faaa3712025f4258a16c9afa9e8d1fc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Core/ImportContext.cs b/Runtime/Scripts/Plugins/Core/ImportContext.cs new file mode 100644 index 000000000..e1198b483 --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/ImportContext.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEditor; + +#if UNITY_EDITOR +using UnityEditor.AssetImporters; +#endif + +namespace UnityGLTF.Plugins +{ + public class GLTFImportContext + { +#if UNITY_EDITOR + public readonly AssetImportContext AssetContext; + public string FilePath => AssetContext?.assetPath; + public readonly AssetImporter SourceImporter; + public float ImportScaleFactor = 1.0f; +#endif + + public readonly List Plugins; + + public GLTFSceneImporter SceneImporter; + public GLTFRoot Root => SceneImporter?.Root; + + private List InitializePlugins(GLTFSettings settings) + { + var plugins = new List(); + foreach (var plugin in settings.ImportPlugins) + { + if (plugin != null && plugin.Enabled) + { + var instance = plugin.CreateInstance(this); + if (instance != null) plugins.Add(instance); + } + } + + return plugins; + } + +#if UNITY_EDITOR + internal GLTFImportContext(AssetImportContext assetImportContext, GLTFSettings settings) + { + AssetContext = assetImportContext; + if (assetImportContext != null) + SourceImporter = AssetImporter.GetAtPath(assetImportContext.assetPath); + + Plugins = InitializePlugins(settings); + } +#endif + internal GLTFImportContext(GLTFSettings settings) + { + Plugins = InitializePlugins(settings); + } + + public bool TryGetPlugin(out GLTFImportPluginContext o) where T: GLTFImportPluginContext + { + foreach (var plugin in Plugins) + { + if (plugin is T t) + { + o = t; + return true; + } + } + + o = null; + return false; + } + } +} diff --git a/Runtime/Scripts/Plugins/Core/ImportContext.cs.meta b/Runtime/Scripts/Plugins/Core/ImportContext.cs.meta new file mode 100644 index 000000000..f78ce2675 --- /dev/null +++ b/Runtime/Scripts/Plugins/Core/ImportContext.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3497775620ef4c43ac76fe78a742ca2a +timeCreated: 1680100208 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/DracoImport.cs b/Runtime/Scripts/Plugins/DracoImport.cs new file mode 100644 index 000000000..ef014fa29 --- /dev/null +++ b/Runtime/Scripts/Plugins/DracoImport.cs @@ -0,0 +1,21 @@ +namespace UnityGLTF.Plugins +{ + public class DracoImport: GLTFImportPlugin + { + public override string DisplayName => "KHR_draco_mesh_compression"; + public override string Description => "Import Draco compressed meshes."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new DracoImportContext(); + } + +#if !HAVE_DRACO + public override string Warning => "Add the package \"com.unity.cloud.draco\" to your project for Draco mesh compression support."; +#endif + } + + public class DracoImportContext: GLTFImportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/DracoImport.cs.meta b/Runtime/Scripts/Plugins/DracoImport.cs.meta new file mode 100644 index 000000000..01dd4c935 --- /dev/null +++ b/Runtime/Scripts/Plugins/DracoImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7dca6a7cdc544a17b19918041bc59d14 +timeCreated: 1703892466 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental.meta b/Runtime/Scripts/Plugins/Experimental.meta new file mode 100644 index 000000000..3445fa43e --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3abd74a78266947acb96ee4c1b7ff93c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs new file mode 100644 index 000000000..9930201a8 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public class BakeParticleSystem: GLTFExportPlugin + { + public override string DisplayName => "Bake to Mesh: Particle Systems"; + public override string Description => "Exports the current frame of all Particle Systems as a static mesh."; + public override bool EnabledByDefault => false; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new BakeParticleSystemContext(); + } + } + + public class BakeParticleSystemContext: GLTFExportPluginContext + { + private readonly List _components = new List(); + private readonly List _objects = new List(); + + public override void BeforeNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) + { + var particleSystem = transform.GetComponent(); + if (!particleSystem) return; + + // emit MeshFilter/MeshRenderer, and destroy them again after the scene has been exported + var mf = transform.gameObject.AddComponent(); + var mr = transform.gameObject.AddComponent(); + + var m = new Mesh(); + var p = transform.GetComponent(); + + var previousSortMode = p.sortMode; + if (p.sortMode == ParticleSystemSortMode.None) + p.sortMode = ParticleSystemSortMode.Distance; + + p.BakeMesh(m, Camera.main, true); + mf.sharedMesh = m; + mr.sharedMaterial = p.sharedMaterial; + p.sortMode = previousSortMode; + + _components.Add(mf); + _components.Add(mr); + _objects.Add(m); + } + + public override void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) + { + foreach (var c in _components) + SafeDestroy(c); + foreach (var o in _objects) + SafeDestroy(o); + _components.Clear(); + _objects.Clear(); + } + + private static void SafeDestroy(Object o) + { + if (!o) return; + if (Application.isPlaying) + Object.Destroy(o); + else + Object.DestroyImmediate(o); + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs.meta b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs.meta new file mode 100644 index 000000000..8812f1fdd --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/BakeParticleSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c85d7bc6d6ea44f46b33f0a3a2e09283 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs new file mode 100644 index 000000000..0dc9b4abd --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; +using System.Reflection; +using GLTF.Schema; +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; + +namespace UnityGLTF.Plugins +{ + public class CanvasExport : GLTFExportPlugin + { + public override string DisplayName => "Bake to Mesh: Canvas"; + public override string Description => "Bakes UI Canvas components to meshes and materials. Render order is estimated by slight transform offsets; results might differ in viewers depending on how transparent objects are sorted."; + public override bool EnabledByDefault => false; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new CanvasExportContext(); + } + } + + public class CanvasExportContext: GLTFExportPluginContext + { + private static Shader shader; + + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot root, Transform transform, Node node) + { + // emit mesh and material if this is a Graphic element in a Canvas that's not disabled + if (!shader) + { + shader = Shader.Find("Hidden/UnityGLTF/UnlitGraph-Transparent"); +#if UNITY_EDITOR + if (!shader) shader = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("83f2caca07949794fb997734c4b0520f")); +#endif + } + + var g = transform; + + // force refresh + var r = transform.GetComponent(); + if (r) r.GetType().GetMethod("RequestRefresh", (BindingFlags)(-1)).Invoke(r, null); + + var canvas = g.GetComponent() ? g.GetComponent().canvas : null; + var canvasRect = canvas ? canvas.GetComponent().rect : new Rect(0,0,1000,1000); + var cap = default(CanvasExportCaptureMeshHelper); + if (canvas && !g.gameObject.TryGetComponent(out cap)) + cap = g.gameObject.AddComponent(); + + if (cap) + { + cap.hideFlags = HideFlags.DontSave; + + var gotMeshAndMaterial = cap.GetMeshAndMaterial(out var mesh, out var material, shader); + + if (gotMeshAndMaterial) + { + var uniquePrimitives = new List(); + uniquePrimitives.Add(new GLTFSceneExporter.UniquePrimitive() + { + Mesh = mesh, + SkinnedMeshRenderer = null, + Materials = new [] { material }, + }); + node.Mesh = exporter.ExportMesh(transform.name, uniquePrimitives); + var t = node.Translation; + t.Z += -canvasRect.width * 0.005f; // heuristic for avoiding Z-fighting, might need to be exposed later + node.Translation = t; + // exporter.RegisterPrimitivesWithNode(node, uniquePrimitives); + } + + if (Application.isPlaying) Object.Destroy(cap); + else Object.DestroyImmediate(cap); + } + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs.meta b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs.meta new file mode 100644 index 000000000..c85ce6cae --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3d9fe28b7eb945fd891714c55c74f44b +timeCreated: 1664451353 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs new file mode 100644 index 000000000..2157f8037 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs @@ -0,0 +1,107 @@ +#if HAVE_TMPRO +using TMPro; +#endif +using UnityEngine; +using UnityEngine.UI; + +namespace UnityGLTF.Plugins +{ + [AddComponentMenu("")] + internal class CanvasExportCaptureMeshHelper : MonoBehaviour, IMeshModifier + { + private Mesh mesh; + + public void ModifyMesh(Mesh mesh) + { + // legacy, ignore + } + + public void ModifyMesh(VertexHelper verts) + { + if (!mesh) + { + mesh = new Mesh(); + mesh.hideFlags = HideFlags.DontSave; + } + + verts.FillMesh(mesh); + } + + public bool GetMeshAndMaterial(out Mesh mesh, out Material material, Shader shader) + { + var g = GetComponent(); + if (!g) + { + mesh = null; + material = null; + return false; + } + + g.Rebuild(CanvasUpdate.PreRender); + + mesh = this.mesh; + + material = default(Material); + + bool hasTMPro = false; +#if HAVE_TMPRO + var tmPro = GetComponent(); + hasTMPro = tmPro != null; + if (hasTMPro) + { + mesh = tmPro.mesh; + material = tmPro.fontSharedMaterial; + } +#endif + if (!material) material = new Material(shader); + + if (!hasTMPro) + { + var mat = material; + mat.hideFlags = HideFlags.DontSave; + var tex = g.mainTexture; + + if (tex) + { + if (mat.HasProperty("baseColorTexture")) + mat.SetTexture("baseColorTexture", tex); + else if (mat.HasProperty("_MainTex")) + mat.SetTexture("_MainTex", tex); + } + + var col = g.color; + if (mat.HasProperty("baseColorFactor")) + mat.SetColor("baseColorFactor", col); + else if (mat.HasProperty("_Color")) + mat.SetColor("_Color", col); + + if (mat.HasProperty("alphaCutoff")) + mat.SetFloat("alphaCutoff", 0); + } + + return mesh && material; + } + + public void CaptureTo(Transform root, GameObject shadow, Shader shader) + { + var g = GetComponent(); + var cr = g.GetComponent(); + if (!g || !g.enabled || cr.cull) + { + mesh = null; + return; + } + + if (!shadow.TryGetComponent(out var mf)) + mf = shadow.AddComponent(); + + if (!shadow.TryGetComponent(out var mr)) + mr = shadow.AddComponent(); + + GetMeshAndMaterial(out mesh, out var material, shader); + + mf.sharedMesh = mesh; + mr.sharedMaterial = material; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs.meta b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs.meta new file mode 100644 index 000000000..f050be3f3 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/CanvasExportCaptureMeshHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74f17c23d26fc3f469ad0bb0f2ff2237 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/Invisible.mat b/Runtime/Scripts/Plugins/Experimental/Invisible.mat new file mode 100644 index 000000000..c78d50ac9 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/Invisible.mat @@ -0,0 +1,134 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Invisible + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 1 + - _AlphaToMask: 1 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &3497001849558236530 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Runtime/Scripts/Plugins/Experimental/Invisible.mat.meta b/Runtime/Scripts/Plugins/Experimental/Invisible.mat.meta new file mode 100644 index 000000000..29c1a6352 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/Invisible.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fd675a64a0d669448460be9768e61ab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs b/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs new file mode 100644 index 000000000..fe977fa75 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF.Plugins +{ + // https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_variants/README.md + public class MaterialVariants : MonoBehaviour + { + public Material invisibleMaterial; + + [Serializable] + public class Variant + { + [Serializable] + public class MaterialSet + { + public Transform transform; + public Material[] sharedMaterials; + } + + public string name; + public List activeSets; + } + + public List variants; + } + +#if UNITY_EDITOR + [CustomPropertyDrawer(typeof(MaterialVariants.Variant))] + public class VariantDrawer : PropertyDrawer + { + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, label, true) + 20; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var rect = position; + rect.height = 20; + if (GUI.Button(rect, new GUIContent("Collect active transforms", "Only transforms that are active in the hierarchy and have both a MeshRenderer and MeshFilter are collected."))) + { + var variants = (MaterialVariants) property.serializedObject.targetObject; + if (variants) CollectVariantsFor(variants, property.propertyPath); + } + + position.yMin += 20; + EditorGUI.PropertyField(position, property, label, true); + } + + private void CollectVariantsFor(MaterialVariants v, string propertyPropertyPath) + { + var index = propertyPropertyPath.IndexOf("[", StringComparison.Ordinal); + var endIndex = propertyPropertyPath.IndexOf("]", StringComparison.Ordinal); + var arrayIndexString = propertyPropertyPath.Substring(index + 1, endIndex - index - 1); + if (!int.TryParse(arrayIndexString, out var arrayIndex)) return; + + var variant = v.variants[arrayIndex]; + Undo.RegisterCompleteObjectUndo(v, $"Collect Variants for [{arrayIndex}]"); + variant.activeSets = v.GetComponentsInChildren() + .Where(x => x.gameObject.activeInHierarchy) + .Where(x => x.GetComponent() && x.GetComponent()) + .Select(x => new MaterialVariants.Variant.MaterialSet() + { + transform = x, + sharedMaterials = x.GetComponent().sharedMaterials, + }) + .ToList(); + EditorUtility.SetDirty(v); + } + } + +#endif +} diff --git a/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs.meta b/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs.meta new file mode 100644 index 000000000..4e5a7a529 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/MaterialVariants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bda4e310a4dae1642ae372dca6c294a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs b/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs new file mode 100644 index 000000000..5bf7fa084 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs @@ -0,0 +1,191 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GLTF.Schema; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public class MaterialVariantsPlugin: GLTFExportPlugin + { + public override string DisplayName => "KHR_materials_variants"; + public override string Description => "Allows exporting multiple material and object variants in one glTF file. Viewers implementing KHR_materials_variants typically allow choosing which variants to display. Disabled objects are emulated with an \"invisible\" material."; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new KHR_materials_variants_context(); + } + } + + public class KHR_materials_variants_context : GLTFExportPluginContext + { + public override void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfroot) + { + if (exporter.RootTransforms == null) return; + var variantContainer = exporter.RootTransforms + .FirstOrDefault(x => x.GetComponentInChildren())? + .GetComponent(); + if (!variantContainer) return; + + exporter.DeclareExtensionUsage(KHR_materials_variants.EXTENSION_NAME); + gltfroot.AddExtension(KHR_materials_variants.EXTENSION_NAME, new KHR_materials_variants_root() + { + variantNames = variantContainer.variants.Select(x => x.name).ToArray() + }); + + // add invisible material + exporter.ExportMaterial(variantContainer.invisibleMaterial); + + var allNodes = variantContainer.variants.SelectMany(x => x.activeSets).Distinct().ToList(); + + Dictionary invisibleMap = new Dictionary(); + + foreach (var variant in variantContainer.variants) + foreach (var nodeSet in variant.activeSets) + { + Debug.Log(variant.name + ": " + nodeSet.transform); + + var node = nodeSet.transform; + var meshFilter = node.GetComponent(); + var meshRenderer = node.GetComponent(); + if (!meshFilter || !meshRenderer) continue; + var mesh = meshFilter.sharedMesh; + if (!mesh) continue; + + var materials = nodeSet.sharedMaterials; + + foreach (var (subMeshIndex, prim) in exporter.GetPrimitivesForMesh(mesh)) + { + if (prim.Extensions == null) prim.Extensions = new Dictionary(); + if (!prim.Extensions.ContainsKey(KHR_materials_variants.EXTENSION_NAME)) + prim.Extensions.Add(KHR_materials_variants.EXTENSION_NAME, new KHR_materials_variants(exporter)); + + var variants = (KHR_materials_variants) prim.Extensions[KHR_materials_variants.EXTENSION_NAME]; + var exportMaterial = materials[subMeshIndex % materials.Length]; + // export if that hasn't happened yet + exporter.ExportMaterial(exportMaterial); + + var visibleVariantIndices = new List(); + var invisibleVariantIndices = new List(); + + for (var i = 0; i < variantContainer.variants.Count; i++) + { + var set = variantContainer.variants[i].activeSets; + var nodeIsInVariant = set.FirstOrDefault(x => x.transform == node && x.sharedMaterials[subMeshIndex] == exportMaterial) != null; + if (nodeIsInVariant) visibleVariantIndices.Add(i); + var nodeIsNotInAnyVariant = set.FirstOrDefault(x => x.transform == node) == null; + if (nodeIsNotInAnyVariant) invisibleVariantIndices.Add(i); + } + + variants.mappings.Add(new KHR_materials_variants.MappingVariant() + { + material = exportMaterial, + variantIndices = visibleVariantIndices.ToArray(), + }); + + if (!invisibleMap.ContainsKey(variants)) + { + var invisibleVariant = new KHR_materials_variants.MappingVariant() + { + material = variantContainer.invisibleMaterial, + variantIndices = invisibleVariantIndices.ToArray(), + }; + variants.mappings.Add(invisibleVariant); + invisibleMap.Add(variants, invisibleVariant); + } + + Debug.Log(variant.name + ": " + nodeSet.transform + " has ext: " + string.Join(", ", prim.Extensions.Keys)+ "; " + string.Join(", ", variants.mappings)); + } + } + } + } + + /* + * "variants": [ + {"name": "Yellow Sneaker" }, + {"name": "Red Sneaker" }, + {"name": "Black Sneaker" }, + {"name": "Orange Sneaker" }, + ] + */ + [Serializable] + public class KHR_materials_variants_root : IExtension + { + public string[] variantNames; + + public JProperty Serialize() + { + JProperty jProperty = new JProperty(KHR_materials_variants.EXTENSION_NAME, + new JObject( + new JProperty("variants", + new JArray(variantNames.Select(x => new JObject(new JProperty("name", x))))))); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_variants_root() { variantNames = variantNames }; + } + } + + /* + * "KHR_materials_variants" : { + "mappings": [ + { + "material": 2, + "variants": [0, 3], + }, + { + "material": 4, + "variants": [1], + }, + { + "material": 5, + "variants": [2], + }, + ], + } + */ + [Serializable] + public class KHR_materials_variants : IExtension + { + public const string EXTENSION_NAME = nameof(KHR_materials_variants); + private GLTFSceneExporter exporter; + + public KHR_materials_variants(GLTFSceneExporter exporter) + { + this.exporter = exporter; + } + + [Serializable] + public class MappingVariant + { + public Material material; + public int[] variantIndices; + + public override string ToString() + { + return $"{material} [{string.Join(",", variantIndices)}]"; + } + } + + public List mappings = new List(); + + public JProperty Serialize() + { + JProperty jProperty = new JProperty(KHR_materials_variants.EXTENSION_NAME, + new JObject( + new JProperty("mappings", + new JArray(mappings.Select(x => new JObject(new JProperty("material", exporter.GetMaterialIndex(x.material)), new JProperty("variants", x.variantIndices))))))); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_materials_variants(exporter) + { + mappings = mappings.Select(x => new MappingVariant() { material = x.material, variantIndices = x.variantIndices.ToArray() }).ToList(), + }; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs.meta b/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs.meta new file mode 100644 index 000000000..490a6f1c2 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/MaterialVariantsPlugin.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5066402b4fbd41e79ab3d7023cca96c5 +timeCreated: 1703886219 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs new file mode 100644 index 000000000..817a69b47 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs @@ -0,0 +1,93 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Extensions; + +namespace UnityGLTF.Plugins +{ + public class TextMeshGameObjectExport : GLTFExportPlugin + { + public override string DisplayName => "Bake to Mesh: TextMeshPro GameObjects"; + public override string Description => "Bakes 3D TextMeshPro objects (not UI/Canvas) into meshes and attempts to faithfully apply their shader settings to generate the font texture."; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { +#if HAVE_TMPRO + return new TextMeshExportContext(); +#else + return null; +#endif + } + +#if !HAVE_TMPRO + public override string Warning => "TextMeshPro is not installed. Please install TextMeshPro from the Package Manager to use this plugin."; +#endif + } + + public class TextMeshExportContext: GLTFExportPluginContext + { + public override void AfterSceneExport(GLTFSceneExporter _, GLTFRoot __) + { + RenderTexture.active = null; + if (rtCache == null) return; + foreach (var kvp in rtCache) + kvp.Value.Release(); + rtCache.Clear(); + } + + private Material tempMat; + private Dictionary rtCache; + + public override bool BeforeMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Material material, GLTFMaterial materialNode) + { + if (material.shader.name.Contains("TextMeshPro")) // seems to only work for TextMeshPro/Mobile/ right now (SDFAA_HINTED?) + { + var s = material.shader; + // TODO figure out how to properly use the non-mobile shaders + var newS = Shader.Find("TextMeshPro/Mobile/Distance Field"); +#if UNITY_EDITOR + if (!newS) + { + newS = UnityEditor.AssetDatabase.LoadAssetAtPath(UnityEditor.AssetDatabase.GUIDToAssetPath("fe393ace9b354375a9cb14cdbbc28be4")); // same as above + } +#endif + material.shader = newS; + + if (!tempMat) tempMat = new Material(Shader.Find("Unlit/Transparent Cutout")); + + var existingTex = material.mainTexture; + if (rtCache == null) rtCache = new Dictionary(); + if (!rtCache.ContainsKey(existingTex)) + { + var rt = new RenderTexture(existingTex.width, existingTex.height, 0, RenderTextureFormat.ARGB32); + if (material.HasProperty("_OutlineSoftness")) + material.SetFloat("_OutlineSoftness", 0); + // TODO figure out how to get this more smooth + Graphics.Blit(existingTex, rt, material); + rtCache[existingTex] = rt; + rt.anisoLevel = 9; + rt.filterMode = FilterMode.Bilinear; + } + + tempMat.mainTexture = rtCache[existingTex]; + + + exporter.ExportUnlit(materialNode, tempMat); + + // export material + // alternative: double sided, alpha clipping, white RGB + TMPro mainTex R channel as alpha + materialNode.DoubleSided = false; + materialNode.PbrMetallicRoughness.BaseColorFactor = Color.white.ToNumericsColorLinear(); + materialNode.AlphaMode = AlphaMode.BLEND; + + material.shader = s; +#if UNITY_EDITOR && UNITY_2019_3_OR_NEWER + UnityEditor.EditorUtility.ClearDirty(material); +#endif + + return true; + } + + return false; + } + } +} diff --git a/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs.meta b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs.meta new file mode 100644 index 000000000..594aebe5d --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/TextMeshGameObjectExport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5dd4c08c7d6d71f4ca7d83fb653d4f9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef new file mode 100644 index 000000000..8efde89f1 --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef @@ -0,0 +1,31 @@ +{ + "name": "UnityGLTF.Plugins.Experimental", + "rootNamespace": "", + "references": [ + "GUID:6055be8ebefd69e48b49212b09b47b2f", + "GUID:18d18f811ba286c49814567a3cfba688", + "GUID:40f39bff7bc9be34182ebe488fcf8228" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "Newtonsoft.Json.dll" + ], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.textmeshpro", + "expression": "", + "define": "HAVE_TMPRO" + }, + { + "name": "com.unity.ugui", + "expression": "2.0.0", + "define": "HAVE_TMPRO" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef.meta b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef.meta new file mode 100644 index 000000000..f12588adf --- /dev/null +++ b/Runtime/Scripts/Plugins/Experimental/UnityGLTF.Plugins.Experimental.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 78eed79366eb2824c853b25847bba69b +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/Ktx2Import.cs b/Runtime/Scripts/Plugins/Ktx2Import.cs new file mode 100644 index 000000000..7309bae7e --- /dev/null +++ b/Runtime/Scripts/Plugins/Ktx2Import.cs @@ -0,0 +1,21 @@ +namespace UnityGLTF.Plugins +{ + public class Ktx2Import: GLTFImportPlugin + { + public override string DisplayName => "KHR_texture_basisu"; + public override string Description => "Import textures using the KTX2 supercompression format (ETC1S, UASTC)."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new Ktx2ImportContext(); + } + +#if !HAVE_KTX + public override string Warning => "Add the package \"com.unity.cloud.ktx\" version v1.3+ to your project for KTX2 texture support."; +#endif + } + + public class Ktx2ImportContext: GLTFImportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/Ktx2Import.cs.meta b/Runtime/Scripts/Plugins/Ktx2Import.cs.meta new file mode 100644 index 000000000..1e06b1b1f --- /dev/null +++ b/Runtime/Scripts/Plugins/Ktx2Import.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 969cbb3ac6864c2f9e49e468eef2744c +timeCreated: 1703892479 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LightsPunctualExport.cs b/Runtime/Scripts/Plugins/LightsPunctualExport.cs new file mode 100644 index 000000000..3c1e1d0f5 --- /dev/null +++ b/Runtime/Scripts/Plugins/LightsPunctualExport.cs @@ -0,0 +1,23 @@ +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public class LightsPunctualExport: GLTFExportPlugin + { + public override string DisplayName => "KHR_lights_punctual"; + public override string Description => "Exports punctual lights (directional, point, spot)."; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new LightsPunctualExportContext(); + } + } + + public class LightsPunctualExportContext: GLTFExportPluginContext + { + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) + { + base.AfterNodeExport(exporter, gltfRoot, transform, node); + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LightsPunctualExport.cs.meta b/Runtime/Scripts/Plugins/LightsPunctualExport.cs.meta new file mode 100644 index 000000000..3083ab67f --- /dev/null +++ b/Runtime/Scripts/Plugins/LightsPunctualExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3579a4c311b8427f81a0c1a29e9acfe8 +timeCreated: 1703975022 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LightsPunctualImport.cs b/Runtime/Scripts/Plugins/LightsPunctualImport.cs new file mode 100644 index 000000000..700b8ab81 --- /dev/null +++ b/Runtime/Scripts/Plugins/LightsPunctualImport.cs @@ -0,0 +1,17 @@ +namespace UnityGLTF.Plugins +{ + public class LightsPunctualImport: GLTFImportPlugin + { + public override string DisplayName => "KHR_lights_punctual"; + public override string Description => "Imports punctual lights (directional, point, spot)."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new LightsPunctualImportContext(); + } + } + + public class LightsPunctualImportContext: GLTFImportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LightsPunctualImport.cs.meta b/Runtime/Scripts/Plugins/LightsPunctualImport.cs.meta new file mode 100644 index 000000000..7382acb0c --- /dev/null +++ b/Runtime/Scripts/Plugins/LightsPunctualImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d48839dd2db84f9f94ec4e3bb77e9f9e +timeCreated: 1703892336 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LodsExport.cs b/Runtime/Scripts/Plugins/LodsExport.cs new file mode 100644 index 000000000..2b525e6d3 --- /dev/null +++ b/Runtime/Scripts/Plugins/LodsExport.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.Linq; +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public class LodsExport : GLTFExportPlugin + { + public override string DisplayName => "MSFT_lod"; + public override string Description => "Exports LODGroup components as MSFT_lod extension."; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new MSFT_lods_Extension(); + } + } + + public class MSFT_lods_Extension: GLTFExportPluginContext + { + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfroot, Transform transform, Node node) + { + if (!transform) return; + + var lodGroup = transform.GetComponent(); + if (!lodGroup) return; + + var lods = lodGroup.GetLODs(); + var usesCulling = lods[lods.Length - 1].renderers.Length == 0; + var nodeIds = new int[lods.Length - 1 - (usesCulling ? 1 : 0)]; + var coverages = new float[nodeIds.Length + 1]; + for (var index = 0; index < nodeIds.Length; index++) + { + var lod = lods[index + 1]; + + // TODO multiple renderers could be supported if the user ensures + // that all renderers in a LOD level are child of one node – then we could export that node's ID + if (lod.renderers.Length != 1) + { + Debug.LogWarning("Can't export LODGroup with MSFT_lods with more than one renderer per LOD level. Skipping", lodGroup); + return; + } + var meshFilter = lod.renderers[0].GetComponent(); + if (!meshFilter) + { + Debug.LogWarning("At least one renderer in LODGroup doesn't have a mesh. Skipping", lodGroup); + return; + } + + nodeIds[index] = exporter.ExportNode(lod.renderers[0].gameObject).Id; + coverages[index] = lod.screenRelativeTransitionHeight; + } + // if (usesCulling) coverages[coverages.Length - 1] = 0; + + // TODO implement coverage export too + var ext = new MSFT_LODExtension(nodeIds.ToList()); + // var coverageExt = new MSFT_LODExtension(coverages.ToList()); + // for (int i = 0; i < ext.Hints.Length; i++) + // { + // ext.Hints[i] = new MSFT_lodsHint(); + // ext.Hints[i].ScreenCoverage = lodGroup.GetLODs()[i].screenRelativeTransitionHeight; + // } + + // TODO according to the MSFT_lod docs, nodes should be kicked out of the scene again + // to ensure that softwares that can't read MSFT_lods don't render them. + + if (node.Extensions == null) node.Extensions = new Dictionary(); + node.Extensions.Add(MSFT_LODExtensionFactory.EXTENSION_NAME, ext); + exporter.DeclareExtensionUsage(MSFT_LODExtensionFactory.EXTENSION_NAME, false); + } + } +} diff --git a/Runtime/Scripts/Plugins/LodsExport.cs.meta b/Runtime/Scripts/Plugins/LodsExport.cs.meta new file mode 100644 index 000000000..8ad014642 --- /dev/null +++ b/Runtime/Scripts/Plugins/LodsExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e63c00ddf0924f0c8bd05f7f16935dfe +timeCreated: 1675934327 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LodsImport.cs b/Runtime/Scripts/Plugins/LodsImport.cs new file mode 100644 index 000000000..068dddcbb --- /dev/null +++ b/Runtime/Scripts/Plugins/LodsImport.cs @@ -0,0 +1,17 @@ +namespace UnityGLTF.Plugins +{ + public class LodsImport: GLTFImportPlugin + { + public override string DisplayName => "MSFT_lod"; + public override string Description => "Creates LODGroups from glTF LODs."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new LodsImportContext(); + } + } + + public class LodsImportContext: GLTFImportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/LodsImport.cs.meta b/Runtime/Scripts/Plugins/LodsImport.cs.meta new file mode 100644 index 000000000..a9032203b --- /dev/null +++ b/Runtime/Scripts/Plugins/LodsImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2239c10507484fb78bb19067a66500f2 +timeCreated: 1703892396 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs new file mode 100644 index 000000000..f3da69b35 --- /dev/null +++ b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs @@ -0,0 +1,225 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Extensions; + +namespace UnityGLTF.Plugins +{ + public class MaterialExtensionsExport: GLTFExportPlugin + { + public bool KHR_materials_ior = true; + public bool KHR_materials_transmission = true; + public bool KHR_materials_volume = true; + public bool KHR_materials_iridescence = true; + public bool KHR_materials_specular = true; + public bool KHR_materials_clearcoat = true; + public bool KHR_materials_emissive_strength = true; + + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new MaterialExtensionsExportContext(this); + } + + public override string DisplayName => "KHR_materials_* PBR Next Extensions"; + public override string Description => + @"Exports various glTF PBR Material model extensions. Supported extensions: +- KHR_materials_ior +- KHR_materials_transmission +- KHR_materials_volume +- KHR_materials_iridescence +- KHR_materials_specular +- KHR_materials_clearcoat +- KHR_materials_emissive_strength +"; + } + + public class MaterialExtensionsExportContext: GLTFExportPluginContext + { + internal readonly MaterialExtensionsExport settings; + + public MaterialExtensionsExportContext(MaterialExtensionsExport settings) + { + this.settings = settings; + } + + private static readonly int thicknessTexture = Shader.PropertyToID("thicknessTexture"); + private static readonly int thicknessFactor = Shader.PropertyToID("thicknessFactor"); + private static readonly int attenuationDistance = Shader.PropertyToID("attenuationDistance"); + private static readonly int attenuationColor = Shader.PropertyToID("attenuationColor"); + private static readonly int ior = Shader.PropertyToID("ior"); + private static readonly int transmissionFactor = Shader.PropertyToID("transmissionFactor"); + private static readonly int transmissionTexture = Shader.PropertyToID("transmissionTexture"); + + private static readonly int iridescenceFactor = Shader.PropertyToID("iridescenceFactor"); + private static readonly int iridescenceIor = Shader.PropertyToID("iridescenceIor"); + private static readonly int iridescenceThicknessMinimum = Shader.PropertyToID("iridescenceThicknessMinimum"); + private static readonly int iridescenceThicknessMaximum = Shader.PropertyToID("iridescenceThicknessMaximum"); + private static readonly int iridescenceTexture = Shader.PropertyToID("iridescenceTexture"); + private static readonly int iridescenceThicknessTexture = Shader.PropertyToID("iridescenceThicknessTexture"); + + private static readonly int specularFactor = Shader.PropertyToID("specularFactor"); + private static readonly int specularColorFactor = Shader.PropertyToID("specularColorFactor"); + private static readonly int specularTexture = Shader.PropertyToID("specularTexture"); + private static readonly int specularColorTexture = Shader.PropertyToID("specularColorTexture"); + + private static readonly int clearcoatFactor = Shader.PropertyToID("clearcoatFactor"); + private static readonly int clearcoatTexture = Shader.PropertyToID("clearcoatTexture"); + private static readonly int clearcoatRoughnessFactor = Shader.PropertyToID("clearcoatRoughnessFactor"); + private static readonly int clearcoatRoughnessTexture = Shader.PropertyToID("clearcoatRoughnessTexture"); + private static readonly int clearcoatNormalTexture = Shader.PropertyToID("clearcoatNormalTexture"); + + + public override void AfterMaterialExport(GLTFSceneExporter exporter, GLTFRoot gltfroot, Material material, GLTFMaterial materialnode) + { + if (!material) return; + + var usesTransmission = material.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON"); + var usesVolume = material.HasProperty("_VOLUME_ON") && material.GetFloat("_VOLUME_ON") > 0.5f; + var hasNonDefaultIor = material.HasProperty(ior) && !Mathf.Approximately(material.GetFloat(ior), KHR_materials_ior.DefaultIor); + var usesIridescence = material.IsKeywordEnabled("_IRIDESCENCE_ON"); + var usesSpecular = material.IsKeywordEnabled("_SPECULAR_ON"); + var usesClearcoat = material.IsKeywordEnabled("_CLEARCOAT_ON"); + + if (hasNonDefaultIor && settings.KHR_materials_ior) + { + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + var vi = new KHR_materials_ior(); + if (materialnode.Extensions.TryGetValue(KHR_materials_ior_Factory.EXTENSION_NAME, out var vv1)) + vi = (KHR_materials_ior) vv1; + else + materialnode.Extensions.Add(KHR_materials_ior_Factory.EXTENSION_NAME, vi); + + exporter.DeclareExtensionUsage(KHR_materials_ior_Factory.EXTENSION_NAME, false); + + if (material.HasProperty(ior)) + vi.ior = material.GetFloat(ior); + } + + if (usesTransmission && settings.KHR_materials_transmission) + { + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + exporter.DeclareExtensionUsage(KHR_materials_transmission_Factory.EXTENSION_NAME, false); + + // if the material already has an extension, we should get and modify that + var vt = new KHR_materials_transmission(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_transmission_Factory.EXTENSION_NAME, out var vv2)) + vt = (KHR_materials_transmission) vv2; + else + materialnode.Extensions.Add(KHR_materials_transmission_Factory.EXTENSION_NAME, vt); + + if (material.HasProperty(transmissionFactor)) + vt.transmissionFactor = material.GetFloat(transmissionFactor); + if (material.HasProperty(transmissionTexture) && material.GetTexture(transmissionTexture)) + vt.transmissionTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(transmissionTexture), nameof(transmissionTexture)); + } + + if (usesVolume && settings.KHR_materials_volume) + { + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + exporter.DeclareExtensionUsage(KHR_materials_volume_Factory.EXTENSION_NAME, false); + + // if the material already has an extension, we should get and modify that + var ve = new KHR_materials_volume(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_volume_Factory.EXTENSION_NAME, out var vv0)) + ve = (KHR_materials_volume)vv0; + else + materialnode.Extensions.Add(KHR_materials_volume_Factory.EXTENSION_NAME, ve); + + if (material.HasProperty(thicknessFactor)) + ve.thicknessFactor = material.GetFloat(thicknessFactor); + if (material.HasProperty(thicknessTexture) && material.GetTexture(thicknessTexture)) + ve.thicknessTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(thicknessTexture), nameof(thicknessTexture)); + if (material.HasProperty(attenuationDistance)) + ve.attenuationDistance = material.GetFloat(attenuationDistance); + if (material.HasProperty(attenuationColor)) + ve.attenuationColor = material.GetColor(attenuationColor).ToNumericsColorRaw(); + } + + if (usesIridescence && settings.KHR_materials_iridescence) + { + exporter.DeclareExtensionUsage(KHR_materials_iridescence_Factory.EXTENSION_NAME, false); + + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + var vir = new KHR_materials_iridescence(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_iridescence_Factory.EXTENSION_NAME, out var vv0)) + vir = (KHR_materials_iridescence) vv0; + else + materialnode.Extensions.Add(KHR_materials_iridescence_Factory.EXTENSION_NAME, vir); + + if (material.HasProperty(iridescenceFactor)) + vir.iridescenceFactor = material.GetFloat(iridescenceFactor); + if (material.HasProperty(iridescenceIor)) + vir.iridescenceIor = material.GetFloat(iridescenceIor); + if (material.HasProperty(iridescenceThicknessMinimum)) + vir.iridescenceThicknessMinimum = material.GetFloat(iridescenceThicknessMinimum); + if (material.HasProperty(iridescenceThicknessMaximum)) + vir.iridescenceThicknessMaximum = material.GetFloat(iridescenceThicknessMaximum); + if (material.HasProperty(iridescenceTexture) && material.GetTexture(iridescenceTexture)) + vir.iridescenceTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(iridescenceTexture), nameof(iridescenceTexture)); + if (material.HasProperty(iridescenceThicknessTexture) && material.GetTexture(iridescenceThicknessTexture)) + vir.iridescenceThicknessTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(iridescenceThicknessTexture), nameof(iridescenceThicknessTexture)); + } + + if (usesSpecular && settings.KHR_materials_specular) + { + exporter.DeclareExtensionUsage(KHR_materials_specular_Factory.EXTENSION_NAME, false); + + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + var vir = new KHR_materials_specular(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_specular_Factory.EXTENSION_NAME, out var vv0)) + vir = (KHR_materials_specular) vv0; + else + materialnode.Extensions.Add(KHR_materials_specular_Factory.EXTENSION_NAME, vir); + + if (material.HasProperty(specularFactor)) + vir.specularFactor = material.GetFloat(specularFactor); + if (material.HasProperty(specularColorFactor)) + vir.specularColorFactor = material.GetColor(specularColorFactor).ToNumericsColorRaw(); + if (material.HasProperty(specularTexture) && material.GetTexture(specularTexture)) + vir.specularTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(specularTexture), nameof(specularTexture)); + if (material.HasProperty(specularColorTexture) && material.GetTexture(specularColorTexture)) + vir.specularColorTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(specularColorTexture), nameof(specularColorTexture)); + } + + if (usesClearcoat && settings.KHR_materials_clearcoat) + { + exporter.DeclareExtensionUsage(KHR_materials_clearcoat_Factory.EXTENSION_NAME, false); + + if (materialnode.Extensions == null) + materialnode.Extensions = new Dictionary(); + + var cc = new KHR_materials_clearcoat(); + + if (materialnode.Extensions.TryGetValue(KHR_materials_clearcoat_Factory.EXTENSION_NAME, out var vv0)) + cc = (KHR_materials_clearcoat) vv0; + else + materialnode.Extensions.Add(KHR_materials_clearcoat_Factory.EXTENSION_NAME, cc); + + if (material.HasProperty(clearcoatFactor)) + cc.clearcoatFactor = material.GetFloat(clearcoatFactor); + if (material.HasProperty(clearcoatTexture)) + cc.clearcoatTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(clearcoatTexture), nameof(clearcoatTexture)); + if (material.HasProperty(clearcoatRoughnessFactor)) + cc.clearcoatRoughnessFactor = material.GetFloat(clearcoatRoughnessFactor); + if (material.HasProperty(clearcoatRoughnessTexture)) + cc.clearcoatRoughnessTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(clearcoatRoughnessTexture), nameof(clearcoatRoughnessTexture)); + if (material.HasProperty(clearcoatNormalTexture)) + cc.clearcoatNormalTexture = exporter.ExportTextureInfoWithTextureTransform(material, material.GetTexture(clearcoatNormalTexture), nameof(clearcoatNormalTexture)); + } + } + } +} diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs.meta b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs.meta new file mode 100644 index 000000000..8ac78b537 --- /dev/null +++ b/Runtime/Scripts/Plugins/MaterialExtensionsExport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5152940c6ada2f3449baca5def38ea64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs new file mode 100644 index 000000000..28a46abdb --- /dev/null +++ b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace UnityGLTF.Plugins +{ + public class MaterialExtensionsImport: GLTFImportPlugin + { + public bool KHR_materials_ior = true; + public bool KHR_materials_transmission = true; + public bool KHR_materials_volume = true; + public bool KHR_materials_iridescence = true; + public bool KHR_materials_specular = true; + public bool KHR_materials_clearcoat = true; + [HideInInspector] // legacy + public bool KHR_materials_pbrSpecularGlossiness = true; + public bool KHR_materials_emissive_strength = true; + + public override string DisplayName => "KHR_materials_* PBR Next Extensions"; + public override string Description => "Import support for various glTF material extensions."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new MaterialExtensionsImportContext(this); + } + } + + public class MaterialExtensionsImportContext : GLTFImportPluginContext + { + internal readonly MaterialExtensionsImport settings; + + public MaterialExtensionsImportContext(MaterialExtensionsImport materialExtensionsImport) + { + settings = materialExtensionsImport; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs.meta b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs.meta new file mode 100644 index 000000000..f086428ed --- /dev/null +++ b/Runtime/Scripts/Plugins/MaterialExtensionsImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5d19ac0d23e84c248f196d1afbe9b9d0 +timeCreated: 1703890136 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/MeshoptImport.cs b/Runtime/Scripts/Plugins/MeshoptImport.cs new file mode 100644 index 000000000..c0b9cfbd2 --- /dev/null +++ b/Runtime/Scripts/Plugins/MeshoptImport.cs @@ -0,0 +1,21 @@ +namespace UnityGLTF.Plugins +{ + public class MeshoptImport: GLTFImportPlugin + { + public override string DisplayName => "EXT_meshopt_compression"; + public override string Description => "Import Meshopt compressed meshes."; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + return new MeshoptImportContext(); + } + +#if !HAVE_MESHOPT_DECOMPRESS + public override string Warning => "Add the package \"com.unity.meshopt.decompress\" to your project for Meshopt compression support."; +#endif + } + + public class MeshoptImportContext: GLTFImportPluginContext + { + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/MeshoptImport.cs.meta b/Runtime/Scripts/Plugins/MeshoptImport.cs.meta new file mode 100644 index 000000000..6b460405a --- /dev/null +++ b/Runtime/Scripts/Plugins/MeshoptImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 837601ceb763400cadb3575e55885670 +timeCreated: 1703892474 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/TextureTransformExport.cs b/Runtime/Scripts/Plugins/TextureTransformExport.cs new file mode 100644 index 000000000..8b53a5802 --- /dev/null +++ b/Runtime/Scripts/Plugins/TextureTransformExport.cs @@ -0,0 +1,14 @@ +namespace UnityGLTF.Plugins +{ + public class TextureTransformExport: GLTFExportPlugin + { + public override string DisplayName => "KHR_texture_transform"; + public override string Description => "Exports texture transforms (offset, scale, rotation)."; + public override bool AlwaysEnabled => true; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + // always enabled + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/TextureTransformExport.cs.meta b/Runtime/Scripts/Plugins/TextureTransformExport.cs.meta new file mode 100644 index 000000000..6ec4ed8bc --- /dev/null +++ b/Runtime/Scripts/Plugins/TextureTransformExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 984138db70144b97b48597182a21b46c +timeCreated: 1703975131 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/TextureTransformImport.cs b/Runtime/Scripts/Plugins/TextureTransformImport.cs new file mode 100644 index 000000000..61bed28d5 --- /dev/null +++ b/Runtime/Scripts/Plugins/TextureTransformImport.cs @@ -0,0 +1,14 @@ +namespace UnityGLTF.Plugins +{ + public class TextureTransformImport: GLTFImportPlugin + { + public override string DisplayName => "KHR_texture_transform"; + public override string Description => "Imports texture transforms (offset, scale, rotation)."; + public override bool AlwaysEnabled => true; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + // always enabled + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/TextureTransformImport.cs.meta b/Runtime/Scripts/Plugins/TextureTransformImport.cs.meta new file mode 100644 index 000000000..ba69be437 --- /dev/null +++ b/Runtime/Scripts/Plugins/TextureTransformImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 60bb1ecd8af04e0e864c773a2aaf6263 +timeCreated: 1703892310 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs b/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs new file mode 100644 index 000000000..b8dbba20b --- /dev/null +++ b/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs @@ -0,0 +1,14 @@ +namespace UnityGLTF.Plugins +{ + public class UnlitMaterialsExport: GLTFExportPlugin + { + public override string DisplayName => "KHR_materials_unlit"; + public override string Description => "Exports unlit materials."; + public override bool AlwaysEnabled => true; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + // always enabled + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs.meta b/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs.meta new file mode 100644 index 000000000..803a498a6 --- /dev/null +++ b/Runtime/Scripts/Plugins/UnlitMaterialsExport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9571021a85f04ddfb74e8aa5aad9cc5a +timeCreated: 1703976148 \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs b/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs new file mode 100644 index 000000000..19b72129c --- /dev/null +++ b/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs @@ -0,0 +1,14 @@ +namespace UnityGLTF.Plugins +{ + public class UnlitMaterialsImport: GLTFImportPlugin + { + public override string DisplayName => "KHR_materials_unlit"; + public override string Description => "Imports unlit materials."; + public override bool AlwaysEnabled => true; + public override GLTFImportPluginContext CreateInstance(GLTFImportContext context) + { + // always enabled + return null; + } + } +} \ No newline at end of file diff --git a/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs.meta b/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs.meta new file mode 100644 index 000000000..6c0de4231 --- /dev/null +++ b/Runtime/Scripts/Plugins/UnlitMaterialsImport.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2d3bb2aeeab442db8c587d6e67450acc +timeCreated: 1703892318 \ No newline at end of file diff --git a/Runtime/Scripts/RenderPipelines.meta b/Runtime/Scripts/RenderPipelines.meta new file mode 100644 index 000000000..a0fb936c1 --- /dev/null +++ b/Runtime/Scripts/RenderPipelines.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 463af91555c2fdb479c0951afcf7a7d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/RenderPipelines/RoughRefraction.cs b/Runtime/Scripts/RenderPipelines/RoughRefraction.cs new file mode 100644 index 000000000..4662818ba --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/RoughRefraction.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using UnityEngine; + +[ExecuteAlways, ImageEffectAllowedInSceneView] +public class RoughRefraction : MonoBehaviour +{ + private readonly Dictionary renderTextureCache = new Dictionary(); + private static readonly int CameraOpaqueTexture = Shader.PropertyToID("_CameraOpaqueTexture"); + + private void OnDisable() + { + if (renderTextureCache != null) { + foreach(var kvp in renderTextureCache) + RenderTexture.ReleaseTemporary(kvp.Value); + } + renderTextureCache?.Clear(); + } + + private void OnPreRender() + { + SetTexture(); + } + + private void SetTexture() + { + var current = Camera.current; + if (!renderTextureCache.ContainsKey(current)) + { + Shader.SetGlobalTexture(CameraOpaqueTexture, Texture2D.blackTexture); + return; + } + + Shader.SetGlobalTexture(CameraOpaqueTexture, renderTextureCache[current]); + } + + [ImageEffectOpaque] + private void OnRenderImage(RenderTexture src, RenderTexture dest) + { + var dsc = src.descriptor; + dsc.useMipMap = true; + dsc.autoGenerateMips = false; + dsc.msaaSamples = 1; + dsc.width = Mathf.ClosestPowerOfTwo(dsc.width); + dsc.height = Mathf.ClosestPowerOfTwo(dsc.height); + + var current = Camera.current; + if (!renderTextureCache.ContainsKey(current)) + renderTextureCache.Add(current, null); + if(renderTextureCache[current]) + RenderTexture.ReleaseTemporary(renderTextureCache[current]); + + renderTextureCache[current] = RenderTexture.GetTemporary(dsc); + renderTextureCache[current].filterMode = FilterMode.Trilinear; + // temp[current].useMipMap = true; + + Graphics.Blit(src, renderTextureCache[current]); + renderTextureCache[current].GenerateMips(); + Graphics.Blit(src, dest); + + SetTexture(); + } +} diff --git a/Runtime/Scripts/RenderPipelines/RoughRefraction.cs.meta b/Runtime/Scripts/RenderPipelines/RoughRefraction.cs.meta new file mode 100644 index 000000000..7952d50ac --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/RoughRefraction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b5788589ee445e45bf87cdf1ec6ee90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs new file mode 100644 index 000000000..9c24c0625 --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs @@ -0,0 +1,153 @@ +#if HAVE_URP_12_OR_NEWER || HAVE_URP_10_OR_NEWER + +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using UnityEngine.Rendering.Universal.Internal; + +namespace UnityGLTF +{ +#if HAVE_URP_12_OR_NEWER + [DisallowMultipleRendererFeature("Opaque Texture (Rough Refractions)")] +#endif + public class RoughRefractionFeature : ScriptableRendererFeature + { + private const string CAMERA_OPAQUE_TEXTURENAME = "_CameraOpaqueTexture"; + +#if !UNITY_2022_3_OR_NEWER + [SerializeField] +#endif + private Downsampling downsampling = Downsampling.None; + + class CustomRenderPass : CopyColorPass + { + public Downsampling m_DownsamplingMethod; +#if UNITY_2022_3_OR_NEWER + public RTHandle m_destination; + public RTHandle m_source; + +#else + public RenderTargetHandle destination; +#endif + public CustomRenderPass(RenderPassEvent evt) : base(evt, + CoreUtils.CreateEngineMaterial(Shader.Find("Hidden/Universal Render Pipeline/Sampling")), + CoreUtils.CreateEngineMaterial(Shader.Find("Hidden/Universal Render Pipeline/Blit"))) + { } + +#if UNITY_2022_3_OR_NEWER + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (renderingData.cameraData.isPreviewCamera) + return; + base.Execute(context, ref renderingData); + } + + public void Setup(RTHandle source, Downsampling downsampling) + { + this.m_source = source; + this.m_DownsamplingMethod = downsampling; + } + + public void Dispose() + { + m_destination?.Release(); + } +#else + public new void Setup(RenderTargetIdentifier source, RenderTargetHandle destination, Downsampling downsampling) + { + base.Setup(source, destination, downsampling); + + this.destination = destination; + this.m_DownsamplingMethod = downsampling; + } +#endif + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + var desc = renderingData.cameraData.cameraTargetDescriptor; + desc.useMipMap = true; + desc.autoGenerateMips = true; + renderingData.cameraData.cameraTargetDescriptor = desc; + + // base.OnCameraSetup(cmd, ref renderingData); + + RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor; + descriptor.msaaSamples = 1; + descriptor.depthBufferBits = 0; + if (m_DownsamplingMethod == Downsampling._2xBilinear) + { + descriptor.width /= 2; + descriptor.height /= 2; + } + else if (m_DownsamplingMethod == Downsampling._4xBox || m_DownsamplingMethod == Downsampling._4xBilinear) + { + descriptor.width /= 4; + descriptor.height /= 4; + } +#if UNITY_2022_3_OR_NEWER + RenderingUtils.ReAllocateIfNeeded(ref m_destination, descriptor, FilterMode.Trilinear, TextureWrapMode.Clamp, name: CAMERA_OPAQUE_TEXTURENAME); + base.Setup(m_source, m_destination, this.m_DownsamplingMethod); + cmd.SetGlobalTexture(m_destination.name, m_destination.nameID); +#else + cmd.GetTemporaryRT(destination.id, descriptor, FilterMode.Trilinear); +#endif + } + } + + CustomRenderPass m_ScriptablePass; + +#if !UNITY_2022_3_OR_NEWER + RenderTargetHandle m_OpaqueColor; +#endif + + /// + public override void Create() + { +#if UNITY_2022_3_OR_NEWER + if (m_ScriptablePass == null) + { + m_ScriptablePass = new CustomRenderPass(RenderPassEvent.AfterRenderingSkybox); + } +#else + m_OpaqueColor.Init(CAMERA_OPAQUE_TEXTURENAME); +#endif + } + + // Here you can inject one or multiple render passes in the renderer. + // This method is called when setting up the renderer once per-camera. + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + +#if UNITY_2022_3_OR_NEWER + renderer.EnqueuePass(m_ScriptablePass); +#else + if (m_ScriptablePass == null) + { + m_ScriptablePass = new CustomRenderPass(RenderPassEvent.AfterRenderingSkybox); + } + +#if UNITY_2022_3_OR_NEWER + var identifier = new RenderTargetIdentifier(BuiltinRenderTextureType.CameraTarget); + m_ScriptablePass.Setup(identifier, m_OpaqueColor, downsampling); +#else + m_ScriptablePass.Setup(renderer.cameraColorTarget, m_OpaqueColor, downsampling); +#endif + renderer.EnqueuePass(m_ScriptablePass); +#endif + } + +#if UNITY_2022_3_OR_NEWER + public override void SetupRenderPasses(ScriptableRenderer renderer, in RenderingData renderingData) + { + m_ScriptablePass.Setup(renderer.cameraColorTargetHandle, downsampling); + } + + public void OnDestroy() + { + m_ScriptablePass?.Dispose(); + } +#endif + + } +} + +#endif diff --git a/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs.meta b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs.meta new file mode 100644 index 000000000..996c1d1e3 --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/RoughRefractionFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9aa176c7981ee2a469e664fd93f010b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef b/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef new file mode 100644 index 000000000..a4f0f8cf2 --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef @@ -0,0 +1,30 @@ +{ + "name": "UnityGltf.RenderPipelines", + "references": [ + "GUID:15fc0a57446b3144c949da3e2b9737a9", + "GUID:df380645f10b7bc4b97d4f5eb6303d95", + "GUID:2bafac87e7f4b9b418d9448d219b01ab" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_2020_3_OR_NEWER" + ], + "versionDefines": [ + { + "name": "com.unity.render-pipelines.universal", + "expression": "12", + "define": "HAVE_URP_12_OR_NEWER" + }, + { + "name": "com.unity.render-pipelines.universal", + "expression": "10", + "define": "HAVE_URP_10_OR_NEWER" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef.meta b/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef.meta new file mode 100644 index 000000000..975d3dd3d --- /dev/null +++ b/Runtime/Scripts/RenderPipelines/UnityGltf.RenderPipelines.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fe848190f1a690142846fa6384b74e17 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/SceneExporter.meta b/Runtime/Scripts/SceneExporter.meta new file mode 100644 index 000000000..0ed54531f --- /dev/null +++ b/Runtime/Scripts/SceneExporter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61f928488f87d3147ac6bcad15cf6ea1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/SceneExporter/ExporterAccessors.cs b/Runtime/Scripts/SceneExporter/ExporterAccessors.cs new file mode 100644 index 000000000..1c2edc415 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAccessors.cs @@ -0,0 +1,1207 @@ +#define USE_FAST_BINARY_WRITER + +using System; +using System.Collections.Generic; +using System.IO; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Extensions; + +namespace UnityGLTF +{ +public partial class GLTFSceneExporter +{ +#if USE_FAST_BINARY_WRITER + private BinaryWriterWithLessAllocations _bufferWriter; +#else + private BinaryWriter _bufferWriter; +#endif + + /// + /// Convenience function to copy from a stream to a binary writer, for + /// compatibility with pre-.NET 4.0. + /// Note: Does not set position/seek in either stream. After executing, + /// the input buffer's position should be the end of the stream. + /// + /// Stream to copy from + /// Stream to copy to. + private static void CopyStream(Stream input, BinaryWriter output) + { + byte[] buffer = new byte[8 * 1024]; + int length; + while ((length = input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer, 0, length); + } + } + + /// + /// Pads a stream with additional bytes. + /// + /// The stream to be modified. + /// The padding byte to append. Defaults to ASCII + /// space (' '). + /// The boundary to align with, in bytes. + /// + private static void AlignToBoundary(Stream stream, byte pad = (byte)' ', uint boundary = 4) + { + uint currentLength = (uint)stream.Length; + uint newLength = CalculateAlignment(currentLength, boundary); + for (int i = 0; i < newLength - currentLength; i++) + { + stream.WriteByte(pad); + } + } + + /// + /// Calculates the number of bytes of padding required to align the + /// size of a buffer with some multiple of byteAllignment. + /// + /// The current size of the buffer. + /// The number of bytes to align with. + /// + public static uint CalculateAlignment(uint currentSize, uint byteAlignment) + { + return (currentSize + byteAlignment - 1) / byteAlignment * byteAlignment; + } + + private AccessorId ExportAccessorUint(Vector4[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorUintArrayMarker.Begin(); + + var count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.UnsignedShort; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.VEC4; + + float minX = arr[0].x; + float minY = arr[0].y; + float minZ = arr[0].z; + float minW = arr[0].w; + float maxX = arr[0].x; + float maxY = arr[0].y; + float maxZ = arr[0].z; + float maxW = arr[0].w; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.z < minZ) + { + minZ = cur.z; + } + if (cur.w < minW) + { + minW = cur.w; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + if (cur.z > maxZ) + { + maxZ = cur.z; + } + if (cur.w > maxW) + { + maxW = cur.w; + } + } + + accessor.Min = new List { minX, minY, minZ, minW }; + accessor.Max = new List { maxX, maxY, maxZ, maxW }; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); + foreach (var vec in arr) + { + _bufferWriter.Write((ushort)vec.x); + _bufferWriter.Write((ushort)vec.y); + _bufferWriter.Write((ushort)vec.z); + _bufferWriter.Write((ushort)vec.w); + } + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView((uint)byteOffset, (uint)byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorUintArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + // This is used for Quaternions / Rotations. Lights' and Cameras' orientations need to be flipped. + private AccessorId ExportAccessorSwitchHandedness(Quaternion[] arr, bool invertLookDirection) + { + exportAccessorMarker.Begin(); + exportAccessorVector4ArrayMarker.Begin(); + + var count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var copy = new Quaternion[count]; + Array.Copy(arr, copy, count); + for (int i = 0; i < count; i++) + { + var v = copy[i]; + if (invertLookDirection) + { + v *= new Quaternion(0, -1, 0, 0); + } + v = v.SwitchHandedness().normalized; + copy[i] = v; + } + arr = copy; + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.VEC4; + + var a0 = arr[0]; + float minX = a0.x; + float minY = a0.y; + float minZ = a0.z; + float minW = a0.w; + float maxX = a0.x; + float maxY = a0.y; + float maxZ = a0.z; + float maxW = a0.w; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.z < minZ) + { + minZ = cur.z; + } + if (cur.w < minW) + { + minW = cur.w; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + if (cur.z > maxZ) + { + maxZ = cur.z; + } + if (cur.w > maxW) + { + maxW = cur.w; + } + } + + accessor.Min = new List { minX, minY, minZ, minW }; + accessor.Max = new List { maxX, maxY, maxZ, maxW }; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); +#if USE_FAST_BINARY_WRITER + _bufferWriter.Write(arr); +#else + foreach (var vec in arr) + { + _bufferWriter.Write(vect.x); + _bufferWriter.Write(vect.y); + _bufferWriter.Write(vect.z); + _bufferWriter.Write(vect.w); + } +#endif + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView((uint)byteOffset, (uint)byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorVector4ArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(Matrix4x4[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorMatrix4x4ArrayMarker.Begin(); + + var count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.MAT4; + + // Dont serialize min/max for matrices + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); + foreach (var mat in arr) + { + var m = SchemaExtensions.ToGltfMatrix4x4Convert(mat); + for (uint i = 0; i < 4; ++i) + { + var col = m.GetColumn(i); + _bufferWriter.Write(col.X); + _bufferWriter.Write(col.Y); + _bufferWriter.Write(col.Z); + _bufferWriter.Write(col.W); + } + } + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView((uint)byteOffset, (uint)byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorMatrix4x4ArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + /// + /// Manually export an accessor of an arbitrary type. You need to manage conversion of your data to byte[] yourself. + /// + /// + /// The accessor id.You can get the actual accessor via val.Root.Accessors[val.Id]. + /// + public AccessorId ExportAccessor(byte[] data, uint count, GLTFAccessorAttributeType type, GLTFComponentType componentType, List min, List max) + { + exportAccessorMarker.Begin(); + exportAccessorByteArrayMarker.Begin(); + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.Count = count; + accessor.Type = type; + accessor.ComponentType = componentType; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + foreach (var v in data) + { + _bufferWriter.Write((byte)v); + } + + accessor.Min = min; + accessor.Max = max; + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorByteArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + public AccessorId ExportAccessor(byte[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorByteArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.SCALAR; + + int min = arr[0]; + int max = arr[0]; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur < min) + { + min = cur; + } + if (cur > max) + { + max = cur; + } + } + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + accessor.ComponentType = GLTFComponentType.UnsignedByte; + + foreach (var v in arr) + { + _bufferWriter.Write((byte)v); + } + + accessor.Min = new List { min }; + accessor.Max = new List { max }; + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorByteArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(float[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorFloatArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.SCALAR; + + exportAccessorMinMaxMarker.Begin(); + var min = arr[0]; + var max = arr[0]; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur < min) + { + min = cur; + } + if (cur > max) + { + max = cur; + } + } + exportAccessorMinMaxMarker.End(); + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, sizeof(float)); + + exportAccessorBufferWriteMarker.Begin(); + accessor.ComponentType = GLTFComponentType.Float; + +#if USE_FAST_BINARY_WRITER + _bufferWriter.Write(arr); +#else + foreach (var v in arr) + { + _bufferWriter.Write((float)v); + } +#endif + exportAccessorBufferWriteMarker.End(); + + accessor.Min = new List { min }; + accessor.Max = new List { max }; + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorFloatArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(int[] arr, bool isIndices = false) + { + exportAccessorMarker.Begin(); + if (isIndices) exportAccessorIntArrayIndicesMarker.Begin(); else exportAccessorIntArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.SCALAR; + + int min = arr[0]; + int max = arr[0]; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur < min) + { + min = cur; + } + if (cur > max) + { + max = cur; + } + } + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + // From the spec: + // Values of the index accessor must not include the maximum value for the given component type, + // which triggers primitive restart in several graphics APIs and would require client implementations to rebuild the index buffer. + // Primitive restart values are disallowed and all index values must refer to actual vertices. + int maxAllowedValue = isIndices ? max + 1 : max; + + if (maxAllowedValue <= byte.MaxValue && min >= byte.MinValue) + { + accessor.ComponentType = GLTFComponentType.UnsignedByte; + + foreach (var v in arr) + { + _bufferWriter.Write((byte)v); + } + } + else if (maxAllowedValue <= sbyte.MaxValue && min >= sbyte.MinValue && !isIndices) + { + accessor.ComponentType = GLTFComponentType.Byte; + + foreach (var v in arr) + { + _bufferWriter.Write((sbyte)v); + } + } + else if (maxAllowedValue <= short.MaxValue && min >= short.MinValue && !isIndices) + { + accessor.ComponentType = GLTFComponentType.Short; + + foreach (var v in arr) + { + _bufferWriter.Write((short)v); + } + } + else if (maxAllowedValue <= ushort.MaxValue && min >= ushort.MinValue) + { + accessor.ComponentType = GLTFComponentType.UnsignedShort; + + foreach (var v in arr) + { + _bufferWriter.Write((ushort)v); + } + } + else if (maxAllowedValue >= uint.MinValue) + { + accessor.ComponentType = GLTFComponentType.UnsignedInt; + + foreach (var v in arr) + { + _bufferWriter.Write((uint)v); + } + } + else + { + accessor.ComponentType = GLTFComponentType.Float; + + foreach (var v in arr) + { + _bufferWriter.Write((float)v); + } + } + + accessor.Min = new List { min }; + accessor.Max = new List { max }; + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + if (isIndices) exportAccessorIntArrayIndicesMarker.End(); else exportAccessorIntArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(Vector2[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorVector2ArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.VEC2; + + float minX = arr[0].x; + float minY = arr[0].y; + float maxX = arr[0].x; + float maxY = arr[0].y; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + } + + accessor.Min = new List { minX, minY }; + accessor.Max = new List { maxX, maxY }; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + foreach (var vec in arr) + { + _bufferWriter.Write(vec.x); + _bufferWriter.Write(vec.y); + } + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorVector2ArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(Vector3[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorVector3ArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.VEC3; + + float minX = arr[0].x; + float minY = arr[0].y; + float minZ = arr[0].z; + float maxX = arr[0].x; + float maxY = arr[0].y; + float maxZ = arr[0].z; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.z < minZ) + { + minZ = cur.z; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + if (cur.z > maxZ) + { + maxZ = cur.z; + } + } + + accessor.Min = new List { minX, minY, minZ }; + accessor.Max = new List { maxX, maxY, maxZ }; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); +#if USE_FAST_BINARY_WRITER + _bufferWriter.Write(arr); +#else + foreach (var vec in arr) + { + _bufferWriter.Write(vec.x); + _bufferWriter.Write(vec.y); + _bufferWriter.Write(vec.z); + } +#endif + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength, sizeof(float) * 3); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorVector3ArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + /// + /// + /// + /// + /// The data is treated as "additive" (e.g. blendshapes) when baseData != null + /// + /// + /// + private AccessorId ExportSparseAccessor(AccessorId baseAccessor, Vector3[] baseData, Vector3[] arr) + { + exportSparseAccessorMarker.Begin(); + + uint dataCount = (uint) arr.Length; + if (dataCount == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + // TODO need to assert that these types match to the base accessor + // TODO we might need to build a data <> accessor dict as well to avoid having to pass in the base data again + + // need to assert data and baseData have the same length etc. + if (baseData != null && baseData.Length != arr.Length) + { + throw new Exception("Sparse Accessor Base Data must either be null or the same length as the data array, current: " + baseData.Length + " != " + arr.Length); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = dataCount; + accessor.Type = GLTFAccessorAttributeType.VEC3; + + if(baseAccessor != null) + { + accessor.BufferView = baseAccessor.Value.BufferView; + accessor.ByteOffset = baseAccessor.Value.ByteOffset; + } + + accessor.Sparse = new AccessorSparse(); + var sparse = accessor.Sparse; + + var indices = new List(); + + // Debug.Log("Values for sparse data array:\n " + string.Join("\n ", arr)); + for (int i = 0; i < arr.Length; i++) + { + var comparer = (baseAccessor == null || baseData == null) ? Vector3.zero : baseData[i]; + if (comparer != arr[i]) + { + indices.Add(i); + } + } + + // HACK since GLTF doesn't allow 0 buffer length, but that can well happen when a morph target exactly matches the base mesh + // NOT doing this results in GLTF validation errors about buffers having length 0 + if (indices.Count < 1) + { + indices = new List() {0}; + } + + // we need to calculate the min/max of the entire new data array + uint count = (uint) arr.Length; + + var firstElement = baseData != null ? (baseData[0] + arr[0]) : arr[0]; + float minX = firstElement.x; + float minY = firstElement.y; + float minZ = firstElement.z; + float maxX = firstElement.x; + float maxY = firstElement.y; + float maxZ = firstElement.z; + + for (var i = 1; i < count; i++) + { + var cur = baseData != null ? (baseData[i] + arr[i]) : arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.z < minZ) + { + minZ = cur.z; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + if (cur.z > maxZ) + { + maxZ = cur.z; + } + } + + accessor.Min = new List { minX, minY, minZ }; + accessor.Max = new List { maxX, maxY, maxZ }; + + // write indices + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffsetIndices = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + // Debug.Log("Storing " + indices.Count + " sparse indices + values"); + + foreach (var index in indices) + { + _bufferWriter.Write(index); + } + + uint byteLengthIndices = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffsetIndices, 4); + + sparse.Indices = new AccessorSparseIndices(); + // TODO should be properly using the smallest possible component type + sparse.Indices.ComponentType = GLTFComponentType.UnsignedInt; + sparse.Indices.BufferView = ExportBufferView(byteOffsetIndices, byteLengthIndices); + + // write values + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); + foreach (var i in indices) + { + var vec = arr[i]; + _bufferWriter.Write(vec.x); + _bufferWriter.Write(vec.y); + _bufferWriter.Write(vec.z); + } + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + sparse.Values = new AccessorSparseValues(); + sparse.Values.BufferView = ExportBufferView(byteOffset, byteLength); + + sparse.Count = indices.Count; + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportSparseAccessorMarker.End(); + + return id; + } + + + private AccessorId ExportAccessor(Vector4[] arr) + { + exportAccessorMarker.Begin(); + exportAccessorVector4ArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = GLTFAccessorAttributeType.VEC4; + + // sanitize tangents: in some cases Unity's importer produces NaN values for calculated tangents. + for (uint i = 0; i < arr.Length; i++) + { + var v = arr[i]; + if (float.IsNaN(v.x) || float.IsNaN(v.y) || float.IsNaN(v.z) || float.IsNaN(v.w)) + arr[i].Set(0,0,1,1); + } + + float minX = arr[0].x; + float minY = arr[0].y; + float minZ = arr[0].z; + float minW = arr[0].w; + float maxX = arr[0].x; + float maxY = arr[0].y; + float maxZ = arr[0].z; + float maxW = arr[0].w; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.x < minX) + { + minX = cur.x; + } + if (cur.y < minY) + { + minY = cur.y; + } + if (cur.z < minZ) + { + minZ = cur.z; + } + if (cur.w < minW) + { + minW = cur.w; + } + if (cur.x > maxX) + { + maxX = cur.x; + } + if (cur.y > maxY) + { + maxY = cur.y; + } + if (cur.z > maxZ) + { + maxZ = cur.z; + } + if (cur.w > maxW) + { + maxW = cur.w; + } + } + + accessor.Min = new List { minX, minY, minZ, minW }; + accessor.Max = new List { maxX, maxY, maxZ, maxW }; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + exportAccessorBufferWriteMarker.Begin(); +#if USE_FAST_BINARY_WRITER + _bufferWriter.Write(arr); +#else + foreach (var vec in arr) + { + _bufferWriter.Write(vec.x); + _bufferWriter.Write(vec.y); + _bufferWriter.Write(vec.z); + _bufferWriter.Write(vec.w); + } +#endif + exportAccessorBufferWriteMarker.End(); + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorVector4ArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + private AccessorId ExportAccessor(Color[] arr, bool exportAlphaChannel) + { + exportAccessorMarker.Begin(); + exportAccessorColorArrayMarker.Begin(); + + uint count = (uint)arr.Length; + + if (count == 0) + { + throw new Exception("Accessors can not have a count of 0."); + } + + var accessor = new Accessor(); + accessor.ComponentType = GLTFComponentType.Float; + accessor.Count = count; + accessor.Type = exportAlphaChannel ? GLTFAccessorAttributeType.VEC4 : GLTFAccessorAttributeType.VEC3; + + float minR = arr[0].r; + float minG = arr[0].g; + float minB = arr[0].b; + float minA = arr[0].a; + float maxR = arr[0].r; + float maxG = arr[0].g; + float maxB = arr[0].b; + float maxA = arr[0].a; + + for (var i = 1; i < count; i++) + { + var cur = arr[i]; + + if (cur.r < minR) + { + minR = cur.r; + } + if (cur.g < minG) + { + minG = cur.g; + } + if (cur.b < minB) + { + minB = cur.b; + } + if (cur.a < minA) + { + minA = cur.a; + } + if (cur.r > maxR) + { + maxR = cur.r; + } + if (cur.g > maxG) + { + maxG = cur.g; + } + if (cur.b > maxB) + { + maxB = cur.b; + } + if (cur.a > maxA) + { + maxA = cur.a; + } + } + + if (exportAlphaChannel) + { + accessor.Min = new List { minR, minG, minB, minA }; + accessor.Max = new List { maxR, maxG, maxB, maxA }; + } + else + { + accessor.Min = new List { minR, minG, minB }; + accessor.Max = new List { maxR, maxG, maxB }; + } + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + if(exportAlphaChannel) + { + foreach (var color in arr) + { + _bufferWriter.Write(color.r); + _bufferWriter.Write(color.g); + _bufferWriter.Write(color.b); + _bufferWriter.Write(color.a); + } + } + else + { + foreach (var color in arr) + { + _bufferWriter.Write(color.r); + _bufferWriter.Write(color.g); + _bufferWriter.Write(color.b); + } + } + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + + accessor.BufferView = ExportBufferView(byteOffset, byteLength); + + var id = new AccessorId + { + Id = _root.Accessors.Count, + Root = _root + }; + _root.Accessors.Add(accessor); + + exportAccessorColorArrayMarker.End(); + exportAccessorMarker.End(); + + return id; + } + + public BufferViewId ExportBufferView(byte[] bytes) { + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + _bufferWriter.Write(bytes); + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + return ExportBufferView((uint)byteOffset, (uint)byteLength); + } + + private BufferViewId ExportBufferView(uint byteOffset, uint byteLength, uint byteStride = 0) + { + var bufferView = new BufferView + { + Buffer = _bufferId, + ByteOffset = byteOffset, + ByteLength = byteLength, + ByteStride = byteStride + }; + + var id = new BufferViewId + { + Id = _root.BufferViews.Count, + Root = _root + }; + + _root.BufferViews.Add(bufferView); + + return id; + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterAccessors.cs.meta b/Runtime/Scripts/SceneExporter/ExporterAccessors.cs.meta new file mode 100644 index 000000000..16cc2dd6b --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAccessors.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47321deab892e9044bb9d4a193a41208 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimation.cs b/Runtime/Scripts/SceneExporter/ExporterAnimation.cs new file mode 100644 index 000000000..bfcaef81b --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimation.cs @@ -0,0 +1,1601 @@ +#if UNITY_EDITOR +#define ANIMATION_EXPORT_SUPPORTED +#endif + +#if ANIMATION_EXPORT_SUPPORTED && (UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER) +#define ANIMATION_SUPPORTED +#endif + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; +using Object = UnityEngine.Object; + +#if UNITY_2020_2_OR_NEWER +using UnityEngine.Animations; +#endif + +#if ANIMATION_EXPORT_SUPPORTED +using UnityEditor; +using UnityEditor.Animations; +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { +#if ANIMATION_SUPPORTED + private readonly Dictionary<(AnimationClip clip, float speed, Avatar avatar), GLTFAnimation> _clipToAnimation = new Dictionary<(AnimationClip, float, Avatar), GLTFAnimation>(); + private readonly Dictionary<(AnimationClip clip, float speed, string targetPath), Transform> _clipAndSpeedAndPathToExportedTransform = new Dictionary<(AnimationClip, float, string), Transform>(); + private readonly Dictionary<(AnimationClip clip, float speed, Transform transform), GLTFAnimation> _clipAndSpeedAndNodeToAnimation = new Dictionary<(AnimationClip, float, Transform), GLTFAnimation>(); + + private static int AnimationBakingFramerate = 30; // FPS + private static bool BakeAnimationData = true; +#endif + + private bool? _useAnimationPointer = null; + + private bool UseAnimationPointer + { + get + { + if (_useAnimationPointer == null) + _useAnimationPointer = _plugins.Any(x => x is AnimationPointerExportContext); + return _useAnimationPointer.Value; + } + } + + // Parses Animation/Animator component and generate a glTF animation for the active clip + // This may need additional work to fully support animatorControllers + public void ExportAnimationFromNode(ref Transform transform) + { + exportAnimationFromNodeMarker.Begin(); + +#if ANIMATION_SUPPORTED + Animator animator = transform.GetComponent(); + if (animator) + { +#if ANIMATION_EXPORT_SUPPORTED + AnimationClip[] clips = AnimationUtility.GetAnimationClips(transform.gameObject); + var animatorController = animator.runtimeAnimatorController as AnimatorController; + + // make sure the default state is the first clip + if (animatorController && animatorController.layers.Length > 0) + { + var defaultState = animatorController.layers[0].stateMachine.defaultState; + if (defaultState) { + var defaultMotion = defaultState.motion; + if (defaultMotion is AnimationClip clip && clip) + { + // make sure this is the first clip in the clips array + var index = Array.IndexOf(clips, clip); + if (index > 0) + { + var temp = clips[0]; + clips[0] = clip; + clips[index] = temp; + } + } + } + } + + // Debug.Log("animator: " + animator + "=> " + animatorController); + ExportAnimationClips(transform, clips, animator, animatorController); +#endif + } + + UnityEngine.Animation animation = transform.GetComponent(); + if (animation) + { +#if ANIMATION_EXPORT_SUPPORTED + AnimationClip[] clips = UnityEditor.AnimationUtility.GetAnimationClips(transform.gameObject); + + // make sure the default state is the first clip + if (animation.clip) { + var index = Array.IndexOf(clips, animation.clip); + if (index > 0) { + var temp = clips[0]; + clips[0] = animation.clip; + clips[index] = temp; + } + } + ExportAnimationClips(transform, clips); +#endif + } +#endif + exportAnimationFromNodeMarker.End(); + } + +#if ANIMATION_SUPPORTED + private IEnumerable GetAnimatorStateParametersForClip(AnimationClip clip, AnimatorController animatorController) + { + if (!clip) + yield break; + + if (!animatorController) + yield return new AnimatorState() { name = clip.name, speed = 1f }; + + foreach (var layer in animatorController.layers) + { + foreach (var state in layer.stateMachine.states) + { + // find a matching clip in the animator + if (state.state.motion is AnimationClip c && c == clip) + { + yield return state.state; + } + } + } + } + + private GLTFAnimation GetOrCreateAnimation(AnimationClip clip, string searchForDuplicateName, float speed, Transform node) + { + var existingAnim = default(GLTFAnimation); + + // Check if there's an existing animation for this clip, speed and node - + // In that case we don't want to duplicate/retarget anything and just return the existing animation. + // There's also no need to add more data to it since the full state has already been processed. + // This can happen when e.g. the GetOrCreateAnimation API is called multiple times for the same node and clip – + // it doesn't happen internally in UnityGLTF + var animationClipAndSpeedAndNode = (clip, speed, node); + if (_clipAndSpeedAndNodeToAnimation.TryGetValue(animationClipAndSpeedAndNode, out existingAnim)) + { + return existingAnim; + } + + if (_exportContext.MergeClipsWithMatchingNames) + { + // Check if we already exported an animation with exactly that name. If yes, we want to append to the previous one instead of making a new one. + // This allows to merge multiple animations into one if required (e.g. a character and an instrument that should play at the same time but have individual clips). + existingAnim = _root.Animations?.FirstOrDefault(x => x.Name == searchForDuplicateName); + } + + // TODO when multiple AnimationClips are exported, we're currently not properly merging those; + // we should only export the GLTFAnimation once but then apply that to all nodes that require it (duplicating the animation but not the accessors) + // instead of naively writing over the GLTFAnimation with the same data. + var animator = node.GetComponent(); + var avatar = animator ? animator.avatar : null; + var animationClipAndSpeedAndAvatar = (clip, speed, avatar); + if (existingAnim == null) + { + if(_clipToAnimation.TryGetValue(animationClipAndSpeedAndAvatar, out existingAnim)) + { + // we duplicate the clip it was exported before so we can retarget to another transform. + existingAnim = new GLTFAnimation(existingAnim, _root); + } + } + + GLTFAnimation anim = existingAnim != null ? existingAnim : new GLTFAnimation(); + + // add to set of already exported clip-state pairs + if (!_clipToAnimation.ContainsKey(animationClipAndSpeedAndAvatar)) + _clipToAnimation.Add(animationClipAndSpeedAndAvatar, anim); + + // add to set of already exported clip-node pairs + if (!_clipAndSpeedAndNodeToAnimation.ContainsKey(animationClipAndSpeedAndNode)) + _clipAndSpeedAndNodeToAnimation.Add(animationClipAndSpeedAndNode, anim); + + return anim; + } + + // Creates GLTFAnimation for each clip and adds it to the _root + public void ExportAnimationClips(Transform nodeTransform, IList clips, Animator animator = null, AnimatorController animatorController = null) + { + // When sampling animation using AnimationMode the animator might be disabled afterwards when the animation is exported from a prefab (e.g. Prefab -> object with humanoid animation -> export from referenced prefab -> animator is disabled) + // Here we ensure that the animator is enabled again after export + // See ExportAnimationHumanoid with StartAnimationMode + var animatorEnabled = !animator || animator.enabled; + + // Debug.Log("exporting clips from " + nodeTransform + " with " + animatorController); + if (animatorController) + { + if (!animator) throw new ArgumentNullException("Missing " + nameof(animator)); + for (int i = 0; i < clips.Count; i++) + { + if (!clips[i]) continue; + + // special case: there could be multiple states with the same animation clip. + // if we want to handle this here, we need to find all states that match this clip + foreach(var state in GetAnimatorStateParametersForClip(clips[i], animatorController)) + { + var speed = 1f; + if (settings.BakeAnimationSpeed) + { + speed = state.speed * (state.speedParameterActive ? animator.GetFloat(state.speedParameter) : 1f); + } + var name = clips[i].name; + ExportAnimationClip(clips[i], name, nodeTransform, speed); + } + } + } + else + { + for (int i = 0; i < clips.Count; i++) + { + if (!clips[i]) continue; + var speed = 1f; + ExportAnimationClip(clips[i], clips[i].name, nodeTransform, speed); + } + } + + if(animator) + animator.enabled = animatorEnabled; + } + + public GLTFAnimation ExportAnimationClip(AnimationClip clip, string name, Transform node, float speed) + { + if (!clip) return null; + GLTFAnimation anim = GetOrCreateAnimation(clip, name, speed, node); + // early out if this is exactly an animation that has already been exported. Not retargeted or changed otherwise. + if (_root.Animations.Contains(anim)) return anim; + + anim.Name = name; + if(settings.UniqueAnimationNames) + anim.Name = ObjectNames.GetUniqueName(_root.Animations.Select(x => x.Name).ToArray(), anim.Name); + + ConvertClipToGLTFAnimation(clip, node, anim, speed); + + if (anim.Channels.Count > 0 && anim.Samplers.Count > 0 && !_root.Animations.Contains(anim)) + { + _root.Animations.Add(anim); + } + return anim; + } +#endif + +#if ANIMATION_SUPPORTED + public enum AnimationKeyRotationType + { + Unknown, + Quaternion, + Euler + } + + public class PropertyCurve + { + public string propertyName; + public Type propertyType; + public List curve; + public List curveName; + public Object target; + + public PropertyCurve(Object target, string propertyName) + { + this.target = target; + this.propertyName = propertyName; + curve = new List(); + curveName = new List(); + } + + public void AddCurve(AnimationCurve animCurve, string name) + { + this.curve.Add(animCurve); + this.curveName.Add(name); + } + + public float Evaluate(float time, int index) + { + if (index < 0 || index >= curve.Count) + { + // common case: A not animated but RGB is. + // TODO this should actually use the value from the material. + if (propertyType == typeof(Color) && index == 3) + return 1; + + throw new ArgumentOutOfRangeException(nameof(index), $"PropertyCurve {propertyName} ({propertyType}) has only {curve.Count} curves but index {index} was accessed for time {time}"); + } + + return curve[index].Evaluate(time); + } + + private static readonly Dictionary requiredCurveCount = new Dictionary() + { + {typeof(Color), 4}, + {typeof(Vector2), 2}, + {typeof(Vector3), 3}, + {typeof(Vector4), 4}, + }; + + private static readonly string[] colorPropertiesWithoutAlphaChannel = new[] + { + "_EmissionColor", + "_EmissiveFactor", + "emissiveFactor", + "_AttenuationColor", + "attenuationColor", + "_SpecularColorFactor", + "specularColorFactor", + "_SheenColorFactor", + "sheenColorFactor", + }; + + internal bool Validate() + { + if (propertyType == null) + { + if (target is Material mat) + UnityEngine.Debug.LogWarning($"Animated material property {propertyName} does not exist on material {mat}{(mat ? " / shader " + mat.shader : "")}. Will not be exported", mat); + else + UnityEngine.Debug.LogError($"Curve of animated property has no property type, can not validate {propertyName} on {target}. Will not be exported.", target); + return false; + } + + if (requiredCurveCount.TryGetValue(propertyType, out var requiredCount)) + { + var hasEnoughCurves = curve.Count == requiredCount; + + // Special case for colors, which can have either 3 (rgb) or 4 (rgba) components when animated. + // When they have 3 components, we also need to check that these are r,g,b - theoretically someone can animate r,g,a and then we get wrong data. + if (propertyType == typeof(Color) && ( + (target is Material && colorPropertiesWithoutAlphaChannel.Contains(propertyName)) || + (target is Light && propertyName == "m_Color") || + (target is Camera))) + { + requiredCount = 3; + hasEnoughCurves = curve.Count >= requiredCount + && curveName[0].EndsWith(".r", StringComparison.Ordinal) + && curveName[1].EndsWith(".g", StringComparison.Ordinal) + && curveName[2].EndsWith(".b", StringComparison.Ordinal); + // doesn't hurt if there's an extra alpha channel; + // seems that happens sometimes when animating, sometimes not + + if (!hasEnoughCurves) + { + UnityEngine.Debug.LogWarning($"Can not export animation, please animate all three channels (R,G,B) for \"{propertyName}\" on {target}", target); + return false; + } + } + + if (!hasEnoughCurves) + { + UnityEngine.Debug.LogWarning($"Can not export animation, please animate all channels for \"{propertyName}\", expected channel count is {requiredCount} but got only {curve.Count}", target); + return false; + } + } + + return true; + } + + /// + /// Call this method once before beginning to evaluate curves + /// + internal void SortCurves() + { + // If we animate a color property in Unity and start by creating keys for green then the green curve will be at index 0 + // This method ensures that the curves are in a known order e.g. rgba (instead of green red blue alpha) + if (curve?.Count > 0 && curveName.Count > 0) + { + if (propertyType == typeof(Color)) + { + FillTempLists(); + var index1 = FindIndex(name => name.EndsWith(".r", StringComparison.Ordinal)); + var index2 = FindIndex(name => name.EndsWith(".g", StringComparison.Ordinal)); + var index3 = FindIndex(name => name.EndsWith(".b", StringComparison.Ordinal)); + var index4 = FindIndex(name => name.EndsWith(".a", StringComparison.Ordinal)); + SortCurves(index1, index2, index3, index4); + } + else if (propertyType == typeof(Vector2)) + { + FillTempLists(); + var index1 = FindIndex(name => name.EndsWith(".x", StringComparison.Ordinal)); + var index2 = FindIndex(name => name.EndsWith(".y", StringComparison.Ordinal)); + SortCurves(index1, index2); + } + else if (propertyType == typeof(Vector3)) + { + FillTempLists(); + var index1 = FindIndex(name => name.EndsWith(".x", StringComparison.Ordinal)); + var index2 = FindIndex(name => name.EndsWith(".y", StringComparison.Ordinal)); + var index3 = FindIndex(name => name.EndsWith(".z", StringComparison.Ordinal)); + SortCurves(index1, index2, index3); + } + else if (propertyType == typeof(Vector4)) + { + FillTempLists(); + var index1 = FindIndex(name => name.EndsWith(".x", StringComparison.Ordinal) || name.EndsWith(".r", StringComparison.Ordinal)); + var index2 = FindIndex(name => name.EndsWith(".y", StringComparison.Ordinal) || name.EndsWith(".g", StringComparison.Ordinal)); + var index3 = FindIndex(name => name.EndsWith(".z", StringComparison.Ordinal) || name.EndsWith(".b", StringComparison.Ordinal)); + var index4 = FindIndex(name => name.EndsWith(".w", StringComparison.Ordinal) || name.EndsWith(".a", StringComparison.Ordinal)); + SortCurves(index1, index2, index3, index4); + } + } + } + + private void SortCurves(int i0, int i1, int i2 = -1, int i3 = -1) + { + for(var i = 0; i < curve.Count; i++) + { + var curveIndex = i; + if (i == 0) curveIndex = i0; + else if (i == 1) curveIndex = i1; + else if(i == 2 && i2 >= 0) curveIndex = i2; + else if(i == 3 && i3 >= 0) curveIndex = i3; + if (curveIndex >= 0 && curveIndex != i) + { + this.curve[i] = _tempList1[curveIndex];; + this.curveName[i] = _tempList2[curveIndex];; + } + } + } + + private static readonly List _tempList1 = new List(); + private static readonly List _tempList2 = new List(); + + private void FillTempLists() + { + _tempList1.Clear(); + _tempList2.Clear(); + _tempList1.AddRange(curve); + _tempList2.AddRange(curveName); + } + + public int FindIndex(Predicate test) + { + for(var i = 0; i < curveName.Count; i++) + { + if (test(curveName[i])) + return i; + } + return -1; + } + + + } + + internal struct TargetCurveSet + { + #pragma warning disable 0649 + public AnimationCurve[] translationCurves; + public AnimationCurve[] rotationCurves; + public AnimationCurve[] scaleCurves; + public Dictionary weightCurves; + public PropertyCurve propertyCurve; + #pragma warning restore + + public Dictionary propertyCurves; + + // for KHR_animation_pointer + public void AddPropertyCurves(Object animatedObject, AnimationCurve curve, EditorCurveBinding binding) + { + // Debug.Log("Adding property curve " + binding.propertyName + " to " + animatedObject); + if (propertyCurves == null) propertyCurves = new Dictionary(); + var memberName = binding.propertyName; + if (!memberName.Contains(".")) + { + var prop = new PropertyCurve(animatedObject, memberName); + prop.AddCurve(curve, memberName); + if (animatedObject is Light) + { + switch (memberName) + { + case "m_Color": + prop.propertyType = typeof(Color); + break; + case "m_Intensity": + case "m_Range": + case "m_SpotAngle": + case "m_InnerSpotAngle": + prop.propertyType = typeof(float); + break; + } + } + else if (animatedObject is Camera) + { + prop.propertyType = typeof(float); + } + else if (animatedObject is GameObject || animatedObject is Component) + { + TryFindMemberBinding(binding, prop, prop.propertyName); + } + + if (propertyCurves.ContainsKey(memberName)) + { + Debug.LogError("Animating the same property on multiple components is currently not supported: " + memberName, animatedObject); + } + else + propertyCurves.Add(memberName, prop); + } + else + { + // Color is animated as a Color/Vector4 + if (memberName.EndsWith(".r", StringComparison.Ordinal) || memberName.EndsWith(".g", StringComparison.Ordinal) || + memberName.EndsWith(".b", StringComparison.Ordinal) || memberName.EndsWith(".a", StringComparison.Ordinal) || + memberName.EndsWith(".x", StringComparison.Ordinal) || memberName.EndsWith(".y", StringComparison.Ordinal) || + memberName.EndsWith(".z", StringComparison.Ordinal) || memberName.EndsWith(".w", StringComparison.Ordinal)) + memberName = binding.propertyName.Substring(0, binding.propertyName.LastIndexOf(".", StringComparison.Ordinal)); + + if (propertyCurves.TryGetValue(memberName, out var existing)) + { + existing.AddCurve(curve, binding.propertyName); + } + else + { + var prop = new PropertyCurve(animatedObject, binding.propertyName); + prop.propertyName = memberName; + prop.AddCurve(curve, binding.propertyName); + propertyCurves.Add(memberName, prop); + if (memberName.StartsWith("material.") && animatedObject is Renderer rend) + { + var mat = rend.sharedMaterial; + if (!mat) + { + Debug.LogWarning("Animated missing material?", animatedObject); + } + memberName = memberName.Substring("material.".Length); + prop.propertyName = memberName; + prop.target = mat; + if (memberName.EndsWith("_ST", StringComparison.Ordinal)) + { + prop.propertyType = typeof(Vector4); + } + else + { + var found = false; + var shaderPropertyCount = ShaderUtil.GetPropertyCount(mat.shader); + // var shaderPropertyNames = Enumerable.Range(0, shaderPropertyCount).Select(x => ShaderUtil.GetPropertyName(mat.shader, x)); + + for (var i = 0; i < shaderPropertyCount; i++) + { + if (found) break; + var name = ShaderUtil.GetPropertyName(mat.shader, i); + if (!memberName.EndsWith(name, StringComparison.Ordinal)) continue; + found = true; + var materialProperty = ShaderUtil.GetPropertyType(mat.shader, i); + switch (materialProperty) + { + case ShaderUtil.ShaderPropertyType.Color: + prop.propertyType = typeof(Color); + break; + case ShaderUtil.ShaderPropertyType.Vector: + prop.propertyType = typeof(Vector4); + break; + case ShaderUtil.ShaderPropertyType.Float: + case ShaderUtil.ShaderPropertyType.Range: + prop.propertyType = typeof(float); + break; + case ShaderUtil.ShaderPropertyType.TexEnv: + prop.propertyType = typeof(Texture); + break; +#if UNITY_2021_1_OR_NEWER + case ShaderUtil.ShaderPropertyType.Int: + prop.propertyType = typeof(int); + break; +#endif + default: + Debug.LogWarning(null, "Looks like there's a new shader property type - please report a bug!"); + break; + } + } + } + // The type can still be missing if the animated property doesnt exist on the shader anymore + if (prop.propertyType == null) + { + foreach (var name in prop.curveName) + { + if (prop.propertyType != null) break; + // we can only really resolve a color here by the name + if (name.EndsWith(".r") || name.EndsWith(".g") || name.EndsWith(".b") || name.EndsWith(".a")) + prop.propertyType = typeof(Color); + } + if (prop.propertyType == null) + Debug.LogWarning(null, "Animated property is missing/unknown: " + binding.propertyName, animatedObject); + } + } + else if (animatedObject is Light) + { + switch (memberName) + { + case "m_Color": + prop.propertyType = typeof(Color); + break; + case "m_Intensity": + case "m_Range": + case "m_SpotAngle": + case "m_InnerSpotAngle": + prop.propertyType = typeof(float); + break; + } + } + else if (animatedObject is Camera) + { + // types match, names are explicitly handled in ExporterAnimationPointer.cs + var lowercaseName = prop.propertyName.ToLowerInvariant(); + if (lowercaseName.Contains("m_backgroundcolor")) + { + prop.propertyType = typeof(Color); + prop.propertyName = "backgroundColor"; + } + } + else + { + TryFindMemberBinding(binding, prop, prop.propertyName); + // var member = FindMemberOnTypeIncludingBaseTypes(binding.type, prop.propertyName); + // if (member is FieldInfo field) prop.propertyType = field.FieldType; + // else if (member is PropertyInfo p) prop.propertyType = p.PropertyType; + // if(prop.propertyType == null) + // Debug.LogWarning($"Member {prop.propertyName} not found on {binding.type}: implicitly handling animated property {prop.propertyName} ({prop.propertyType}) on target {prop.target}", prop.target); + } + } + } + } + + private static bool TryFindMemberBinding(EditorCurveBinding binding, PropertyCurve prop, string memberName, int iteration = 0) + { + // explicitly handled + if(binding.type == typeof(Camera) || binding.type == typeof(Light)) + return true; + + if (memberName == "m_IsActive") + { + prop.propertyType = typeof(float); + prop.propertyName = "activeSelf"; + return true; + } + + if (binding.type == typeof(Animator)) + { + // These seem to be magic names when exporting humanoid animation (?) + if (memberName == "MotionT" || memberName == "MotionQ") + { + return false; + } + } + + var member = FindMemberOnTypeIncludingBaseTypes(binding.type, memberName); + if (member is FieldInfo field) prop.propertyType = field.FieldType; + else if (member is PropertyInfo p) prop.propertyType = p.PropertyType; + if (member != null) + { + prop.propertyName = member.Name; + return true; + } + + if (iteration == 0) + { + // some members start with m_, for example m_AnchoredPosition in RectTransform but the field/property name is actually anchoredPosition + if (memberName.StartsWith("m_")) + { + memberName = char.ToLowerInvariant(memberName[2]) + memberName.Substring(3); + return TryFindMemberBinding(binding, prop, memberName, ++iteration); + } + } + + Debug.LogWarning($"Member {prop.propertyName} not found on {binding.type}: implicitly handling animated property {prop.propertyName} ({prop.propertyType}) on target {prop.target}", prop.target); + return false; + } + + private static MemberInfo FindMemberOnTypeIncludingBaseTypes(Type type, string memberName) + { + while (type != null) + { + var member = type.GetMember(memberName, BindingFlags.Default | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (member.Length > 0) return member[0]; + type = type.BaseType; + } + return null; + } + + public void Init() + { + translationCurves = new AnimationCurve[3]; + rotationCurves = new AnimationCurve[4]; + scaleCurves = new AnimationCurve[3]; + weightCurves = new Dictionary(); + } + } + + private static string LogObject(object obj) + { + if (obj == null) return "null"; + + if (obj is Component tr) + return $"{tr.name} (InstanceID: {tr.GetInstanceID()}, Type: {tr.GetType()})"; + if (obj is GameObject go) + return $"{go.name} (InstanceID: {go.GetInstanceID()})"; + + return obj.ToString(); + } + + private Dictionary<(Object key, AnimationClip clip, float speed), AnimationClip> _sampledClipInstanceCache = new Dictionary<(Object, AnimationClip, float), AnimationClip>(); + + private bool ClipRequiresSampling(AnimationClip clip, Transform transform) + { + var clipRequiresSampling = clip.isHumanMotion; + + // we also need to bake if this Animator uses animation rigging for dynamic motion + var haveAnyRigComponents = transform.GetComponents().Any(x => ((Behaviour)x).enabled); + if (haveAnyRigComponents) clipRequiresSampling = true; + + return clipRequiresSampling; + } + + private void ConvertClipToGLTFAnimation(AnimationClip clip, Transform transform, GLTFAnimation animation, float speed) + { + convertClipToGLTFAnimationMarker.Begin(); + + // Generate GLTF.Schema.AnimationChannel and GLTF.Schema.AnimationSampler + // 1 channel per node T/R/S, one sampler per node T/R/S + // Need to keep a list of nodes to convert to indexes + + // Special case for animated humanoids: we also need to cache transform-to-humanoid and make sure that individual clips are used there. + // since we're baking humanoids, we'd otherwise end up with the same clip being applied to different rigs; + // in the future, we may want to support a system like VRM or EXT_skin_humanoid (https://github.com/takahirox/EXT_skin_humanoid) and support runtime retargeting of animations. + if (ClipRequiresSampling(clip, transform)) + { + var animator = transform.GetComponent(); + var avatar = animator ? animator.avatar : null; + + if (clip.isHumanMotion && !avatar) + { + Debug.LogWarning(null, $"No avatar found on animated humanoid, skipping humanoid animation export on {transform.name}", transform); + convertClipToGLTFAnimationMarker.End(); + return; + } + + Object instanceCacheKey = avatar; + + // TODO fully correct would be to use all enabled components as key here +#if UNITY_2020_2_OR_NEWER + var rig = transform.GetComponent() as Behaviour; + if (rig && rig.enabled) instanceCacheKey = rig; +#endif + + var key = (instanceCacheKey, clip, speed); + if (!_sampledClipInstanceCache.ContainsKey(key)) + { + var clonedClip = Object.Instantiate(clip); + clonedClip.name = clip.name; + _sampledClipInstanceCache.Add(key, clonedClip); + } + + clip = _sampledClipInstanceCache[key]; + } + + // 1. browse clip, collect all curves and create a TargetCurveSet for each target + Dictionary targetCurvesBinding = new Dictionary(); + CollectClipCurves(transform.gameObject, clip, targetCurvesBinding); + + // Baking needs all properties, fill missing curves with transform data in 2 keyframes (start, endTime) + // where endTime is clip duration + // Note: we should avoid creating curves for a property if none of it's components is animated + + GenerateMissingCurves(clip.length, transform, ref targetCurvesBinding); + + if (BakeAnimationData) + { + // Bake animation for all animated nodes + foreach (string target in targetCurvesBinding.Keys) + { + var hadAlreadyExportedThisBindingBefore = _clipAndSpeedAndPathToExportedTransform.TryGetValue((clip, speed, target), out var alreadyExportedTransform); + Transform targetTr = target.Length > 0 ? transform.Find(target) : transform; + int newTargetId = targetTr ? GetTransformIndex(targetTr) : -1; + + var targetTrShouldNotBeExported = targetTr && !targetTr.gameObject.activeInHierarchy && !settings.ExportDisabledGameObjects; + + if (hadAlreadyExportedThisBindingBefore && newTargetId < 0) + { + // warn: the transform for this binding exists, but its Node isn't exported. It's probably disabled and "Export Disabled" is off. + if (targetTr) + { + Debug.LogWarning("An animated transform is not part of _exportedTransforms, is the object disabled? " + LogObject(targetTr), targetTr); + } + + // we need to remove the channels and samplers from the existing animation that was passed in if they exist + int alreadyExportedChannelTargetId = GetTransformIndex(alreadyExportedTransform); + animation.Channels.RemoveAll(x => x.Target.Node != null && x.Target.Node.Id == alreadyExportedChannelTargetId); + + if (UseAnimationPointer) + { + animation.Channels.RemoveAll(x => + { + if (x.Target.Extensions != null && x.Target.Extensions.TryGetValue(KHR_animation_pointer.EXTENSION_NAME, out var ext) && ext is KHR_animation_pointer animationPointer) + { + var obj = animationPointer.animatedObject; + if (obj is Component c) + obj = c.transform; + if (obj is Transform tr2 && tr2 == alreadyExportedTransform) + return true; + } + return false; + }); + } + + // TODO remove all samplers from this animation that were targeting the channels that we just removed + // TODO: this doesn't work because we're punching holes in the sampler order; all channel sampler IDs would need to be adjusted as well. + + continue; + } + + if (hadAlreadyExportedThisBindingBefore) + { + int alreadyExportedChannelTargetId = GetTransformIndex(alreadyExportedTransform); + + for (int i = 0; i < animation.Channels.Count; i++) + { + var existingTarget = animation.Channels[i].Target; + if (existingTarget.Node != null && existingTarget.Node.Id != alreadyExportedChannelTargetId) continue; + + // if we're here it means that an existing AnimationChannel already targets the same node that we're currently targeting. + // Without KHR_animation_pointer, that just means we reuse the existing data and tell it to target a new node. + // With KHR_animation_pointer, we need to do the same, and retarget the path to the new node. + if (existingTarget.Extensions != null && existingTarget.Extensions.TryGetValue(KHR_animation_pointer.EXTENSION_NAME, out var ext) && ext is KHR_animation_pointer animationPointer) + { + // Debug.Log($"export? {!targetTrShouldNotBeExported} - {nameof(existingTarget)}: {L(existingTarget)}, {nameof(animationPointer)}: {L(animationPointer.animatedObject)}, {nameof(alreadyExportedTransform)}: {L(alreadyExportedTransform)}, {nameof(targetTr)}: {L(targetTr)}"); + var obj = animationPointer.animatedObject; + Transform animatedTransform = default; + if (obj is Component comp) animatedTransform = comp.transform; + else if (obj is GameObject go) animatedTransform = go.transform; + if (animatedTransform == alreadyExportedTransform) + { + if (targetTrShouldNotBeExported) + { + // Debug.LogWarning("Need to remove this", null); + } + else + { + if (animationPointer.animatedObject is GameObject) + { + animationPointer.animatedObject = targetTr.gameObject; + animationPointer.channel = existingTarget; + animationPointerResolver.Add(animationPointer); + } + else if(animationPointer.animatedObject is Component) + { + var targetType = animationPointer.animatedObject.GetType(); + var newTarget = targetTr.GetComponent(targetType); + if (newTarget) + { + animationPointer.animatedObject = newTarget; + animationPointer.channel = existingTarget; + animationPointerResolver.Add(animationPointer); + } + } + } + } + else if (animationPointer.animatedObject is Material m) + { + var renderer = targetTr.GetComponent(); + if (renderer) + { + // TODO we don't have a good way right now to solve this if there's multiple materials on this renderer... + // would probably need to keep the clip path / binding around and check if that uses a specific index and so on + var newTarget = renderer.sharedMaterial; + if (newTarget) + { + animationPointer.animatedObject = newTarget; + animationPointer.channel = existingTarget; + animationPointerResolver.Add(animationPointer); + } + } + } + } + else if (targetTr) + { + existingTarget.Node = new NodeId() + { + Id = newTargetId, + Root = _root + }; + } + } + continue; + } + + if (targetTrShouldNotBeExported) + { + Debug.Log("Object " + targetTr + " is disabled, not exporting animated curve " + target, targetTr); + continue; + } + + // add to cache: this is the first time we're exporting that particular binding. + if (targetTr) + _clipAndSpeedAndPathToExportedTransform.Add((clip, speed, target), targetTr); + + var curve = targetCurvesBinding[target]; + var speedMultiplier = Mathf.Clamp(speed, 0.01f, Mathf.Infinity); + + // Initialize data + // Bake and populate animation data + float[] times = null; + + // arbitrary properties require the KHR_animation_pointer extension + bool sampledAnimationData = false; + if (UseAnimationPointer && curve.propertyCurves != null && curve.propertyCurves.Count > 0) + { + var curves = curve.propertyCurves; + foreach (KeyValuePair c in curves) + { + var prop = c.Value; + if (BakePropertyAnimation(prop, clip.length, AnimationBakingFramerate, speedMultiplier, out times, out var values)) + { + AddAnimationData(prop.target, prop.propertyName, animation, times, values); + sampledAnimationData = true; + } + } + } + + if (targetTr) + { + // TODO these should be moved into curve.propertyCurves as well + // TODO should filter by possible propertyCurve string names at that point to avoid + // moving KHR_animation_pointer data into regular animations + if (curve.translationCurves.Any(x => x != null)) + { + var trp2 = new PropertyCurve(targetTr, "translation") { propertyType = typeof(Vector3) }; + trp2.curve.AddRange(curve.translationCurves); + if (BakePropertyAnimation(trp2, clip.length, AnimationBakingFramerate, speedMultiplier, out times, out var values2)) + { + AddAnimationData(targetTr, trp2.propertyName, animation, times, values2); + sampledAnimationData = true; + } + } + + if (curve.rotationCurves.Any(x => x != null)) + { + var trp3 = new PropertyCurve(targetTr, "rotation") { propertyType = typeof(Quaternion) }; + trp3.curve.AddRange(curve.rotationCurves.Where(x => x != null)); + if (BakePropertyAnimation(trp3, clip.length, AnimationBakingFramerate, speedMultiplier, out times, out var values3)) + { + AddAnimationData(targetTr, trp3.propertyName, animation, times, values3); + sampledAnimationData = true; + } + + } + + if (curve.scaleCurves.Any(x => x != null)) + { + var trp4 = new PropertyCurve(targetTr, "scale") { propertyType = typeof(Vector3) }; + trp4.curve.AddRange(curve.scaleCurves); + if (BakePropertyAnimation(trp4, clip.length, AnimationBakingFramerate, speedMultiplier, out times, out var values4)) + { + AddAnimationData(targetTr, trp4.propertyName, animation, times, values4); + sampledAnimationData = true; + } + } + + if (curve.weightCurves.Any(x => x.Value != null)) + { + var trp5 = new PropertyCurve(targetTr, "weights") { propertyType = typeof(float) }; + trp5.curve.AddRange(curve.weightCurves.Values); + if (BakePropertyAnimation(trp5, clip.length, AnimationBakingFramerate, speedMultiplier, out times, out var values5)) + { + var targetComponent = targetTr.GetComponent(); + AddAnimationData(targetComponent, trp5.propertyName, animation, times, values5); + sampledAnimationData = true; + } + } + } + + if (!sampledAnimationData) + Debug.LogWarning("Warning: empty animation curves for " + target + " in " + clip + " from " + transform, transform); + } + } + else + { + Debug.LogError("Only baked animation is supported for now. Skipping animation", null); + } + + convertClipToGLTFAnimationMarker.End(); + } + + private static readonly string[] _humanoidMotionPropertyNames = new string[] { "x", "y", "z", "w" }; + private static string[] _humanoidMuscleNames = null; + private void CollectClipCurves(GameObject root, AnimationClip clip, Dictionary targetCurves) + { +#if UNITY_EDITOR + // The clip sampling only gets transform data + // but if we have both transform and blend shape animations + // then we need to continue to sample the blend shape curves + var didSampleCurves = false; + if (ClipRequiresSampling(clip, root.transform)) + { + didSampleCurves = true; + CollectClipCurvesBySampling(root, clip, targetCurves); + } + + foreach (var binding in UnityEditor.AnimationUtility.GetCurveBindings(clip)) + { + var containsPosition = binding.propertyName.Contains("m_LocalPosition"); + var containsScale = binding.propertyName.Contains("m_LocalScale"); + var containsRotation = binding.propertyName.ToLowerInvariant().Contains("localrotation"); + var containsEuler = binding.propertyName.ToLowerInvariant().Contains("localeuler"); + + if (didSampleCurves) + { + // If the animation was already collected by sampling the transform we don't care for any transform data anymore, otherwise we have it twice + if (containsPosition || containsScale || containsRotation || containsEuler) + continue; + + // There's also a bunch of properties from humanoid animation that we want to skip if this is a humanoid animation + if (clip.isHumanMotion) + { + var parts = binding.propertyName.Split('.'); + + // IK Targets and Root Motion + if (parts.Length == 2) + { + var extraNames = new[] { "MotionT", "MotionQ", "RootT", "RootQ", "LeftFootT", "LeftFootQ", "RightFootT", "RightFootQ", "LeftHandT", "LeftHandQ", "RightHandT", "RightHandQ" }; + if (extraNames.Contains(parts[0]) && _humanoidMotionPropertyNames.Contains(parts[1])) + continue; + } + // Muscle Animation + if (_humanoidMuscleNames == null) + { + var list = new MuscleHandle[MuscleHandle.muscleHandleCount]; + MuscleHandle.GetMuscleHandles(list); + _humanoidMuscleNames = list.Select(x => x.name).ToArray(); + } + + if (_humanoidMuscleNames.Contains(binding.propertyName)) + continue; + } + } + + var containsBlendShapeWeight = binding.propertyName.StartsWith("blendShape.", StringComparison.Ordinal); + var containsCompatibleData = containsPosition || containsScale || containsRotation || containsEuler || containsBlendShapeWeight; + + if (!containsCompatibleData && !UseAnimationPointer) + { + Debug.LogWarning("No compatible animation data found in clip binding: " + binding.propertyName + ". You may want to turn KHR_animation_pointer export on.", clip); + continue; + } + + AnimationCurve curve = UnityEditor.AnimationUtility.GetEditorCurve(clip, binding); + + if (!targetCurves.ContainsKey(binding.path)) + { + TargetCurveSet curveSet = new TargetCurveSet(); + curveSet.Init(); + targetCurves.Add(binding.path, curveSet); + } + + TargetCurveSet current = targetCurves[binding.path]; + + if (containsPosition) + { + if (binding.propertyName.Contains(".x")) + current.translationCurves[0] = curve; + else if (binding.propertyName.Contains(".y")) + current.translationCurves[1] = curve; + else if (binding.propertyName.Contains(".z")) + current.translationCurves[2] = curve; + } + else if (containsScale) + { + if (binding.propertyName.Contains(".x")) + current.scaleCurves[0] = curve; + else if (binding.propertyName.Contains(".y")) + current.scaleCurves[1] = curve; + else if (binding.propertyName.Contains(".z")) + current.scaleCurves[2] = curve; + } + else if (containsRotation) + { + if (binding.propertyName.Contains(".x")) + current.rotationCurves[0] = curve; + else if (binding.propertyName.Contains(".y")) + current.rotationCurves[1] = curve; + else if (binding.propertyName.Contains(".z")) + current.rotationCurves[2] = curve; + else if (binding.propertyName.Contains(".w")) + current.rotationCurves[3] = curve; + } + // Takes into account 'localEuler', 'localEulerAnglesBaked' and 'localEulerAnglesRaw' + else if (containsEuler) + { + if (binding.propertyName.Contains(".x")) + current.rotationCurves[0] = curve; + else if (binding.propertyName.Contains(".y")) + current.rotationCurves[1] = curve; + else if (binding.propertyName.Contains(".z")) + current.rotationCurves[2] = curve; + } + // ReSharper disable once ConditionIsAlwaysTrueOrFalse + else if (containsBlendShapeWeight) + { + var weightName = binding.propertyName.Substring("blendShape.".Length); + current.weightCurves.Add(weightName, curve); + } + else if (UseAnimationPointer) + { + var obj = AnimationUtility.GetAnimatedObject(root, binding); + if (obj) + { + current.AddPropertyCurves(obj, curve, binding); + targetCurves[binding.path] = current; + } + + continue; + } + + targetCurves[binding.path] = current; + } + + // object reference curves - in some cases animated data can be contained in here, e.g. for SpriteRenderers. + // this only makes sense when AnimationPointer is on, and someone needs to resolve the data to something in the glTF later via KHR_animation_pointer_Resolver + if (UseAnimationPointer) + { + var objectBindings = AnimationUtility.GetObjectReferenceCurveBindings(clip); + foreach (var binding in objectBindings) + { + var obj = AnimationUtility.GetAnimatedObject(root, binding); + switch (obj) + { + case SpriteRenderer spriteRenderer: + if (!spriteRenderer.sprite) continue; + if (binding.propertyName != "m_Sprite") continue; + + var spriteSheet = spriteRenderer.sprite; + var spriteSheetPath = AssetDatabase.GetAssetPath(spriteSheet); + // will only work with all sprites from the same spritesheet right now + var sprites = AssetDatabase.LoadAllAssetRepresentationsAtPath(spriteSheetPath); + + var path = binding.propertyName; + if (!targetCurves.ContainsKey(path)) + { + var curveSet = new TargetCurveSet(); + curveSet.Init(); + targetCurves.Add(path, curveSet); + } + + TargetCurveSet current = targetCurves[path]; + var objectKeys = AnimationUtility.GetObjectReferenceCurve(clip, binding); + var curve = new AnimationCurve(); + var keyframes = new List(); + var lastKeyframe = default(Keyframe); + for (var index = 0; index < objectKeys.Length; index++) + { + var objectKey = objectKeys[index]; + var spriteIndex = objectKeys[index].value ? Array.IndexOf(sprites, objectKeys[index].value) : 0; + var kf = new Keyframe(objectKey.time, spriteIndex); + + // create intermediate keyframe to make sure we dont have interpolation between sprites + // TODO better would be to allow configuring a constant track + if ((int)lastKeyframe.value != (int)kf.value) + { + var intermediate = new Keyframe(kf.time - 0.0001f, lastKeyframe.value); + keyframes.Add(intermediate); + } + keyframes.Add(kf); + lastKeyframe = kf; + } + curve.keys = keyframes.ToArray(); + current.AddPropertyCurves(obj, curve, binding); + targetCurves[path] = current; + + break; + } + } + } + +#endif + } + + private void GenerateMissingCurves(float endTime, Transform tr, ref Dictionary targetCurvesBinding) + { + var keyList = targetCurvesBinding.Keys.ToList(); + foreach (string target in keyList) + { + Transform targetTr = target.Length > 0 ? tr.Find(target) : tr; + if (targetTr == null) + continue; + + TargetCurveSet current = targetCurvesBinding[target]; + + if (current.weightCurves.Count > 0) + { + // need to sort and generate the other matching curves as constant curves for all blend shapes + var renderer = targetTr.GetComponent(); + var mesh = renderer.sharedMesh; + var shapeCount = mesh.blendShapeCount; + + // need to reorder weights: Unity stores the weights alphabetically in the AnimationClip, + // not in the order of the weights. + var newWeights = new Dictionary(); + for (int i = 0; i < shapeCount; i++) + { + var shapeName = mesh.GetBlendShapeName(i); + var shapeCurve = current.weightCurves.ContainsKey(shapeName) ? current.weightCurves[shapeName] : CreateConstantCurve(renderer.GetBlendShapeWeight(i), endTime); + newWeights.Add(shapeName, shapeCurve); + } + + current.weightCurves = newWeights; + } + + if (current.propertyCurves?.Count > 0) + { + foreach (var kvp in current.propertyCurves) + { + var prop = kvp.Value; + if (prop.propertyType == typeof(Color)) + { + var memberName = prop.propertyName; + if (TryGetCurrentValue(prop.target, memberName, out var value)) + { + // Generate missing color channels (so an animated color has always keyframes for all 4 channels) + + var col = (Color)value; + + var hasRedChannel = prop.FindIndex(v => v.EndsWith(".r")) >= 0; + var hasGreenChannel = prop.FindIndex(v => v.EndsWith(".g")) >= 0; + var hasBlueChannel = prop.FindIndex(v => v.EndsWith(".b")) >= 0; + var hasAlphaChannel = prop.FindIndex(v => v.EndsWith(".a")) >= 0; + + if (!hasRedChannel) AddMissingCurve(memberName + ".r", col.r); + if (!hasGreenChannel) AddMissingCurve(memberName + ".g", col.g); + if (!hasBlueChannel) AddMissingCurve(memberName + ".b", col.b); + if (!hasAlphaChannel) AddMissingCurve(memberName + ".a", col.a); + + void AddMissingCurve(string curveName, float constantValue) + { + var curve = CreateConstantCurve(constantValue, endTime); + prop.curve.Add(curve); + prop.curveName.Add(curveName); + } + } + } + } + } + + targetCurvesBinding[target] = current; + } + } + + private static readonly Dictionary<(Type type, string name), MemberInfo> memberCache = new Dictionary<(Type type, string name), MemberInfo>(); + private static bool TryGetCurrentValue(object instance, string memberName, out object value) + { + if (instance == null || memberName == null) + { + value = null; + return false; + } + + var key = (instance.GetType(), memberName); + if (!memberCache.TryGetValue(key, out var member)) + { + var type = instance.GetType(); + while (type != null) + { + member = type + .GetMember(memberName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) + .FirstOrDefault(); + if (member != null) + { + memberCache.Add(key, member); + break; + } + type = type.BaseType; + } + } + + if (member == null) + { + value = null; + return false; + } + + switch (member) + { + case FieldInfo field: + value = field.GetValue(instance); + return true; + case PropertyInfo property: + value = property.GetValue(instance); + return true; + default: + value = null; + return false; + } + } + + private AnimationCurve CreateConstantCurve(float value, float endTime) + { + // No translation curves, adding them + AnimationCurve curve = new AnimationCurve(); + curve.AddKey(0, value); + curve.AddKey(endTime, value); + return curve; + } + + private bool BakePropertyAnimation(PropertyCurve prop, float length, float bakingFramerate, float speedMultiplier, out float[] times, out object[] values) + { + times = null; + values = null; + + prop.SortCurves(); + if (!prop.Validate()) return false; + + var nbSamples = Mathf.Max(1, Mathf.CeilToInt(length * bakingFramerate)); + var deltaTime = length / nbSamples; + + var _times = new List(nbSamples * 2); + var _values = new List(nbSamples * 2); + + var curveCount = prop.curve.Count; + var keyframes = prop.curve.Select(x => x.keys).ToArray(); + var keyframeIndex = new int[curveCount]; + + // Assuming all the curves exist now + for (var i = 0; i < nbSamples; ++i) + { + var time = i * deltaTime; + if (i == nbSamples - 1) time = length; + + for (var k = 0; k < curveCount; k++) + while (keyframeIndex[k] < keyframes[k].Length - 1 && keyframes[k][keyframeIndex[k]].time < time) + keyframeIndex[k]++; + + var isConstant = false; + for (var k = 0; k < curveCount; k++) + isConstant |= float.IsInfinity(keyframes[k][keyframeIndex[k]].inTangent); + + if (isConstant && _times.Count > 0) + { + var lastTime = _times[_times.Count - 1]; + var t0 = lastTime + 0.0001f; + if (i != nbSamples - 1) + time += deltaTime * 0.999f; + _times.Add(t0 / speedMultiplier); + _times.Add(time / speedMultiplier); + var success = AddValue(time); + success &= AddValue(time); + if (!success) return false; + } + else + { + var t0 = time / speedMultiplier; + _times.Add(t0); + if (!AddValue(t0)) return false; + } + + bool AddValue(float t) + { + if (prop.curve.Count == 1) + { + var value = prop.curve[0].Evaluate(t); + _values.Add(value); + } + else + { + var type = prop.propertyType; + + if (typeof(Vector2) == type) + { + _values.Add(new Vector2(prop.Evaluate(t, 0), prop.Evaluate(t, 1))); + } + else if (typeof(Vector3) == type) + { + var vec = new Vector3(prop.Evaluate(t, 0), prop.Evaluate(t, 1), prop.Evaluate(t, 2)); + _values.Add(vec); + } + else if (typeof(Vector4) == type) + { + _values.Add(new Vector4(prop.Evaluate(t, 0), prop.Evaluate(t, 1), prop.Evaluate(t, 2), prop.Evaluate(t, 3))); + } + else if (typeof(Color) == type) + { + var r = prop.Evaluate(t, 0); + var g = prop.Evaluate(t, 1); + var b = prop.Evaluate(t, 2); + var a = prop.Evaluate(t, 3); + _values.Add(new Color(r, g, b, a)); + } + else if (typeof(Quaternion) == type) + { + if (prop.curve.Count == 3) + { + Quaternion eulerToQuat = Quaternion.Euler(prop.Evaluate(t, 0), prop.Evaluate(t, 1), prop.Evaluate(t, 2)); + _values.Add(new Quaternion(eulerToQuat.x, eulerToQuat.y, eulerToQuat.z, eulerToQuat.w)); + } + else if (prop.curve.Count == 4) + { + _values.Add(new Quaternion(prop.Evaluate(t, 0), prop.Evaluate(t, 1), prop.Evaluate(t, 2), prop.Evaluate(t, 3))); + } + else + { + Debug.LogError(null, $"Rotation animation has {prop.curve.Count} curves, expected Euler Angles (3 curves) or Quaternions (4 curves). This is not supported, make sure to animate all components of rotations. Animated object {prop.target}", prop.target); + } + } + else if (typeof(float) == type) + { + foreach (var val in prop.curve) + _values.Add(val.Evaluate(t)); + } + else + { + switch (prop.propertyName) + { + case "MotionT": + case "MotionQ": + // Ignore + break; + default: + Debug.LogWarning(null, "Property is animated but can't be exported - Name: " + prop.propertyName + ", Type: " + prop.propertyType + ". Does its target exist? You can enable KHR_animation_pointer export in the Project Settings to export more animated properties."); + break; + + } + return false; + } + } + + return true; + } + } + + times = _times.ToArray(); + values = _values.ToArray(); + + RemoveUnneededKeyframes(ref times, ref values); + + return true; + } +#endif + + [Obsolete("Please use " + nameof(GetTransformIndex), false)] + public int GetNodeIdFromTransform(Transform transform) + { + return GetTransformIndex(transform); + } + + internal int GetIndex(object obj) + { + switch (obj) + { + case Material m: return GetMaterialIndex(m); + case Light l: return GetLightIndex(l); + case Camera c: return GetCameraIndex(c); + case Transform t: return GetTransformIndex(t); + case GameObject g: return GetTransformIndex(g.transform); + case Component k: return GetTransformIndex(k.transform); + } + + return -1; + } + + public int GetTransformIndex(Transform transform) + { + if (transform && _exportedTransforms.TryGetValue(transform.GetInstanceID(), out var index)) return index; + return -1; + } + + public int GetMaterialIndex(Material mat) + { + if (mat && _exportedMaterials.TryGetValue(mat.GetInstanceID(), out var index)) return index; + return -1; + } + + public int GetLightIndex(Light light) + { + if (light && _exportedLights.TryGetValue(light.GetInstanceID(), out var index)) return index; + return -1; + } + + public int GetCameraIndex(Camera cam) + { + if (cam && _exportedCameras.TryGetValue(cam.GetInstanceID(), out var index)) return index; + return -1; + } + + public IEnumerable<(int subMeshIndex, MeshPrimitive prim)> GetPrimitivesForMesh(Mesh mesh) + { + if (!_meshToPrims.TryGetValue(mesh, out var prims)) yield break; + foreach (var k in prims.subMeshPrimitives) + { + yield return (k.Key, k.Value); + } + } + + private static void DecomposeEmissionColor(Color input, out Color output, out float intensity) + { + var emissiveAmount = input.linear; + var maxEmissiveAmount = Mathf.Max(emissiveAmount.r, emissiveAmount.g, emissiveAmount.b); + if (maxEmissiveAmount > 1) + { + emissiveAmount.r /= maxEmissiveAmount; + emissiveAmount.g /= maxEmissiveAmount; + emissiveAmount.b /= maxEmissiveAmount; + } + emissiveAmount.a = Mathf.Clamp01(emissiveAmount.a); + + // this feels wrong but leads to the right results, probably the above calculations are in the wrong color space + maxEmissiveAmount = Mathf.LinearToGammaSpace(maxEmissiveAmount); + + output = emissiveAmount; + intensity = maxEmissiveAmount; + } + + private static void DecomposeScaleOffset(Vector4 input, out Vector2 scale, out Vector2 offset) + { + scale = new Vector2(input.x, input.y); + offset = new Vector2(input.z, 1 - input.w - input.y); + } + + private bool ArrayRangeEquals(object[] array, int sectionLength, int lastExportedSectionStart, int prevSectionStart, int sectionStart, int nextSectionStart) + { + var equals = true; + for (int i = 0; i < sectionLength; i++) + { + equals &= (lastExportedSectionStart >= prevSectionStart || array[lastExportedSectionStart + i].Equals(array[sectionStart + i])) && + array[prevSectionStart + i].Equals(array[sectionStart + i]) && + array[sectionStart + i].Equals(array[nextSectionStart + i]); + if (!equals) return false; + } + + return true; + } + + public void RemoveUnneededKeyframes(ref float[] times, ref object[] values) + { + if (times.Length <= 1) + return; + + removeAnimationUnneededKeyframesMarker.Begin(); + + var t2 = new List(times.Length); + var v2 = new List(values.Length); + + var arraySize = values.Length / times.Length; + + if (arraySize == 1) + { + t2.Add(times[0]); + v2.Add(values[0]); + + int lastExportedIndex = 0; + for (int i = 1; i < times.Length - 1; i++) + { + removeAnimationUnneededKeyframesCheckIdenticalMarker.Begin(); + var isIdentical = (lastExportedIndex >= i - 1 || values[lastExportedIndex].Equals(values[i])) && values[i - 1].Equals(values[i]) && values[i].Equals(values[i + 1]); + if (!isIdentical) + { + lastExportedIndex = i; + t2.Add(times[i]); + v2.Add(values[i]); + } + removeAnimationUnneededKeyframesCheckIdenticalMarker.End(); + } + + var max = times.Length - 1; + t2.Add(times[max]); + v2.Add(values[max]); + } + else + { + var singleFrameWeights = new object[arraySize]; + Array.Copy(values, 0, singleFrameWeights, 0, arraySize); + t2.Add(times[0]); + v2.AddRange(singleFrameWeights); + + int lastExportedIndex = 0; + for (int i = 1; i < times.Length - 1; i++) + { + removeAnimationUnneededKeyframesCheckIdenticalMarker.Begin(); + var isIdentical = ArrayRangeEquals(values, arraySize, lastExportedIndex * arraySize, (i - 1) * arraySize, i * arraySize, (i + 1) * arraySize); + if (!isIdentical) + { + Array.Copy(values, (i - 1) * arraySize, singleFrameWeights, 0, arraySize); + v2.AddRange(singleFrameWeights); + t2.Add(times[i]); + } + + removeAnimationUnneededKeyframesCheckIdenticalMarker.End(); + } + + var max = times.Length - 1; + t2.Add(times[max]); + var skipped = values.Skip((max - 1) * arraySize).ToArray(); + v2.AddRange(skipped.Take(arraySize)); + } + + times = t2.ToArray(); + values = v2.ToArray(); + + removeAnimationUnneededKeyframesMarker.End(); + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimation.cs.meta b/Runtime/Scripts/SceneExporter/ExporterAnimation.cs.meta new file mode 100644 index 000000000..a186f00c4 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4e5800392410254a94542e26677d4e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs b/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs new file mode 100644 index 000000000..9e4b46a28 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs @@ -0,0 +1,213 @@ +#if UNITY_EDITOR +#define ANIMATION_EXPORT_SUPPORTED +#endif + +#if ANIMATION_EXPORT_SUPPORTED && (UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER) +#define ANIMATION_SUPPORTED +#endif + +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; +using UnityEngine.Animations; +using UnityEngine.Playables; +using UnityGLTF.Timeline; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { +#if ANIMATION_SUPPORTED + internal void CollectClipCurvesBySampling(GameObject root, AnimationClip clip, Dictionary targetCurves) + { + var recorder = new GLTFRecorder(root.transform, false, false, false); + + var playableGraph = PlayableGraph.Create(); + var animationClipPlayable = (Playable) AnimationClipPlayable.Create(playableGraph, clip); + +#if UNITY_2020_2_OR_NEWER + var rigs = root.GetComponents(); + if (rigs != null) + { + foreach (var rig in rigs) + { + rig.StopPreview(); // seems to be needed in some cases because the Rig isn't properly marked as non-initialized by Unity + rig.StartPreview(); + animationClipPlayable = rig.BuildPreviewGraph(playableGraph, animationClipPlayable); // modifies the playable to include Animation Rigging data + } + } + else + { + rigs = System.Array.Empty(); + } +#endif + + var playableOutput = AnimationPlayableOutput.Create(playableGraph, "Animation", root.GetComponent()); + playableOutput.SetSourcePlayable(animationClipPlayable); + playableGraph.SetTimeUpdateMode(DirectorUpdateMode.Manual); + + var timeStep = 1.0f / 30.0f; + var length = clip.length; + var time = 0f; + +#if UNITY_2020_1_OR_NEWER + // This seems to not properly cleanup when exporting animation from inside a prefab asset + // e.g. when exporting animator with humanoid animation the animator is left disabled after this + // the animator is disabled after the first call to `SampleAnimationClip` + var driver = ScriptableObject.CreateInstance(); + AnimationMode.StartAnimationMode(driver); +#else + AnimationMode.StartAnimationMode(); +#endif + AnimationMode.BeginSampling(); + + // if this is a Prefab, we need to collect property modifications here to work around + // limitations of AnimationMode - otherwise prefab modifications will persist... + var isPrefabAsset = PrefabUtility.IsPartOfPrefabAsset(root); + var prefabModifications = isPrefabAsset ? PrefabUtility.GetPropertyModifications(root) : default; + Undo.RegisterFullObjectHierarchyUndo(root, "Animation Sampling"); + + // add the root since we need to shift it around - + // it will be reset when exiting AnimationMode again and will not be dirty. + AnimationMode_AddTransformTRS(root); + + // TODO not entirely sure if only checking for humanMotion here is correct + if (clip.isHumanMotion) + { + root.transform.localPosition = Vector3.zero; + root.transform.localRotation = Quaternion.identity; + // root.transform.localScale = Vector3.one; + } + + // first frame + foreach (var rig in rigs) rig.UpdatePreviewGraph(playableGraph); + AnimationMode.SamplePlayableGraph(playableGraph, 0, time); + + // for Animation Rigging its often desired to have one complete loop first, so we need to prewarm to have a nice exportable animation + var prewarm = rigs.Length > 0 && clip.isLooping; + if (prewarm) + { + while (time + timeStep < length) + { + time += timeStep; + foreach (var rig in rigs) rig.UpdatePreviewGraph(playableGraph); + AnimationMode.SamplePlayableGraph(playableGraph, 0, time); + } + + // reset time to the start + time = 0; + } + + recorder.StartRecording(time); + + while (time + timeStep < length) + { + time += timeStep; + foreach (var rig in rigs) rig.UpdatePreviewGraph(playableGraph); + AnimationMode.SamplePlayableGraph(playableGraph, 0, time); + recorder.UpdateRecording(time); + } + + // last frame + time = length; +#if UNITY_2020_2_OR_NEWER + foreach (var rig in rigs) rig.UpdatePreviewGraph(playableGraph); +#endif + AnimationMode.SamplePlayableGraph(playableGraph, 0, time); + recorder.UpdateRecording(time); + +#if UNITY_2020_2_OR_NEWER + foreach (var rig in rigs) rig.StopPreview(); +#endif + + AnimationMode.EndSampling(); +#if UNITY_2020_1_OR_NEWER + AnimationMode.StopAnimationMode(driver); +#else + AnimationMode.StopAnimationMode(); +#endif + + // reset prefab modifications if this was a prefab asset + if (isPrefabAsset) { + PrefabUtility.SetPropertyModifications(root, prefabModifications); + } + + // seems to be necessary because the animation sampling API doesn't fully work; + // sometimes samples still "leak" into property modifications + Undo.FlushUndoRecordObjects(); + Undo.PerformUndo(); + + recorder.EndRecording(out var data); + if (data == null || !data.Any()) return; + + string CalculatePath(Transform child, Transform parent) + { + if (child == parent) return ""; + if (child.parent == null) return ""; + var parentPath = CalculatePath(child.parent, parent); + if (!string.IsNullOrEmpty(parentPath)) return parentPath + "/" + child.name; + return child.name; + } + + // convert AnimationData back to AnimationCurve (slow) + // better would be to directly emit the animation here, but then we need to be careful with partial hierarchies + // and other cases that can go wrong. + foreach (var kvp in data) + { + var curveSet = new TargetCurveSet(); + curveSet.Init(); + + var positionTrack = kvp.Value.tracks.FirstOrDefault(x => x.propertyName == "translation"); + if (positionTrack != null) + { + var t0 = positionTrack.times; + var frameData = positionTrack.values; + var posX = new AnimationCurve(t0.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).x)).ToArray()); + var posY = new AnimationCurve(t0.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).y)).ToArray()); + var posZ = new AnimationCurve(t0.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).z)).ToArray()); + curveSet.translationCurves = new [] { posX, posY, posZ }; + } + + var rotationTrack = kvp.Value.tracks.FirstOrDefault(x => x.propertyName == "rotation"); + if (rotationTrack != null) + { + var t1 = rotationTrack.times; + var frameData = rotationTrack.values; + var rotX = new AnimationCurve(t1.Select((value, index) => new Keyframe((float)value, ((Quaternion)frameData[index]).x)).ToArray()); + var rotY = new AnimationCurve(t1.Select((value, index) => new Keyframe((float)value, ((Quaternion)frameData[index]).y)).ToArray()); + var rotZ = new AnimationCurve(t1.Select((value, index) => new Keyframe((float)value, ((Quaternion)frameData[index]).z)).ToArray()); + var rotW = new AnimationCurve(t1.Select((value, index) => new Keyframe((float)value, ((Quaternion)frameData[index]).w)).ToArray()); + curveSet.rotationCurves = new [] { rotX, rotY, rotZ, rotW }; + } + + var scaleTrack = kvp.Value.tracks.FirstOrDefault(x => x.propertyName == "scale"); + if (scaleTrack != null) + { + var t2 = scaleTrack.times; + var frameData = scaleTrack.values; + var sclX = new AnimationCurve(t2.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).x)).ToArray()); + var sclY = new AnimationCurve(t2.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).y)).ToArray()); + var sclZ = new AnimationCurve(t2.Select((value, index) => new Keyframe((float)value, ((Vector3)frameData[index]).z)).ToArray()); + curveSet.scaleCurves = new [] { sclX, sclY, sclZ }; + } + + var calculatedPath = CalculatePath(kvp.Key, root.transform); + targetCurves[calculatedPath] = curveSet; + } + } + + private static MethodInfo _AddTransformTRS; + private static void AnimationMode_AddTransformTRS(GameObject gameObject) + { + if (!gameObject) return; + if (_AddTransformTRS == null) _AddTransformTRS = typeof(AnimationMode).GetMethod("AddTransformTRS", (BindingFlags)(-1)); + _AddTransformTRS?.Invoke(null, new object[] { gameObject, "" }); + } +#endif + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs.meta b/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs.meta new file mode 100644 index 000000000..c2b856769 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimationHumanoid.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 16ea658e76ce4a14b5ef14d825c52147 +timeCreated: 1662914636 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs b/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs new file mode 100644 index 000000000..9a6d14634 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs @@ -0,0 +1,649 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GLTF.Schema; +using GLTF.Schema.KHR_lights_punctual; +using UnityEngine; +using UnityGLTF.Extensions; +using UnityGLTF.JsonPointer; +using UnityGLTF.Plugins; +using Object = UnityEngine.Object; + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + internal readonly List pointerResolvers = new List(); + private readonly KHR_animation_pointer_Resolver animationPointerResolver = new KHR_animation_pointer_Resolver(); + +#region Shader Property Names + // ReSharper disable InconsistentNaming + + private static readonly int _MainTex = Shader.PropertyToID("_MainTex"); + private static readonly int _BaseMap = Shader.PropertyToID("_BaseMap"); + private static readonly int _BaseColorTexture = Shader.PropertyToID("_BaseColorTexture"); + private static readonly int baseColorTexture = Shader.PropertyToID("baseColorTexture"); + private static readonly int _EmissionMap = Shader.PropertyToID("_EmissionMap"); + private static readonly int _EmissiveTexture = Shader.PropertyToID("_EmissiveTexture"); + private static readonly int emissiveTexture = Shader.PropertyToID("emissiveTexture"); + private static readonly int _BumpMap = Shader.PropertyToID("_BumpMap"); + private static readonly int _NormalTexture = Shader.PropertyToID("_NormalTexture"); + private static readonly int normalTexture = Shader.PropertyToID("normalTexture"); + private static readonly int _OcclusionMap = Shader.PropertyToID("_OcclusionMap"); + private static readonly int _OcclusionTexture = Shader.PropertyToID("_OcclusionTexture"); + private static readonly int occlusionTexture = Shader.PropertyToID("occlusionTexture"); + + // ReSharper restore InconsistentNaming +#endregion + + public void RegisterResolver(IJsonPointerResolver resolver) + { + if (!pointerResolvers.Contains(resolver)) + pointerResolvers.Add(resolver); + } + + public void AddAnimationData(Object animatedObject, string propertyName, GLTFAnimation animation, float[] times, object[] values) + { + if (!animatedObject) return; + + // TODO should skip property switches that are not supported without KHR_animation_pointer + // TODO should probably start with the transform check below and stop afterwards if KHR_animation_pointer is off + + if (values.Length <= 0) return; + for (var i = 0; i < values.Length; i++) + { + if (values[i] != null) continue; + + Debug.LogError(null, $"GLTFExporter error: value {i} in animated property \"{propertyName}\" is null. Skipping", animatedObject); + return; + } + + var channelTargetId = GetIndex(animatedObject); + if (channelTargetId < 0) + { + Debug.LogWarning(null, $"Animation for {animatedObject.name} ({animatedObject.GetType()}) has not been exported as the object itself is not exported (disabled/EditorOnly). (InstanceID: {animatedObject.GetInstanceID()})", animatedObject); + return; + } + + bool flipValueRange = false; + float? valueMultiplier = null; + bool isTextureTransform = false; + bool keepColorAlpha = true; + bool convertToLinearColor = false; + string secondPropertyName = null; + string extensionName = null; + var propertyType = values[0]?.GetType(); + + switch (animatedObject) + { + case Material material: + // Debug.Log("material: " + material + ", propertyName: " + propertyName); + // mapping from known Unity property names to glTF property names + switch (propertyName) + { + case "_Color": + case "_BaseColor": + case "_BaseColorFactor": + case "baseColorFactor": + propertyName = "pbrMetallicRoughness/baseColorFactor"; + convertToLinearColor = true; + break; + case "_Smoothness": + case "_Glossiness": + propertyName = "pbrMetallicRoughness/roughnessFactor"; + flipValueRange = true; + break; + case "_Roughness": + case "_RoughnessFactor": + case "roughnessFactor": + propertyName = "pbrMetallicRoughness/roughnessFactor"; + break; + case "_Metallic": + case "_MetallicFactor": + case "metallicFactor": + propertyName = "pbrMetallicRoughness/metallicFactor"; + break; + case "_MainTex_ST": + case "_BaseMap_ST": + case "_BaseColorTexture_ST": + case "baseColorTexture_ST": + if (!(material.HasProperty(_MainTex) && material.GetTexture(_MainTex)) && + !(material.HasProperty(_BaseMap) && material.GetTexture(_BaseMap)) && + !(material.HasProperty(_BaseColorTexture) && material.GetTexture(_BaseColorTexture)) && + !(material.HasProperty(baseColorTexture) && material.GetTexture(baseColorTexture))) return; + propertyName = $"pbrMetallicRoughness/baseColorTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}"; + secondPropertyName = $"pbrMetallicRoughness/baseColorTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}"; + isTextureTransform = true; + extensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME; + break; + case "_EmissionColor": + case "_EmissiveFactor": + case "emissiveFactor": + propertyName = "emissiveFactor"; + secondPropertyName = $"extensions/{KHR_materials_emissive_strength_Factory.EXTENSION_NAME}/{nameof(KHR_materials_emissive_strength.emissiveStrength)}"; + extensionName = KHR_materials_emissive_strength_Factory.EXTENSION_NAME; + keepColorAlpha = false; + convertToLinearColor = true; + break; + case "_EmissionMap_ST": + case "_EmissiveTexture_ST": + case "emissiveTexture_ST": + if (!(material.HasProperty(_EmissionMap) && material.GetTexture(_EmissionMap)) && + !(material.HasProperty(_EmissiveTexture) && material.GetTexture(_EmissiveTexture)) && + !(material.HasProperty(emissiveTexture) && material.GetTexture(emissiveTexture))) return; + propertyName = $"emissiveTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}"; + secondPropertyName = $"emissiveTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}"; + isTextureTransform = true; + extensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME; + break; + case "_Cutoff": + case "_AlphaCutoff": + case "alphaCutoff": + propertyName = "alphaCutoff"; + break; + case "_BumpScale": + case "_NormalScale": + case "normalScale": + case "normalTextureScale": + propertyName = "normalTexture/scale"; + break; + case "_BumpMap_ST": + case "_NormalTexture_ST": + case "normalTexture_ST": + if (!(material.HasProperty(_BumpMap) && material.GetTexture(_BumpMap)) && + !(material.HasProperty(_NormalTexture) && material.GetTexture(_NormalTexture)) && + !(material.HasProperty(normalTexture) && material.GetTexture(normalTexture))) return; + propertyName = $"normalTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}"; + secondPropertyName = $"normalTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}"; + isTextureTransform = true; + extensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME; + break; + case "_OcclusionStrength": + case "occlusionStrength": + case "occlusionTextureStrength": + propertyName = "occlusionTexture/strength"; + break; + case "_OcclusionMap_ST": + case "_OcclusionTexture_ST": + case "occlusionTexture_ST": + if (!(material.HasProperty(_OcclusionMap) && material.GetTexture(_OcclusionMap)) && + !(material.HasProperty(_OcclusionTexture) && material.GetTexture(_OcclusionTexture)) && + !(material.HasProperty(occlusionTexture) && material.GetTexture(occlusionTexture))) return; + propertyName = $"occlusionTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.SCALE}"; + secondPropertyName = $"occlusionTexture/extensions/{ExtTextureTransformExtensionFactory.EXTENSION_NAME}/{ExtTextureTransformExtensionFactory.OFFSET}"; + isTextureTransform = true; + extensionName = ExtTextureTransformExtensionFactory.EXTENSION_NAME; + break; + + // TODO metallic/roughness _ST + + // KHR_materials_transmission + case "_TransmissionFactor": + case "transmissionFactor": + propertyName = $"extensions/{KHR_materials_transmission_Factory.EXTENSION_NAME}/{nameof(KHR_materials_transmission.transmissionFactor)}"; + extensionName = KHR_materials_transmission_Factory.EXTENSION_NAME; + break; + + // KHR_materials_volume + case "_ThicknessFactor": + case "thicknessFactor": + propertyName = $"extensions/{KHR_materials_volume_Factory.EXTENSION_NAME}/{nameof(KHR_materials_volume.thicknessFactor)}"; + extensionName = KHR_materials_volume_Factory.EXTENSION_NAME; + break; + case "_AttenuationDistance": + case "attenuationDistance": + propertyName = $"extensions/{KHR_materials_volume_Factory.EXTENSION_NAME}/{nameof(KHR_materials_volume.attenuationDistance)}"; + extensionName = KHR_materials_volume_Factory.EXTENSION_NAME; + break; + case "_AttenuationColor": + case "attenuationColor": + propertyName = $"extensions/{KHR_materials_volume_Factory.EXTENSION_NAME}/{nameof(KHR_materials_volume.attenuationColor)}"; + extensionName = KHR_materials_volume_Factory.EXTENSION_NAME; + keepColorAlpha = false; + break; + + // KHR_materials_ior + case "_IOR": + case "ior": + propertyName = $"extensions/{KHR_materials_ior_Factory.EXTENSION_NAME}/{nameof(KHR_materials_ior.ior)}"; + extensionName = KHR_materials_ior_Factory.EXTENSION_NAME; + break; + + // KHR_materials_iridescence + case "_IridescenceFactor": + case "iridescenceFactor": + propertyName = $"extensions/{KHR_materials_iridescence_Factory.EXTENSION_NAME}/{nameof(KHR_materials_iridescence.iridescenceFactor)}"; + extensionName = KHR_materials_iridescence_Factory.EXTENSION_NAME; + break; + case "_IridescenceIor": + case "iridescenceIor": + propertyName = $"extensions/{KHR_materials_iridescence_Factory.EXTENSION_NAME}/{nameof(KHR_materials_iridescence.iridescenceIor)}"; + extensionName = KHR_materials_iridescence_Factory.EXTENSION_NAME; + break; + case "_IridescenceThicknessMinimum": + case "iridescenceThicknessMinimum": + propertyName = $"extensions/{KHR_materials_iridescence_Factory.EXTENSION_NAME}/{nameof(KHR_materials_iridescence.iridescenceThicknessMinimum)}"; + extensionName = KHR_materials_iridescence_Factory.EXTENSION_NAME; + break; + case "_IridescenceThicknessMaximum": + case "iridescenceThicknessMaximum": + propertyName = $"extensions/{KHR_materials_iridescence_Factory.EXTENSION_NAME}/{nameof(KHR_materials_iridescence.iridescenceThicknessMaximum)}"; + extensionName = KHR_materials_iridescence_Factory.EXTENSION_NAME; + break; + + // KHR_materials_specular + case "_SpecularFactor": + case "specularFactor": + propertyName = $"extensions/{KHR_materials_specular_Factory.EXTENSION_NAME}/{nameof(KHR_materials_specular.specularFactor)}"; + extensionName = KHR_materials_specular_Factory.EXTENSION_NAME; + break; + case "_SpecularColorFactor": + case "specularColorFactor": + propertyName = $"extensions/{KHR_materials_specular_Factory.EXTENSION_NAME}/{nameof(KHR_materials_specular.specularColorFactor)}"; + extensionName = KHR_materials_specular_Factory.EXTENSION_NAME; + keepColorAlpha = false; + break; + + // TODO KHR_materials_clearcoat + // case "_ClearcoatFactor": + // case "clearcoatFactor": + // propertyName = $"extensions/{KHR_materials_clearcoat_Factory.EXTENSION_NAME}/{nameof(KHR_materials_clearcoat.clearcoatFactor)}"; + // extensionName = KHR_materials_clearcoat_Factory.EXTENSION_NAME; + // break; + // case "_ClearcoatRoughnessFactor": + // case "clearcoatRoughnessFactor": + // propertyName = $"extensions/{KHR_materials_clearcoat_Factory.EXTENSION_NAME}/{nameof(KHR_materials_clearcoat.clearcoatRoughnessFactor)}"; + // extensionName = KHR_materials_clearcoat_Factory.EXTENSION_NAME; + // break; + + // TODO KHR_materials_sheen + // case "_SheenColorFactor": + // case "sheenColorFactor": + // propertyName = $"extensions/{KHR_materials_sheen_Factory.EXTENSION_NAME}/{nameof(KHR_materials_sheen.sheenColorFactor)}"; + // extensionName = KHR_materials_sheen_Factory.EXTENSION_NAME; + // keepColorAlpha = false; + // break; + // case "_SheenRoughnessFactor": + // case "sheenRoughnessFactor": + // propertyName = $"extensions/{KHR_materials_sheen_Factory.EXTENSION_NAME}/{nameof(KHR_materials_sheen.sheenRoughnessFactor)}"; + // extensionName = KHR_materials_sheen_Factory.EXTENSION_NAME; + // break; + default: + Debug.Log(LogType.Warning, "Unknown property name on Material " + material + ": " + propertyName); + break; + } + break; + case Light light: + extensionName = KHR_lights_punctualExtensionFactory.EXTENSION_NAME; + switch (propertyName) + { + case "m_Color": + propertyName = $"color"; + keepColorAlpha = false; + convertToLinearColor = true; + break; + case "m_Intensity": + valueMultiplier = Mathf.PI; // matches ExportLight + propertyName = $"intensity"; + break; + case "m_SpotAngle": + valueMultiplier = Mathf.Deg2Rad / 2; + propertyName = $"spot/outerConeAngle"; + break; + case "m_InnerSpotAngle": + valueMultiplier = Mathf.Deg2Rad / 2; + propertyName = $"spot/innerConeAngle"; + break; + case "m_Range": + propertyName = "range"; + break; + default: + extensionName = null; + Debug.Log(LogType.Warning, "Unknown property name on Light " + light + ": " + propertyName); + break; + } + break; + case Camera camera: + if(camera.orthographic) + { + switch (propertyName) + { + case "orthographic size": + // TODO conversion factor + propertyName = "orthographic/ymag"; + secondPropertyName = "orthographic/xmag"; + break; + case "near clip plane": + propertyName = "orthographic/znear"; + break; + case "far clip plane": + propertyName = "orthographic/zfar"; + break; + default: + Debug.Log(LogType.Warning, "Unknown property name on Camera " + camera + ": " + propertyName); + break; + } + } + else + { + switch (propertyName) + { + case "field of view": + // TODO conversion factor + propertyName = "perspective/yfov"; + valueMultiplier = Mathf.Deg2Rad; + break; + case "near clip plane": + propertyName = "perspective/znear"; + break; + case "far clip plane": + propertyName = "perspective/zfar"; + break; + case "backgroundColor": + convertToLinearColor = true; + break; + default: + Debug.Log(LogType.Warning, "Unknown property name on Camera " + camera + ": " + propertyName); + break; + } + } + break; + case SkinnedMeshRenderer skinnedMesh: + // this code is adapted from SkinnedMeshRendererEditor (which calculates the right range for sliders to show) + // instead of calculating per blend shape, we're assuming all blendshapes have the same min/max here though. + var minBlendShapeFrameWeight = 0.0f; + var maxBlendShapeFrameWeight = 0.0f; + + var sharedMesh = skinnedMesh.sharedMesh; + if (!sharedMesh) + { + Debug.Log(LogType.Error, "No mesh on SkinnedMeshRenderer " + skinnedMesh + ", skipping animation"); + return; + } + + var shapeCount = sharedMesh.blendShapeCount; + for (int index = 0; index < shapeCount; ++index) + { + var blendShapeFrameCount = sharedMesh.GetBlendShapeFrameCount(index); + for (var frameIndex = 0; frameIndex < blendShapeFrameCount; ++frameIndex) + { + var shapeFrameWeight = sharedMesh.GetBlendShapeFrameWeight(index, frameIndex); + minBlendShapeFrameWeight = Mathf.Min(shapeFrameWeight, minBlendShapeFrameWeight); + maxBlendShapeFrameWeight = Mathf.Max(shapeFrameWeight, maxBlendShapeFrameWeight); + } + } + + if (maxBlendShapeFrameWeight != 0) + valueMultiplier = 1.0f / maxBlendShapeFrameWeight; + + break; + case Transform _: + // generally allowed and already in the right format + break; + default: + // propertyName is exported as-is + // Debug.LogWarning($"Implicitly handling animated property \"{propertyName}\" for target {animatedObject}", animatedObject); + + // filtering for what to include / what not to include based on whether its target can be resolved + if (UseAnimationPointer && animatedObject is Component _) + { + var couldResolve = false; + var prop = $"/nodes/{channelTargetId}/{propertyName}"; + foreach (var res in pointerResolvers) + { + // TODO: ideally we have a new method here to just ask the resolver if it supports that type + if (res.TryResolve(animatedObject, ref prop)) + { + couldResolve = true; + } + } + if (!couldResolve) + { + return; + } + + // If the animated property is a color, we need to convert to linear – + // we're doing the same on regular non-animated property export. + if (propertyType == typeof(Color)) + convertToLinearColor = true; + } + break; + } + + var Node = new NodeId + { + Id = channelTargetId, + Root = _root + }; + + AccessorId timeAccessor = ExportAccessor(times); + + AnimationChannel Tchannel = new AnimationChannel(); + AnimationChannelTarget TchannelTarget = new AnimationChannelTarget() { Path = propertyName, Node = Node }; + Tchannel.Target = TchannelTarget; + + AnimationSampler Tsampler = new AnimationSampler(); + Tsampler.Input = timeAccessor; + + // for cases where one property needs to be split up into multiple tracks + // example: emissiveFactor * emissiveStrength + // TODO not needed when secondPropertyName==null + AnimationChannel Tchannel2 = new AnimationChannel(); + AnimationChannelTarget TchannelTarget2 = new AnimationChannelTarget() { Path = secondPropertyName, Node = Node }; + Tchannel2.Target = TchannelTarget2; + AnimationSampler Tsampler2 = new AnimationSampler(); + Tsampler2.Input = timeAccessor; + bool actuallyNeedSecondSampler = true; + + var val = values[0]; + switch (val) + { + case float _: + if (flipValueRange) + { + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => 1.0f - (float)e)); + } + else if (valueMultiplier.HasValue) + { + var multiplier = valueMultiplier.Value; + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => ((float)e) * multiplier)); + } + else + { + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => (float)e)); + + if (propertyName == "orthographic/ymag") + { + Tsampler2.Output = Tsampler.Output; + } + } + break; + case float[] _: + // check that all entries have the same length using a for loop + var firstLength = ((float[])values[0]).Length; + for (var i = 1; i < values.Length; i++) + { + if (((float[])values[i]).Length == firstLength) continue; + + Debug.Log(LogType.Error, "When animating float arrays, all array entries must have the same length. Skipping"); + return; + } + + // construct a float array of all the float arrays together + var floatArray = new float[values.Length * firstLength]; + + // copy the individual arrays into the float array using Array.Copy + for (int i = 0; i < values.Length; i++) + Array.Copy((float[])values[i], 0, floatArray, i * firstLength, firstLength); + + // glTF weights 0..1 match to Unity weights 0..100, but Unity weights can be in arbitrary ranges + if (valueMultiplier.HasValue) + { + for (var i = 0; i < floatArray.Length; i++) + floatArray[i] *= valueMultiplier.Value; + } + + Tsampler.Output = ExportAccessor(floatArray); + break; + case Vector2 _: + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => (Vector2)e)); + break; + case Vector3 _: + if (propertyName == "translation") + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => + { + var v = (Vector3)e; + v.Scale(new Vector3(-1, 1, 1)); + return v; + })); + else + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => (Vector3)e)); + break; + case Vector4 _: + if (!isTextureTransform) + { + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => (Vector4)e)); + } + else + { + var scales = new Vector2[values.Length]; + var offsets = new Vector2[values.Length]; + for (int i = 0; i < values.Length; i++) + { + DecomposeScaleOffset((Vector4) values[i], out var scale, out var offset); + scales[i] = scale; + offsets[i] = offset; + } + Tsampler.Output = ExportAccessor(scales); + Tsampler2.Output = ExportAccessor(offsets); + } + break; + case Quaternion _: + var animatedNode = _root.Nodes[channelTargetId]; + var needsFlippedLookDirection = animatedNode.Light != null || animatedNode.Camera != null; + Tsampler.Output = ExportAccessorSwitchHandedness(Array.ConvertAll(values, e => (Quaternion)e), needsFlippedLookDirection); // Vec4 for rotations + break; + case Color _: + if (propertyName == "emissiveFactor" && secondPropertyName != null) + { + var colors = new Color[values.Length]; + var strengths = new float[values.Length]; + actuallyNeedSecondSampler = false; + var pluginSettings = (_plugins.FirstOrDefault(x => x is MaterialExtensionsExportContext) as MaterialExtensionsExportContext)?.settings; + var emissiveStrengthSupported = pluginSettings != null && pluginSettings.KHR_materials_emissive_strength; + if (emissiveStrengthSupported) + { + for (int i = 0; i < values.Length; i++) + { + DecomposeEmissionColor((Color) values[i], out var color, out var intensity); + colors[i] = color; + strengths[i] = intensity; + if (intensity > 1) + actuallyNeedSecondSampler = true; + } + } + else + { + // clamp 0..1 + for (int i = 0; i < values.Length; i++) + { + var c = (Color) values[i]; + if (c.r > 1) c.r = 1; + if (c.g > 1) c.g = 1; + if (c.b > 1) c.b = 1; + colors[i] = c; + } + } + + Tsampler.Output = ExportAccessor(colors, false); + if (emissiveStrengthSupported) + Tsampler2.Output = ExportAccessor(strengths); + } + else + { + Tsampler.Output = ExportAccessor(Array.ConvertAll(values, e => + { + var c = (Color) e; + if (convertToLinearColor) + c = c.linear; + return c; + }), keepColorAlpha); + } + break; + } + + if (Tsampler.Output != null) Tsampler.Output.Value.BufferView.Value.ByteStride = 0; + if (Tsampler2.Output != null) Tsampler2.Output.Value.BufferView.Value.ByteStride = 0; + + if (Tsampler.Output == null) + { + Debug.LogError($"GLTFExporter: Something went wrong, empty sampler output for \"{propertyName}\" in {animatedObject}", animatedObject); + return; + } + + Tchannel.Sampler = new AnimationSamplerId + { + Id = animation.Samplers.Count, + GLTFAnimation = animation, + Root = _root + }; + animation.Samplers.Add(Tsampler); + animation.Channels.Add(Tchannel); + + if (UseAnimationPointer) + ConvertToAnimationPointer(animatedObject, propertyName, TchannelTarget); + + // in some cases, extensions aren't required even when we think they might, e.g. for emission color animation. + // if all animated values are below 1, we don't need a separate channel for emissive_intensity. + if (!actuallyNeedSecondSampler) + { + extensionName = null; + secondPropertyName = null; + } + + if (extensionName != null) + { + DeclareExtensionUsage(extensionName, false); + + // add extension to material if needed + if(animatedObject is Material material) + { + var mat = GetMaterialId(_root, material); + if (mat.Value.Extensions == null || !mat.Value.Extensions.ContainsKey(extensionName)) + { + mat.Value.AddExtension(extensionName, GLTFProperty.CreateEmptyExtension(extensionName)); + } + } + } + + if (secondPropertyName != null) + { + Tchannel2.Sampler = new AnimationSamplerId + { + Id = animation.Samplers.Count, + GLTFAnimation = animation, + Root = _root + }; + animation.Samplers.Add(Tsampler2); + animation.Channels.Add(Tchannel2); + + if (UseAnimationPointer) + ConvertToAnimationPointer(animatedObject, secondPropertyName, TchannelTarget2); + } + } + + void ConvertToAnimationPointer(object animatedObject, string propertyName, AnimationChannelTarget target) + { + var ext = new KHR_animation_pointer(); + ext.propertyBinding = propertyName; + ext.animatedObject = animatedObject; + ext.channel = target; + animationPointerResolver.Add(ext); + + target.Node = null; + target.Path = "pointer"; + target.AddExtension(KHR_animation_pointer.EXTENSION_NAME, ext); + DeclareExtensionUsage(KHR_animation_pointer.EXTENSION_NAME, false); + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs.meta b/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs.meta new file mode 100644 index 000000000..1f11999a5 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterAnimationPointer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23441437ac77a884d83d8ae32ae8b705 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/SceneExporter/ExporterCameras.cs b/Runtime/Scripts/SceneExporter/ExporterCameras.cs new file mode 100644 index 000000000..18c425d27 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterCameras.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; +using CameraType = GLTF.Schema.CameraType; + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + private Dictionary _exportedCameras; + + private CameraId ExportCamera(Camera unityCamera) + { + GLTFCamera camera = new GLTFCamera(); + //name + camera.Name = unityCamera.name; + + //type + bool isOrthographic = unityCamera.orthographic; + camera.Type = isOrthographic ? CameraType.orthographic : CameraType.perspective; + Matrix4x4 matrix = unityCamera.projectionMatrix; + + //matrix properties: compute the fields from the projection matrix + if (isOrthographic) + { + CameraOrthographic ortho = new CameraOrthographic(); + + ortho.XMag = 1 / matrix[0, 0]; + ortho.YMag = 1 / matrix[1, 1]; + + float farClip = (matrix[2, 3] / matrix[2, 2]) - (1 / matrix[2, 2]); + float nearClip = farClip + (2 / matrix[2, 2]); + ortho.ZFar = farClip; + ortho.ZNear = nearClip; + + camera.Orthographic = ortho; + } + else + { + CameraPerspective perspective = new CameraPerspective(); + float fov = 2 * Mathf.Atan(1 / matrix[1, 1]); + float aspectRatio = matrix[1, 1] / matrix[0, 0]; + perspective.YFov = fov; + perspective.AspectRatio = aspectRatio; + + if (matrix[2, 2] == -1) + { + //infinite projection matrix + float nearClip = matrix[2, 3] * -0.5f; + perspective.ZNear = nearClip; + } + else + { + //finite projection matrix + float farClip = matrix[2, 3] / (matrix[2, 2] + 1); + float nearClip = farClip * (matrix[2, 2] + 1) / (matrix[2, 2] - 1); + perspective.ZFar = farClip; + perspective.ZNear = nearClip; + } + camera.Perspective = perspective; + } + + var id = new CameraId + { + Id = _root.Cameras.Count, + Root = _root + }; + + // Register nodes for animation parsing (could be disabled if animation is disabled) + _exportedCameras.Add(unityCamera.GetInstanceID(), _root.Cameras.Count); + _root.Cameras.Add(camera); + + return id; + } + + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterCameras.cs.meta b/Runtime/Scripts/SceneExporter/ExporterCameras.cs.meta new file mode 100644 index 000000000..159e0b136 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterCameras.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 44a8dfd50fa642f4baf09232690eeab2 +timeCreated: 1657013996 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterLights.cs b/Runtime/Scripts/SceneExporter/ExporterLights.cs new file mode 100644 index 000000000..e9ceff9aa --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterLights.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic; +using GLTF.Schema; +using GLTF.Schema.KHR_lights_punctual; +using UnityEngine; +using UnityEngine.Rendering; +using UnityGLTF.Extensions; +using LightType = UnityEngine.LightType; + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + private Dictionary _exportedLights; + + private LightId ExportLight(Light unityLight) + { + GLTFLight light = null; + + if (unityLight.type == LightType.Spot) + { + // TODO URP/HDRP can distinguish here, no need to guess innerConeAngle there + light = new GLTFSpotLight() { innerConeAngle = unityLight.spotAngle / 2 * Mathf.Deg2Rad * 0.8f, outerConeAngle = unityLight.spotAngle / 2 * Mathf.Deg2Rad }; + light.Name = unityLight.name; + + light.type = unityLight.type.ToString().ToLower(); + light.color = unityLight.color.ToNumericsColorLinear(); + light.range = unityLight.range; + light.intensity = GraphicsSettings.lightsUseLinearIntensity ? + (unityLight.intensity * Mathf.PI) : + // heuristically derived. Not sure why this matches expected light values / what Unity does when lightsUseLinearIntensity is false + (unityLight.intensity * Mathf.PI) * (unityLight.intensity * Mathf.PI) / 4 * Mathf.Sqrt(2); + } + else if (unityLight.type == LightType.Directional) + { + light = new GLTFDirectionalLight(); + light.Name = unityLight.name; + + light.type = unityLight.type.ToString().ToLower(); + light.color = unityLight.color.ToNumericsColorLinear(); + light.intensity = unityLight.intensity * Mathf.PI; + if (!GraphicsSettings.lightsUseLinearIntensity) + light.intensity *= unityLight.intensity; + + } + else if (unityLight.type == LightType.Point) + { + light = new GLTFPointLight(); + light.Name = unityLight.name; + + light.type = unityLight.type.ToString().ToLower(); + light.color = unityLight.color.ToNumericsColorLinear(); + light.range = unityLight.range; + light.intensity = unityLight.intensity * Mathf.PI; + if (!GraphicsSettings.lightsUseLinearIntensity) + light.intensity *= unityLight.intensity; + } + else + { + // unknown light type, we shouldn't export this + + // light = new GLTFLight(); + // light.Name = unityLight.name; + // light.type = unityLight.type.ToString().ToLower(); + // light.color = new GLTF.Math.Color(unityLight.color.r, unityLight.color.g, unityLight.color.b, 1); + } + + if (light != null) + { + DeclareExtensionUsage(KHR_lights_punctualExtensionFactory.EXTENSION_NAME, false); + } + else + { + Debug.LogWarning(null, $"Light couldn't be exported: {unityLight.name}. The type may be unsupported in glTF ({unityLight.type})", unityLight.gameObject); + return null; + } + + if (_root.Lights == null) + { + _root.Lights = new List(); + } + + var id = new LightId + { + Id = _root.Lights.Count, + Root = _root + }; + + // Register nodes for animation parsing (could be disabled if animation is disabled) + _exportedLights.Add(unityLight.GetInstanceID(), _root.Lights.Count); + + //list of lightids should be in extensions object + _root.Lights.Add(light); + + return id; + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterLights.cs.meta b/Runtime/Scripts/SceneExporter/ExporterLights.cs.meta new file mode 100644 index 000000000..a8d6af7a2 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterLights.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 122e3cac6af1417c88b9cb6b6d91b933 +timeCreated: 1657013984 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterMaterials.cs b/Runtime/Scripts/SceneExporter/ExporterMaterials.cs new file mode 100644 index 000000000..085edd069 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterMaterials.cs @@ -0,0 +1,988 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GLTF.Schema; +using UnityEngine; +using UnityEngine.Rendering; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + // Static callbacks + [Obsolete("Use ExportPlugins on GLTFSettings instead")] + public static event BeforeSceneExportDelegate BeforeSceneExport; + [Obsolete("Use ExportPlugins on GLTFSettings instead")] + public static event AfterSceneExportDelegate AfterSceneExport; + [Obsolete("Use ExportPlugins on GLTFSettings instead")] + public static event AfterNodeExportDelegate AfterNodeExport; + /// True: material export is complete. False: continue regular export. + [Obsolete("Use ExportPlugins on GLTFSettings instead")] + public static event BeforeMaterialExportDelegate BeforeMaterialExport; + [Obsolete("Use ExportPlugins on GLTFSettings instead")] + public static event AfterMaterialExportDelegate AfterMaterialExport; + + // mock for Default material + private static Material _defaultMaterial = null; + public static Material DefaultMaterial + { + get + { + if (_defaultMaterial) return _defaultMaterial; + +#if UNITY_2019_3_OR_NEWER + var pipelineAsset = GraphicsSettings.currentRenderPipeline; + if (pipelineAsset) + { + _defaultMaterial = pipelineAsset.defaultMaterial; + } + else +#endif + { + var shader = Shader.Find("Legacy Shaders/Diffuse"); // by default in the always included shaders list + if (shader) + _defaultMaterial = new Material(shader); + } + return _defaultMaterial; + } + } + + public MaterialId ExportMaterial(Material materialObj) + { + MaterialId id = GetMaterialId(_root, materialObj); + if (id != null) + { + return id; + } + + var material = new GLTFMaterial(); + + if (!materialObj) + { + if (ExportNames) + { + material.Name = "default"; + } + + // create default material + // TODO check why we need to do anything here + material.PbrMetallicRoughness = new PbrMetallicRoughness() { MetallicFactor = 0, RoughnessFactor = 1.0f }; + return CreateAndAddMaterialId(materialObj, material); + } + + if (ExportNames) + { + material.Name = materialObj.name; + } + + foreach (var plugin in _plugins) + { + if (plugin == null) continue; + beforeMaterialExportMarker.Begin(); + if (plugin.BeforeMaterialExport(this, _root, materialObj, material)) + { + beforeMaterialExportMarker.End(); + return CreateAndAddMaterialId(materialObj, material); + } + else + { + beforeMaterialExportMarker.End(); + } + } + + exportMaterialMarker.Begin(); + var isBirp = +#if UNITY_2019_3_OR_NEWER + !GraphicsSettings.currentRenderPipeline; +#else + true; +#endif + + switch (materialObj.GetTag("RenderType", false, "")) + { + case "TransparentCutout": + if (materialObj.HasProperty("alphaCutoff")) + material.AlphaCutoff = materialObj.GetFloat("alphaCutoff"); + else if (materialObj.HasProperty("_AlphaCutoff")) + material.AlphaCutoff = materialObj.GetFloat("_AlphaCutoff"); + else if (materialObj.HasProperty("_Cutoff")) + material.AlphaCutoff = materialObj.GetFloat("_Cutoff"); + material.AlphaMode = AlphaMode.MASK; + break; + case "Transparent": + case "Fade": + material.AlphaMode = AlphaMode.BLEND; + break; + default: + if ((!isBirp && materialObj.IsKeywordEnabled("_ALPHATEST_ON")) || + (isBirp && materialObj.IsKeywordEnabled("_BUILTIN_ALPHATEST_ON")) || + materialObj.renderQueue == 2450) + { + if (materialObj.HasProperty("alphaCutoff")) + material.AlphaCutoff = materialObj.GetFloat("alphaCutoff"); + else if (materialObj.HasProperty("_AlphaCutoff")) + material.AlphaCutoff = materialObj.GetFloat("_AlphaCutoff"); + else if (materialObj.HasProperty("_Cutoff")) + material.AlphaCutoff = materialObj.GetFloat("_Cutoff"); + material.AlphaMode = AlphaMode.MASK; + } + else + { + material.AlphaMode = AlphaMode.OPAQUE; + } + break; + } + + material.DoubleSided = (materialObj.HasProperty("_Cull") && materialObj.GetInt("_Cull") == (int)CullMode.Off) || + (materialObj.HasProperty("_CullMode") && materialObj.GetInt("_CullMode") == (int)CullMode.Off) || + (materialObj.shader.name.EndsWith("-Double")); // workaround for exporting shaders that are set to double-sided on 2020.3 + + if (materialObj.IsKeywordEnabled("_EMISSION") || materialObj.IsKeywordEnabled("EMISSION") || materialObj.HasProperty("emissiveTexture") || materialObj.HasProperty("_EmissiveTexture")) + { + // In Gamma space, some materials treat their emissive color inputs differently than in Linear space. + // This is super confusing when converting materials, but we also need to handle it correctly here. + var isUnityMaterialWithWeirdColorspaceHandling = QualitySettings.activeColorSpace == ColorSpace.Gamma && + (materialObj.shader.name == "Standard" || materialObj.shader.name == "Standard (Specular setup)" || + materialObj.shader.name == "Standard (Roughness setup)" || + materialObj.shader.name == "Universal Render Pipeline/Lit" || + materialObj.shader.name == "Universal Render Pipeline/Simple Lit" || + materialObj.shader.name == "Universal Render Pipeline/Unlit"); + + if (materialObj.HasProperty("_EmissionColor") || materialObj.HasProperty("emissiveFactor") || materialObj.HasProperty("_EmissiveFactor")) + { + var c = materialObj.HasProperty("_EmissionColor") ? materialObj.GetColor("_EmissionColor") : materialObj.HasProperty("emissiveFactor") ? materialObj.GetColor("emissiveFactor") : materialObj.GetColor("_EmissiveFactor"); + DecomposeEmissionColor(c, out var emissiveAmount, out var maxEmissiveAmount); + + if (isUnityMaterialWithWeirdColorspaceHandling) + material.EmissiveFactor = emissiveAmount.ToNumericsColorRaw(); + else + material.EmissiveFactor = emissiveAmount.ToNumericsColorGamma(); + + if (maxEmissiveAmount > 1) + { + var materialSettings = (_plugins.FirstOrDefault(x => x is MaterialExtensionsExportContext) as MaterialExtensionsExportContext)?.settings; + var emissiveStrengthSupported = materialSettings && materialSettings.KHR_materials_emissive_strength; + if (emissiveStrengthSupported) + { + material.AddExtension(KHR_materials_emissive_strength_Factory.EXTENSION_NAME, new KHR_materials_emissive_strength() { emissiveStrength = maxEmissiveAmount }); + DeclareExtensionUsage(KHR_materials_emissive_strength_Factory.EXTENSION_NAME, false); + } + } + } + + if (materialObj.HasProperty("_EmissionMap") || materialObj.HasProperty("_EmissiveMap") || materialObj.HasProperty("_EmissiveTexture") || materialObj.HasProperty("emissiveTexture")) + { + var propName = materialObj.HasProperty("emissiveTexture") ? "emissiveTexture" : materialObj.HasProperty("_EmissiveTexture") ? "_EmissiveTexture" : materialObj.HasProperty("_EmissionMap") ? "_EmissionMap" : "_EmissiveMap"; + var emissionTex = materialObj.GetTexture(propName); + + if (emissionTex) + { + if(emissionTex is Texture2D) + { + material.EmissiveTexture = ExportTextureInfo(emissionTex, TextureMapType.Emissive); + + ExportTextureTransform(material.EmissiveTexture, materialObj, propName); + } + else + { + Debug.LogFormat(LogType.Error, "Can't export a {0} emissive texture in material {1}", emissionTex.GetType(), materialObj.name); + } + + } + } + } + + // workaround for glTFast roundtrip: has a _BumpMap but no _NORMALMAP or _BUMPMAP keyword. + var is_glTFastShader = materialObj.shader.name.IndexOf("glTF", StringComparison.Ordinal) > -1; + if (materialObj.HasProperty("_BumpMap") && (materialObj.IsKeywordEnabled("_NORMALMAP") || materialObj.IsKeywordEnabled("_BUMPMAP") || is_glTFastShader)) + { + var normalTex = materialObj.GetTexture("_BumpMap"); + + if (normalTex) + { + if(normalTex is Texture2D) + { + material.NormalTexture = ExportNormalTextureInfo(normalTex, TextureMapType.Normal, materialObj); + ExportTextureTransform(material.NormalTexture, materialObj, "_BumpMap"); + } + else + { + Debug.LogFormat(LogType.Error, "Can't export a {0} normal texture in material {1}", normalTex.GetType(), materialObj.name); + } + } + } + if (materialObj.HasProperty("normalTexture") || materialObj.HasProperty("_NormalTexture")) + { + var propName = materialObj.HasProperty("normalTexture") ? "normalTexture" : "_NormalTexture"; + var normalTex = materialObj.GetTexture(propName); + + if (normalTex) + { + if(normalTex is Texture2D) + { + material.NormalTexture = ExportNormalTextureInfo(normalTex, TextureMapType.Normal, materialObj); + ExportTextureTransform(material.NormalTexture, materialObj, propName); + } + else + { + Debug.LogFormat(LogType.Error, "Can't export a {0} normal texture in material {1}", normalTex.GetType(), materialObj.name); + } + } + } + + if (materialObj.HasProperty("_OcclusionMap") || materialObj.HasProperty("occlusionTexture") || materialObj.HasProperty("_OcclusionTexture")) + { + var propName = materialObj.HasProperty("occlusionTexture") ? "occlusionTexture" : materialObj.HasProperty("_OcclusionTexture") ? "_OcclusionTexture" : "_OcclusionMap"; + var occTex = materialObj.GetTexture(propName); + if (occTex) + { + if(occTex is Texture2D) + { + material.OcclusionTexture = ExportOcclusionTextureInfo(occTex, TextureMapType.Occlusion, materialObj); + ExportTextureTransform(material.OcclusionTexture, materialObj, propName); + material.OcclusionTexture.TexCoord = materialObj.HasProperty("occlusionTextureTexCoord") ? + Mathf.RoundToInt(materialObj.GetFloat("occlusionTextureTexCoord")) : + materialObj.HasProperty("_OcclusionTextureTexCoord") ? + Mathf.RoundToInt(materialObj.GetFloat("_OcclusionTextureTexCoord")) : 0; + } + else + { + Debug.LogFormat(LogType.Error, "Can't export a {0} occlusion texture in material {1}", occTex.GetType(), materialObj.name); + } + } + } + if (IsUnlit(materialObj)) + { + ExportUnlit( material, materialObj ); + } + else if (IsPBRMetallicRoughness(materialObj)) + { + material.PbrMetallicRoughness = ExportPBRMetallicRoughness(materialObj); + } + else if (IsPBRSpecularGlossiness(materialObj)) + { + ExportPBRSpecularGlossiness(material, materialObj); + } + else if (IsCommonConstant(materialObj)) + { + material.CommonConstant = ExportCommonConstant(materialObj); + } + else if (materialObj.HasProperty("_BaseMap")) + { + var mainTex = materialObj.GetTexture("_BaseMap"); + material.PbrMetallicRoughness = new PbrMetallicRoughness() + { + BaseColorFactor = (materialObj.HasProperty("_BaseColor") + ? materialObj.GetColor("_BaseColor") + : Color.white).ToNumericsColorLinear(), + BaseColorTexture = mainTex ? ExportTextureInfo(mainTex, TextureMapType.BaseColor) : null + }; + ExportTextureTransform(material.PbrMetallicRoughness.BaseColorTexture, materialObj, "_BaseMap"); + } + else if (materialObj.HasProperty("_ColorTexture")) + { + var mainTex = materialObj.GetTexture("_ColorTexture"); + material.PbrMetallicRoughness = new PbrMetallicRoughness() + { + BaseColorFactor = (materialObj.HasProperty("_BaseColor") + ? materialObj.GetColor("_BaseColor") + : Color.white).ToNumericsColorLinear(), + BaseColorTexture = mainTex ? ExportTextureInfo(mainTex, TextureMapType.BaseColor) : null + }; + ExportTextureTransform(material.PbrMetallicRoughness.BaseColorTexture, materialObj, "_ColorTexture"); + } + else if (materialObj.HasProperty("_MainTex")) //else export main texture + { + var mainTex = materialObj.GetTexture("_MainTex"); + + if (mainTex != null) + { + material.PbrMetallicRoughness = new PbrMetallicRoughness() { MetallicFactor = 0, RoughnessFactor = 1.0f }; + material.PbrMetallicRoughness.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(material.PbrMetallicRoughness.BaseColorTexture, materialObj, "_MainTex"); + } + if (materialObj.HasProperty("_TintColor")) //particles use _TintColor instead of _Color + { + if (material.PbrMetallicRoughness == null) + material.PbrMetallicRoughness = new PbrMetallicRoughness() { MetallicFactor = 0, RoughnessFactor = 1.0f }; + + material.PbrMetallicRoughness.BaseColorFactor = materialObj.GetColor("_TintColor").ToNumericsColorLinear(); + } + else if (materialObj.HasProperty("_Color")) + { + if (material.PbrMetallicRoughness == null) + material.PbrMetallicRoughness = new PbrMetallicRoughness() { MetallicFactor = 0, RoughnessFactor = 1.0f }; + + material.PbrMetallicRoughness.BaseColorFactor = materialObj.GetColor("_Color").ToNumericsColorLinear(); + } + material.DoubleSided = true; + } + + exportMaterialMarker.End(); + + return CreateAndAddMaterialId(materialObj, material); + } + + private MaterialId CreateAndAddMaterialId(Material materialObj, GLTFMaterial material) + { + var key = materialObj ? materialObj.GetInstanceID() : 0; + if(!_exportedMaterials.ContainsKey(key)) + _exportedMaterials.Add(key, _root.Materials.Count); + + var id = new MaterialId + { + Id = _root.Materials.Count, + Root = _root + }; + _root.Materials.Add(material); + + // after material export + if (materialObj) + { + afterMaterialExportMarker.Begin(); + foreach (var plugin in _plugins) + plugin?.AfterMaterialExport(this, _root, materialObj, material); + afterMaterialExportMarker.End(); + } + + return id; + } + + private bool IsPBRMetallicRoughness(Material material) + { + return (material.HasProperty("_Metallic") || material.HasProperty("_MetallicFactor") || material.HasProperty("metallicFactor")) && + (material.HasProperty("_MetallicGlossMap") || material.HasProperty("_Glossiness") || + material.HasProperty("_Roughness") || material.HasProperty("_RoughnessFactor") || material.HasProperty("roughnessFactor") || + material.HasProperty("_MetallicRoughnessTexture") || material.HasProperty("metallicRoughnessTexture")); + } + + private bool IsUnlit(Material material) + { + return material.shader.name.ToLowerInvariant().Contains("unlit") || material.shader.name == "Sprites/Default"; + } + + private bool IsPBRSpecularGlossiness(Material material) + { + return material.HasProperty("_SpecColor") && material.HasProperty("_SpecGlossMap"); + } + + private bool IsCommonConstant(Material material) + { + return material.HasProperty("_AmbientFactor") && + material.HasProperty("_LightMap") && + material.HasProperty("_LightFactor"); + } + +#if UNITY_2019_1_OR_NEWER + private static bool CheckForPropertyInShader(Shader shader, string name, ShaderPropertyType type) + { + // TODO result can be cached, we might do many similar checks for one export + + var c = shader.GetPropertyCount(); + var foundProperty = false; + for (var i = 0; i < c; i++) + { + if (shader.GetPropertyName(i) == name && shader.GetPropertyType(i) == type) + { + foundProperty = true; + break; + } + } + return foundProperty; + } +#endif + + private void ExportTextureTransform(TextureInfo def, Material mat, string texName) + { + if (def == null) return; + + // early out if texture transform is explicitly disabled + if (mat.HasProperty("_TEXTURE_TRANSFORM") && !mat.IsKeywordEnabled("_TEXTURE_TRANSFORM_ON")) + return; + + Vector2 offset = mat.GetTextureOffset(texName); + Vector2 scale = mat.GetTextureScale(texName); + //var rotationMatrix = mat.GetVector(texName + "Rotation"); + //var rotation = -Mathf.Atan2(offset.y, rotationMatrix.x); + var rotProp = texName + "Rotation"; + var uvProp = texName + "TexCoord"; + var rotation = 0f; + var uvChannel = 0f; + +#if UNITY_2021_1_OR_NEWER + if (mat.HasFloat(rotProp)) +#else + if (mat.HasProperty(rotProp) +#if UNITY_2019_1_OR_NEWER + && CheckForPropertyInShader(mat.shader, rotProp, ShaderPropertyType.Float) +#endif + ) +#endif + rotation = mat.GetFloat(rotProp); + +#if UNITY_2021_1_OR_NEWER + if (mat.HasFloat(uvProp)) +#else + if (mat.HasProperty(uvProp) +#if UNITY_2019_1_OR_NEWER + && CheckForPropertyInShader(mat.shader, uvProp, ShaderPropertyType.Float) +#endif + ) +#endif + uvChannel = mat.GetFloat(uvProp); + + + + if (offset == Vector2.zero && scale == Vector2.one && rotation == 0) + { + var checkForName = texName + "_ST"; + // Debug.Log("Checking for property: " + checkForName + " : " + mat.HasProperty(checkForName) + " == " + (mat.HasProperty(checkForName) ? mat.GetVector(checkForName) : "null")); + var textureHasTilingOffset = mat.HasProperty(checkForName); + +#if UNITY_2019_1_OR_NEWER + // turns out we have to check extra hard if that property actually exists + // the material ALWAYS says true for mat.HasProperty(someTex_ST) when someTex is defined and doesn't have [NoTextureScale] attribute + if (textureHasTilingOffset) + { + if (!CheckForPropertyInShader(mat.shader, checkForName, ShaderPropertyType.Vector)) + textureHasTilingOffset = false; + } +#endif + + if (textureHasTilingOffset) + { + // ignore, texture has explicit _ST property + } + else if(mat.HasProperty("_MainTex_ST") || mat.HasProperty("_BaseMap_ST") || mat.HasProperty("_BaseColorMap_ST") || mat.HasProperty("_BaseColorTexture_ST") || mat.HasProperty("baseColorTexture_ST")) + { + // difficult choice here: some shaders might support texture transform per-texture, others use the main transform. + if (mat.HasProperty("baseColorTexture")) + { + offset = mat.GetTextureOffset("baseColorTexture"); + scale = mat.GetTextureScale("baseColorTexture"); + rotation = mat.HasProperty("baseColorTextureRotation") ? mat.GetFloat("baseColorTextureRotation") : 0; + } + else if (mat.HasProperty("_BaseColorTexture")) + { + offset = mat.GetTextureOffset("_BaseColorTexture"); + scale = mat.GetTextureScale("_BaseColorTexture"); + rotation = mat.HasProperty("_BaseColorTextureRotation") ? mat.GetFloat("_BaseColorTextureRotation") : 0; + } + else if (mat.HasProperty("_BaseColorMap")) + { + offset = mat.GetTextureOffset("_BaseColorMap"); + scale = mat.GetTextureScale("_BaseColorMap"); + } + else if (mat.HasProperty("_BaseMap")) + { + offset = mat.GetTextureOffset("_BaseMap"); + scale = mat.GetTextureScale("_BaseMap"); + } + else if(mat.HasProperty("_MainTex")) + { + offset = mat.mainTextureOffset; + scale = mat.mainTextureScale; + rotation = 0; +#if UNITY_2021_1_OR_NEWER + if (mat.HasFloat("_MainTexRotation")) +#else + if (mat.HasProperty("_MainTexRotation")) +#endif + rotation = mat.GetFloat("_MainTexRotation"); + } + } + else + { + offset = Vector2.zero; + scale = Vector2.one; + } + } + + if (_root.ExtensionsUsed == null) + { + _root.ExtensionsUsed = new List( + new[] { ExtTextureTransformExtensionFactory.EXTENSION_NAME } + ); + } + else if (!_root.ExtensionsUsed.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME)) + { + _root.ExtensionsUsed.Add(ExtTextureTransformExtensionFactory.EXTENSION_NAME); + } + + if (RequireExtensions) + { + if (_root.ExtensionsRequired == null) + { + _root.ExtensionsRequired = new List( + new[] { ExtTextureTransformExtensionFactory.EXTENSION_NAME } + ); + } + else if (!_root.ExtensionsRequired.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME)) + { + _root.ExtensionsRequired.Add(ExtTextureTransformExtensionFactory.EXTENSION_NAME); + } + } + + if (def.Extensions == null) + def.Extensions = new Dictionary(); + + def.Extensions[ExtTextureTransformExtensionFactory.EXTENSION_NAME] = new ExtTextureTransformExtension( + new GLTF.Math.Vector2(offset.x, 1 - offset.y - scale.y), + rotation, + new GLTF.Math.Vector2(scale.x, scale.y), + (int)uvChannel + ); + } + + public NormalTextureInfo ExportNormalTextureInfo( + Texture texture, + string textureSlot, + Material material) + { + const string normalMapFormatIsXYZ = "_NormalMapFormatXYZ"; + + var info = new NormalTextureInfo(); + TextureExportSettings exportSettings = default; + +#if UNITY_2021_1_OR_NEWER + if (material.HasFloat(normalMapFormatIsXYZ)) +#else + if (material.HasProperty(normalMapFormatIsXYZ) +#if UNITY_2019_1_OR_NEWER + && CheckForPropertyInShader(material.shader, normalMapFormatIsXYZ, ShaderPropertyType.Float) +#endif + ) +#endif + if (material.GetFloat(normalMapFormatIsXYZ) >= 1) + { + exportSettings.linear = true; + exportSettings.isValid = true; + exportSettings.alphaMode = TextureExportSettings.AlphaMode.Never; + exportSettings.conversion = TextureExportSettings.Conversion.None; + } + + info.Index = ExportTexture(texture, textureSlot, exportSettings); + + if (material.HasProperty("normalScale")) + { + info.Scale = material.GetFloat("normalScale"); + } + else if (material.HasProperty("_NormalScale")) + { + info.Scale = material.GetFloat("_NormalScale"); + } + else if (material.HasProperty("_BumpScale")) + { + info.Scale = material.GetFloat("_BumpScale"); + } + + + return info; + } + + private OcclusionTextureInfo ExportOcclusionTextureInfo( + Texture texture, + string textureSlot, + Material material) + { + var info = new OcclusionTextureInfo(); + + info.Index = ExportTexture(texture, textureSlot); + + if (material.HasProperty("occlusionStrength")) + { + info.Strength = material.GetFloat("occlusionStrength"); + } + else if (material.HasProperty("_OcclusionStrength")) + { + info.Strength = material.GetFloat("_OcclusionStrength"); + } + + return info; + } + + public PbrMetallicRoughness ExportPBRMetallicRoughness(Material material) + { + var pbr = new PbrMetallicRoughness() { MetallicFactor = 0, RoughnessFactor = 1.0f }; + var isGltfPbrMetallicRoughnessShader = material.shader.name.Equals("GLTF/PbrMetallicRoughness", StringComparison.Ordinal); + var isGlTFastShader = material.shader.name.Equals("glTF/PbrMetallicRoughness", StringComparison.Ordinal); + + if (material.HasProperty("baseColorFactor")) + { + pbr.BaseColorFactor = material.GetColor("baseColorFactor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_BaseColorFactor")) + { + pbr.BaseColorFactor = material.GetColor("_BaseColorFactor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_BaseColor")) + { + pbr.BaseColorFactor = material.GetColor("_BaseColor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_Color")) + { + pbr.BaseColorFactor = material.GetColor("_Color").ToNumericsColorLinear(); + } + + if (material.HasProperty("_TintColor")) //particles use _TintColor instead of _Color + { + float white = 1; + if (material.HasProperty("_Color")) + { + var c = material.GetColor("_Color"); + white = (c.r + c.g + c.b) / 3.0f; //multiply alpha by overall whiteness of TintColor + } + + pbr.BaseColorFactor = (material.GetColor("_TintColor") * white).ToNumericsColorLinear() ; + } + + if (material.HasProperty("_MainTex") || material.HasProperty("_BaseMap") || material.HasProperty("_BaseColorTexture") || material.HasProperty("baseColorTexture")) //TODO if additive particle, render black into alpha + { + // TODO use private Material.GetFirstPropertyNameIdByAttribute here, supported from 2020.1+ + var mainTexPropertyName = material.HasProperty("_BaseMap") ? "_BaseMap" : material.HasProperty("_MainTex") ? "_MainTex" : material.HasProperty("baseColorTexture") ? "baseColorTexture" : "_BaseColorTexture"; + var mainTex = material.GetTexture(mainTexPropertyName); + + if (mainTex) + { + pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(pbr.BaseColorTexture, material, mainTexPropertyName); + pbr.BaseColorTexture.TexCoord = material.HasProperty("baseColorTextureTexCoord") ? + Mathf.RoundToInt(material.GetFloat("baseColorTextureTexCoord")) : + material.HasProperty("_BaseColorTextureTexCoord") ? + Mathf.RoundToInt(material.GetFloat("_BaseColorTextureTexCoord")) : 0; + } + } + + var ignoreMetallicFactor = (material.IsKeywordEnabled("_METALLICGLOSSMAP") || material.IsKeywordEnabled("_METALLICSPECGLOSSMAP")) && !isGltfPbrMetallicRoughnessShader && !isGlTFastShader; + if (material.HasProperty("metallicFactor") && !ignoreMetallicFactor) + { + pbr.MetallicFactor = material.GetFloat("metallicFactor"); + } + else if (material.HasProperty("_MetallicFactor") && !ignoreMetallicFactor) + { + pbr.MetallicFactor = material.GetFloat("_MetallicFactor"); + } + else if (material.HasProperty("_Metallic") && !ignoreMetallicFactor) + { + pbr.MetallicFactor = material.GetFloat("_Metallic"); + } + + var needToBakeRoughnessIntoTexture = false; + float roughnessMultiplier = 1f; + + if (material.HasProperty("roughnessFactor")) + { + float roughness = material.GetFloat("roughnessFactor"); + pbr.RoughnessFactor = roughness; + } + else if (material.HasProperty("_RoughnessFactor")) + { + float roughness = material.GetFloat("_RoughnessFactor"); + pbr.RoughnessFactor = roughness; + } + else if (material.HasProperty("_Roughness")) + { + float roughness = material.GetFloat("_Roughness"); + pbr.RoughnessFactor = roughness; + } + else if (material.HasProperty("_Glossiness") || material.HasProperty("_Smoothness")) + { + var smoothnessPropertyName = material.HasProperty("_Smoothness") ? "_Smoothness" : "_Glossiness"; + var metallicGlossMap = material.HasProperty("_MetallicGlossMap") ? material.GetTexture("_MetallicGlossMap") : null; + float smoothness = material.GetFloat(smoothnessPropertyName); + + // legacy workaround: the UnityGLTF shaders misuse "_Glossiness" as roughness but don't have a keyword for it. + if (isGltfPbrMetallicRoughnessShader) + smoothness = 1 - smoothness; + if (metallicGlossMap && material.HasProperty("_GlossMapScale") && material.IsKeywordEnabled("_METALLICGLOSSMAP")) + smoothness = material.GetFloat("_GlossMapScale"); + + var hasMetallicRoughnessMap = + (material.HasProperty("metallicRoughnessTexture") && material.GetTexture("metallicRoughnessTexture")) || + (material.HasProperty("_MetallicRoughnessTexture") && material.GetTexture("_MetallicRoughnessTexture")) || + (material.HasProperty("_MetallicGlossMap") && material.GetTexture("_MetallicGlossMap")); + + if (!hasMetallicRoughnessMap) + pbr.RoughnessFactor = 1 - smoothness; + else + { + needToBakeRoughnessIntoTexture = true; + roughnessMultiplier = 1 - smoothness; + pbr.RoughnessFactor = 1; + } + } + + if (material.HasProperty("metallicRoughnessTexture")) + { + var mrTex = material.GetTexture("metallicRoughnessTexture"); + if (mrTex) + { + pbr.MetallicRoughnessTexture = ExportTextureInfo(mrTex, TextureMapType.MetallicRoughness); + ExportTextureTransform(pbr.MetallicRoughnessTexture, material, "metallicRoughnessTexture"); + } + } + else if (material.HasProperty("_MetallicRoughnessTexture")) + { + var mrTex = material.GetTexture("_MetallicRoughnessTexture"); + if (mrTex) + { + pbr.MetallicRoughnessTexture = ExportTextureInfo(mrTex, TextureMapType.MetallicRoughness); + ExportTextureTransform(pbr.MetallicRoughnessTexture, material, "_MetallicRoughnessTexture"); + } + } + else if (material.HasProperty("_MetallicGlossMap")) + { + var mrTex = material.GetTexture("_MetallicGlossMap"); + + if (mrTex) + { + var conversion = GetExportSettingsForSlot((isGltfPbrMetallicRoughnessShader || isGlTFastShader) ? TextureMapType.Linear : TextureMapType.MetallicGloss); + if (needToBakeRoughnessIntoTexture) + { + conversion = new TextureExportSettings(conversion); + conversion.smoothnessMultiplier = 1 - roughnessMultiplier; + } + pbr.MetallicRoughnessTexture = ExportTextureInfo(mrTex, TextureMapType.MetallicRoughness, conversion); + // in the Standard shader, _METALLICGLOSSMAP replaces _Metallic and so we need to set the multiplier to 1; + // that's not true for the gltf shaders though, so we keep the value there. + if (ignoreMetallicFactor) + pbr.MetallicFactor = 1.0f; + ExportTextureTransform(pbr.MetallicRoughnessTexture, material, "_MetallicGlossMap"); + } + } + + return pbr; + } + + public void ExportUnlit(GLTFMaterial def, Material material){ + + const string extname = KHR_MaterialsUnlitExtensionFactory.EXTENSION_NAME; + DeclareExtensionUsage( extname, true ); + def.AddExtension( extname, new KHR_MaterialsUnlitExtension()); + + var pbr = new PbrMetallicRoughness(); + + if (material.HasProperty("baseColorFactor")) + { + pbr.BaseColorFactor = material.GetColor("baseColorFactor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_BaseColorFactor")) + { + pbr.BaseColorFactor = material.GetColor("_BaseColorFactor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_BaseColor")) + { + pbr.BaseColorFactor = material.GetColor("_BaseColor").ToNumericsColorLinear(); + } + else if (material.HasProperty("_Color")) + { + pbr.BaseColorFactor = material.GetColor("_Color").ToNumericsColorLinear(); + } + + if (material.HasProperty("baseColorTexture")) + { + var mainTex = material.GetTexture("baseColorTexture"); + if (mainTex) + { + pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(pbr.BaseColorTexture, material, "baseColorTexture"); + } + } + else if (material.HasProperty("_BaseColorTexture")) + { + var mainTex = material.GetTexture("_BaseColorTexture"); + if (mainTex) + { + pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(pbr.BaseColorTexture, material, "_BaseColorTexture"); + } + } + else if (material.HasProperty("_BaseMap")) + { + var mainTex = material.GetTexture("_BaseMap"); + if (mainTex) + { + pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(pbr.BaseColorTexture, material, "_BaseMap"); + } + } + else if (material.HasProperty("_MainTex")) + { + var mainTex = material.GetTexture("_MainTex"); + if (mainTex) + { + pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(pbr.BaseColorTexture, material, "_MainTex"); + } + } + + def.PbrMetallicRoughness = pbr; + + } + + private void ExportPBRSpecularGlossiness(GLTFMaterial material, Material materialObj) + { + if (_root.ExtensionsUsed == null) + { + _root.ExtensionsUsed = new List(new[] { "KHR_materials_pbrSpecularGlossiness" }); + } + else if (!_root.ExtensionsUsed.Contains("KHR_materials_pbrSpecularGlossiness")) + { + _root.ExtensionsUsed.Add("KHR_materials_pbrSpecularGlossiness"); + } + + if (RequireExtensions) + { + if (_root.ExtensionsRequired == null) + { + _root.ExtensionsRequired = new List(new[] { "KHR_materials_pbrSpecularGlossiness" }); + } + else if (!_root.ExtensionsRequired.Contains("KHR_materials_pbrSpecularGlossiness")) + { + _root.ExtensionsRequired.Add("KHR_materials_pbrSpecularGlossiness"); + } + } + + if (material.Extensions == null) + { + material.Extensions = new Dictionary(); + } + + GLTF.Math.Color diffuseFactor = KHR_materials_pbrSpecularGlossinessExtension.DIFFUSE_FACTOR_DEFAULT; + TextureInfo diffuseTexture = KHR_materials_pbrSpecularGlossinessExtension.DIFFUSE_TEXTURE_DEFAULT; + GLTF.Math.Vector3 specularFactor = KHR_materials_pbrSpecularGlossinessExtension.SPEC_FACTOR_DEFAULT; + double glossinessFactor = KHR_materials_pbrSpecularGlossinessExtension.GLOSS_FACTOR_DEFAULT; + TextureInfo specularGlossinessTexture = KHR_materials_pbrSpecularGlossinessExtension.SPECULAR_GLOSSINESS_TEXTURE_DEFAULT; + + if (materialObj.HasProperty("_BaseColor")) + { + diffuseFactor = materialObj.GetColor("_BaseColor").ToNumericsColorLinear(); + } + else if (materialObj.HasProperty("_Color")) + { + diffuseFactor = materialObj.GetColor("_Color").ToNumericsColorLinear(); + } + + if (materialObj.HasProperty("_BaseMap")) + { + var mainTex = materialObj.GetTexture("_BaseMap"); + + if (mainTex != null) + { + diffuseTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(diffuseTexture, materialObj, "_BaseMap"); + } + } + else if (materialObj.HasProperty("_MainTex")) + { + var mainTex = materialObj.GetTexture("_MainTex"); + + if (mainTex != null) + { + diffuseTexture = ExportTextureInfo(mainTex, TextureMapType.BaseColor); + ExportTextureTransform(diffuseTexture, materialObj, "_MainTex"); + } + } + + if (materialObj.HasProperty("_SpecColor")) + { + var specGlossMap = materialObj.GetTexture("_SpecGlossMap"); + if (specGlossMap == null) + { + var specColor = materialObj.GetColor("_SpecColor").ToNumericsColorLinear(); + specularFactor = new GLTF.Math.Vector3(specColor.R, specColor.G, specColor.B); + } + } + + if (materialObj.HasProperty("_Glossiness")) + { + var specGlossMap = materialObj.GetTexture("_SpecGlossMap"); + if (specGlossMap == null) + { + glossinessFactor = materialObj.GetFloat("_Glossiness"); + } + } + + if (materialObj.HasProperty("_SpecGlossMap")) + { + var mgTex = materialObj.GetTexture("_SpecGlossMap"); + + if (mgTex) + { + specularGlossinessTexture = ExportTextureInfo(mgTex, TextureMapType.SpecGloss); + ExportTextureTransform(specularGlossinessTexture, materialObj, "_SpecGlossMap"); + } + } + + material.Extensions[KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME] = new KHR_materials_pbrSpecularGlossinessExtension( + diffuseFactor, + diffuseTexture, + specularFactor, + glossinessFactor, + specularGlossinessTexture + ); + } + + private MaterialCommonConstant ExportCommonConstant(Material materialObj) + { + if (_root.ExtensionsUsed == null) + { + _root.ExtensionsUsed = new List(new[] { "KHR_materials_common" }); + } + else if (!_root.ExtensionsUsed.Contains("KHR_materials_common")) + { + _root.ExtensionsUsed.Add("KHR_materials_common"); + } + + if (RequireExtensions) + { + if (_root.ExtensionsRequired == null) + { + _root.ExtensionsRequired = new List(new[] { "KHR_materials_common" }); + } + else if (!_root.ExtensionsRequired.Contains("KHR_materials_common")) + { + _root.ExtensionsRequired.Add("KHR_materials_common"); + } + } + + var constant = new MaterialCommonConstant(); + + if (materialObj.HasProperty("_AmbientFactor")) + { + constant.AmbientFactor = materialObj.GetColor("_AmbientFactor").ToNumericsColorRaw(); + } + + if (materialObj.HasProperty("_LightMap")) + { + var lmTex = materialObj.GetTexture("_LightMap"); + + if (lmTex) + { + constant.LightmapTexture = ExportTextureInfo(lmTex, TextureMapType.Linear); + ExportTextureTransform(constant.LightmapTexture, materialObj, "_LightMap"); + } + + } + + if (materialObj.HasProperty("_LightFactor")) + { + constant.LightmapFactor = materialObj.GetColor("_LightFactor").ToNumericsColorRaw(); + } + + return constant; + } + + // TODO make internal + public Texture GetSourceTextureForExportedTexture(GLTFTexture exported) + { + var textureIndex = _root.Textures.FindIndex(x => x == exported); + return _textures[textureIndex].Texture; + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterMaterials.cs.meta b/Runtime/Scripts/SceneExporter/ExporterMaterials.cs.meta new file mode 100644 index 000000000..3c32c572e --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterMaterials.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e09c9ec7a50e4331bd773f4c54f1b9ab +timeCreated: 1657010581 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs new file mode 100644 index 000000000..40ffe0923 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs @@ -0,0 +1,534 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using GLTF.Schema; +using UnityEngine; +using UnityEngine.Rendering; +using UnityGLTF.Extensions; + +#if UNITY_EDITOR // required for in-editor access to non-readable meshes +using UnityEditor; +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + private struct MeshAccessors + { + public AccessorId aPosition, aNormal, aTangent, aTexcoord0, aTexcoord1, aColor0; + public Dictionary subMeshPrimitives; + } + + private struct BlendShapeAccessors + { + public List> targets; + public List weights; + public List targetNames; + } + + private readonly Dictionary _meshToPrims = new Dictionary(); + private readonly Dictionary _meshToBlendShapeAccessors = new Dictionary(); + + public void RegisterPrimitivesWithNode(Node node, List uniquePrimitives) + { + // associate unity meshes with gltf mesh id + foreach (var primKey in uniquePrimitives) + { + _primOwner[primKey] = node.Mesh; + } + } + + private static List GetUniquePrimitivesFromGameObjects(IEnumerable primitives) + { + var primKeys = new List(); + + foreach (var prim in primitives) + { + Mesh meshObj = null; + SkinnedMeshRenderer smr = null; + var filter = prim.GetComponent(); + if (filter) + { + meshObj = filter.sharedMesh; + } + else + { + smr = prim.GetComponent(); + if (smr) + { + meshObj = smr.sharedMesh; + } + } + + if (!meshObj) + { + Debug.LogWarning($"MeshFilter.sharedMesh on GameObject:{prim.name} is missing, skipping", prim); + exportPrimitiveMarker.End(); + return null; + } + + +#if UNITY_EDITOR + if (!MeshIsReadable(meshObj) && EditorUtility.IsPersistent(meshObj)) + { +#if UNITY_2019_3_OR_NEWER + var assetPath = AssetDatabase.GetAssetPath(meshObj); + if (assetPath?.Length > 30) assetPath = "..." + assetPath.Substring(assetPath.Length - 30); + var otherOption = Application.isPlaying ? "No, skip mesh" : "Cancel export"; + if(EditorUtility.DisplayDialog("Exporting mesh but mesh is not readable", + $"The mesh {meshObj.name} is not readable. Do you want to change its import settings and make it readable now?\n\n" + assetPath, + "Make it readable", otherOption, + DialogOptOutDecisionType.ForThisSession, MakeMeshReadableDialogueDecisionKey)) +#endif + { + var path = AssetDatabase.GetAssetPath(meshObj); + var importer = AssetImporter.GetAtPath(path) as ModelImporter; + if (importer) + { + importer.isReadable = true; + importer.SaveAndReimport(); + } + } +#if UNITY_2019_3_OR_NEWER + else + { + if (Application.isPlaying) + { + Debug.LogWarning(null, $"The mesh {meshObj.name} is not readable. Skipping", meshObj); + exportPrimitiveMarker.End(); + } + else + { + Debug.LogError(null, $"The mesh {meshObj.name} is not readable and you decided to cancel the export. Canceling", meshObj); + exportPrimitiveMarker.End(); + throw new OperationCanceledException($"Canceled export because a mesh ({meshObj}) is not readable."); + } + return null; + } +#endif + } +#endif + + if (Application.isPlaying && !MeshIsReadable(meshObj)) + { + Debug.LogWarning($"The mesh {meshObj.name} is not readable. Skipping", null); + exportPrimitiveMarker.End(); + return null; + } + + var renderer = prim.GetComponent(); + if (!renderer) smr = prim.GetComponent(); + + if(!renderer && !smr) + { + Debug.LogWarning("GameObject does have neither renderer nor SkinnedMeshRenderer! " + prim.name, prim); + exportPrimitiveMarker.End(); + return null; + } + + var materialsObj = renderer ? renderer.sharedMaterials : smr.sharedMaterials; + + var primKey = new UniquePrimitive(); + primKey.Mesh = meshObj; + primKey.Materials = materialsObj; + primKey.SkinnedMeshRenderer = smr; + + primKeys.Add(primKey); + } + + return primKeys; + } + + public NodeId ExportNode(GameObject gameObject) => ExportNode(gameObject.transform); + + /// + /// Convenience wrapper around ExportMesh(string, List) + /// + public MeshId ExportMesh(Mesh mesh) + { + var uniquePrimitives = new List + { + new UniquePrimitive() + { + Mesh = mesh, + SkinnedMeshRenderer = null, + Materials = new [] { DefaultMaterial }, + } + }; + return ExportMesh(mesh.name, uniquePrimitives); + } + + public MeshId ExportMesh(string name, List uniquePrimitives) + { + exportMeshMarker.Begin(); + + // check if this set of primitives is already a mesh + MeshId existingMeshId = null; + + foreach (var prim in uniquePrimitives) + { + MeshId tempMeshId; + if (_primOwner.TryGetValue(prim, out tempMeshId) && (existingMeshId == null || tempMeshId == existingMeshId)) + { + existingMeshId = tempMeshId; + } + else + { + existingMeshId = null; + break; + } + } + + // if so, return that mesh id + if (existingMeshId != null) + { + exportMeshMarker.End(); + return existingMeshId; + } + + // if not, create new mesh and return its id + var mesh = new GLTFMesh(); + + if (settings.ExportNames) + { + mesh.Name = name; + } + + mesh.Primitives = new List(uniquePrimitives.Count); + foreach (var primKey in uniquePrimitives) + { + MeshPrimitive[] meshPrimitives = ExportPrimitive(primKey, mesh); + if (meshPrimitives != null) + { + mesh.Primitives.AddRange(meshPrimitives); + } + } + + var id = new MeshId + { + Id = _root.Meshes.Count, + Root = _root + }; + + exportMeshMarker.End(); + + if (mesh.Primitives.Count > 0) + { + _root.Meshes.Add(mesh); + return id; + } + + return null; + } + + // a mesh *might* decode to multiple prims if there are submeshes + private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh) + { + exportPrimitiveMarker.Begin(); + + Mesh meshObj = primKey.Mesh; + Material[] materialsObj = primKey.Materials; + + var maxOfSubMeshesAndMaterials = Math.Max(meshObj.subMeshCount, materialsObj.Length); + var prims = new MeshPrimitive[maxOfSubMeshesAndMaterials]; + + List nonEmptyPrims = null; + var vertices = meshObj.vertices; + if (vertices.Length < 1) + { + Debug.LogWarning(null, "MeshFilter does not contain any vertices or they can't be accessed, won't export: " + meshObj.name, meshObj); + exportPrimitiveMarker.End(); + return null; + } + + if (!_meshToPrims.ContainsKey(meshObj)) + { + AccessorId aPosition = null, aNormal = null, aTangent = null, aTexcoord0 = null, aTexcoord1 = null, aColor0 = null; + + aPosition = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.vertices, SchemaExtensions.CoordinateSpaceConversionScale)); + + if (meshObj.normals.Length != 0) + aNormal = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.normals, SchemaExtensions.CoordinateSpaceConversionScale)); + + if (meshObj.tangents.Length != 0) + aTangent = ExportAccessor(SchemaExtensions.ConvertTangentCoordinateSpaceAndCopy(meshObj.tangents, SchemaExtensions.TangentSpaceConversionScale)); + + if (meshObj.uv.Length != 0) + aTexcoord0 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv)); + + if (meshObj.uv2.Length != 0) + aTexcoord1 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv2)); + + if (settings.ExportVertexColors && meshObj.colors.Length != 0) + aColor0 = ExportAccessor(QualitySettings.activeColorSpace == ColorSpace.Linear ? meshObj.colors : meshObj.colors.ToLinear(), true); + + aPosition.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aNormal != null) aNormal.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aTangent != null) aTangent.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aTexcoord0 != null) aTexcoord0.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aTexcoord1 != null) aTexcoord1.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + if (aColor0 != null) aColor0.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + + _meshToPrims.Add(meshObj, new MeshAccessors() + { + aPosition = aPosition, + aNormal = aNormal, + aTangent = aTangent, + aTexcoord0 = aTexcoord0, + aTexcoord1 = aTexcoord1, + aColor0 = aColor0, + subMeshPrimitives = new Dictionary() + }); + } + + var accessors = _meshToPrims[meshObj]; + + // walk submeshes and export the ones with non-null meshes + for (int id = 0; id < maxOfSubMeshesAndMaterials; id++) + { + var mat = materialsObj[id % materialsObj.Length]; + var submesh = id % meshObj.subMeshCount; + + if (!mat) continue; + if (meshObj.GetIndexCount(submesh) <= 0) continue; + + if (!accessors.subMeshPrimitives.ContainsKey(submesh)) + { + var primitive = new MeshPrimitive(); + + var topology = meshObj.GetTopology(submesh); + var indices = meshObj.GetIndices(submesh); + if (topology == MeshTopology.Triangles) SchemaExtensions.FlipTriangleFaces(indices); + + primitive.Mode = GetDrawMode(topology); + primitive.Indices = ExportAccessor(indices, true); + primitive.Indices.Value.BufferView.Value.Target = BufferViewTarget.ElementArrayBuffer; + + primitive.Attributes = new Dictionary(); + primitive.Attributes.Add(SemanticProperties.POSITION, accessors.aPosition); + + if (accessors.aNormal != null) + primitive.Attributes.Add(SemanticProperties.NORMAL, accessors.aNormal); + if (accessors.aTangent != null) + primitive.Attributes.Add(SemanticProperties.TANGENT, accessors.aTangent); + if (accessors.aTexcoord0 != null) + primitive.Attributes.Add(SemanticProperties.TEXCOORD_0, accessors.aTexcoord0); + if (accessors.aTexcoord1 != null) + primitive.Attributes.Add(SemanticProperties.TEXCOORD_1, accessors.aTexcoord1); + if (accessors.aColor0 != null) + primitive.Attributes.Add(SemanticProperties.COLOR_0, accessors.aColor0); + + primitive.Material = null; + + ExportBlendShapes(primKey.SkinnedMeshRenderer, meshObj, submesh, primitive, mesh); + + accessors.subMeshPrimitives.Add(submesh, primitive); + } + + var submeshPrimitive = accessors.subMeshPrimitives[submesh]; + prims[id] = new MeshPrimitive(submeshPrimitive, _root) + { + Material = ExportMaterial(mat), + }; + // this will contain only the last one + accessors.subMeshPrimitives[submesh] = prims[submesh]; + } + + nonEmptyPrims = new List(prims.Length); + for (var i = 0; i < prims.Length; i++) + { + var prim = prims[i]; + // remove any prims that have empty triangles + if (EmptyPrimitive(prim)) continue; + // invoke pre export event + foreach (var plugin in _plugins) + plugin?.AfterPrimitiveExport(this, meshObj, prim, i); + nonEmptyPrims.Add(prim); + } + prims = nonEmptyPrims.ToArray(); + + exportPrimitiveMarker.End(); + + return prims; + } + + // Blend Shapes / Morph Targets + // Adopted from Gary Hsu (bghgary) + // https://github.com/bghgary/glTF-Tools-for-Unity/blob/master/UnityProject/Assets/Gltf/Editor/Exporter.cs + private void ExportBlendShapes(SkinnedMeshRenderer smr, Mesh meshObj, int submeshIndex, MeshPrimitive primitive, GLTFMesh mesh) + { + if (settings.BlendShapeExportProperties == GLTFSettings.BlendShapeExportPropertyFlags.None) + return; + + if (_meshToBlendShapeAccessors.TryGetValue(meshObj, out var data)) + { + primitive.Targets = data.targets; + mesh.Weights = data.weights; + mesh.TargetNames = data.targetNames; + return; + } + + if (smr != null && meshObj.blendShapeCount > 0) + { + List> targets = new List>(meshObj.blendShapeCount); + List weights = new List(meshObj.blendShapeCount); + List targetNames = new List(meshObj.blendShapeCount); + +#if UNITY_2019_3_OR_NEWER + var meshHasNormals = meshObj.HasVertexAttribute(VertexAttribute.Normal); + var meshHasTangents = meshObj.HasVertexAttribute(VertexAttribute.Tangent); +#else + var meshHasNormals = meshObj.normals.Length > 0; + var meshHasTangents = meshObj.tangents.Length > 0; +#endif + + for (int blendShapeIndex = 0; blendShapeIndex < meshObj.blendShapeCount; blendShapeIndex++) + { + exportBlendShapeMarker.Begin(); + + targetNames.Add(meshObj.GetBlendShapeName(blendShapeIndex)); + // As described above, a blend shape can have multiple frames. Given that glTF only supports a single frame + // per blend shape, we'll always use the final frame (the one that would be for when 100% weight is applied). + int frameIndex = meshObj.GetBlendShapeFrameCount(blendShapeIndex) - 1; + + var deltaVertices = new Vector3[meshObj.vertexCount]; + var deltaNormals = new Vector3[meshObj.vertexCount]; + var deltaTangents = new Vector3[meshObj.vertexCount]; + meshObj.GetBlendShapeFrameVertices(blendShapeIndex, frameIndex, deltaVertices, deltaNormals, deltaTangents); + + var exportTargets = new Dictionary(); + + if (!settings.BlendShapeExportSparseAccessors) + { + var positionAccessor = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaVertices, SchemaExtensions.CoordinateSpaceConversionScale)); + positionAccessor.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + exportTargets.Add(SemanticProperties.POSITION, positionAccessor); + } + else + { + // Debug.Log("Delta Vertices:\n"+string.Join("\n ", deltaVertices)); + // Debug.Log("Vertices:\n"+string.Join("\n ", meshObj.vertices)); + // Experimental: sparse accessor. + // - get the accessor we want to base this upon + // - this is how position is originally exported: + // ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.vertices, SchemaExtensions.CoordinateSpaceConversionScale)); + var baseAccessor = _meshToPrims[meshObj].aPosition; + var exportedAccessor = ExportSparseAccessor(null, null, SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaVertices, SchemaExtensions.CoordinateSpaceConversionScale)); + if (exportedAccessor != null) + { + exportTargets.Add(SemanticProperties.POSITION, exportedAccessor); + } + } + + if (meshHasNormals && settings.BlendShapeExportProperties.HasFlag(GLTFSettings.BlendShapeExportPropertyFlags.Normal)) + { + if (!settings.BlendShapeExportSparseAccessors) + { + var accessor = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaNormals, SchemaExtensions.CoordinateSpaceConversionScale)); + accessor.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + exportTargets.Add(SemanticProperties.NORMAL, accessor); + } + else + { + var baseAccessor = _meshToPrims[meshObj].aNormal; + exportTargets.Add(SemanticProperties.NORMAL, ExportSparseAccessor(null, null, SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaVertices, SchemaExtensions.CoordinateSpaceConversionScale))); + } + } + if (meshHasTangents && settings.BlendShapeExportProperties.HasFlag(GLTFSettings.BlendShapeExportPropertyFlags.Tangent)) + { + if (!settings.BlendShapeExportSparseAccessors) + { + var accessor = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaTangents, SchemaExtensions.CoordinateSpaceConversionScale)); + accessor.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + exportTargets.Add(SemanticProperties.TANGENT, accessor); + } + else + { + // var baseAccessor = _meshToPrims[meshObj].aTangent; + // exportTargets.Add(SemanticProperties.TANGENT, ExportSparseAccessor(baseAccessor, SchemaExtensions.ConvertVector4CoordinateSpaceAndCopy(meshObj.tangents, SchemaExtensions.TangentSpaceConversionScale), SchemaExtensions.ConvertVector4CoordinateSpaceAndCopy(deltaVertices, SchemaExtensions.TangentSpaceConversionScale))); + exportTargets.Add(SemanticProperties.TANGENT, ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaTangents, SchemaExtensions.CoordinateSpaceConversionScale))); + // Debug.LogWarning("Blend Shape Tangents for " + meshObj + " won't be exported with sparse accessors – sparse accessor for tangents isn't supported right now."); + } + } + targets.Add(exportTargets); + + // We need to get the weight from the SkinnedMeshRenderer because this represents the currently + // defined weight by the user to apply to this blend shape. If we instead got the value from + // the unityMesh, it would be a _per frame_ weight, and for a single-frame blend shape, that would + // always be 100. A blend shape might have more than one frame if a user wanted to more tightly + // control how a blend shape will be animated during weight changes (e.g. maybe they want changes + // between 0-50% to be really minor, but between 50-100 to be extreme, hence they'd have two frames + // where the first frame would have a weight of 50 (meaning any weight between 0-50 should be relative + // to the values in this frame) and then any weight between 50-100 would be relevant to the weights in + // the second frame. See Post 20 for more info: + // https://forum.unity3d.com/threads/is-there-some-method-to-add-blendshape-in-editor.298002/#post-2015679 + var frameWeight = meshObj.GetBlendShapeFrameWeight(blendShapeIndex, 0); + if(exportTargets.Any()) + weights.Add(smr.GetBlendShapeWeight(blendShapeIndex) / frameWeight); + + exportBlendShapeMarker.End(); + } + + if(weights.Any() && targets.Any()) + { + mesh.Weights = weights; + mesh.TargetNames = targetNames; + primitive.Targets = targets; + } + else + { + mesh.Weights = null; + mesh.TargetNames = null; + primitive.Targets = null; + } + + // cache the exported data; we can re-use it between all submeshes of a mesh. + _meshToBlendShapeAccessors.Add(meshObj, new BlendShapeAccessors() + { + targets = targets, + weights = weights, + targetNames = targetNames + }); + } + } + + private static bool EmptyPrimitive(MeshPrimitive prim) + { + if (prim == null || prim.Attributes == null) + { + return true; + } + return false; + } + + private static DrawMode GetDrawMode(MeshTopology topology) + { + switch (topology) + { + case MeshTopology.Points: return DrawMode.Points; + case MeshTopology.Lines: return DrawMode.Lines; + case MeshTopology.LineStrip: return DrawMode.LineStrip; + case MeshTopology.Triangles: return DrawMode.Triangles; + } + + throw new Exception("glTF does not support Unity mesh topology: " + topology); + } + +#if UNITY_EDITOR + private const string MakeMeshReadableDialogueDecisionKey = nameof(MakeMeshReadableDialogueDecisionKey); + private static PropertyInfo canAccessProperty = + typeof(Mesh).GetProperty("canAccess", BindingFlags.Instance | BindingFlags.Default | BindingFlags.NonPublic); +#endif + + private static bool MeshIsReadable(Mesh mesh) + { +#if UNITY_EDITOR + return mesh.isReadable || (bool) (canAccessProperty?.GetMethod?.Invoke(mesh, null) ?? true); +#else + return mesh.isReadable; +#endif + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterMeshes.cs.meta b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs.meta new file mode 100644 index 000000000..2a0868d30 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterMeshes.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6bd3287ee078412b83c46ff0e7af9c6b +timeCreated: 1657013770 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterSkinning.cs b/Runtime/Scripts/SceneExporter/ExporterSkinning.cs new file mode 100644 index 000000000..31731c0a8 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterSkinning.cs @@ -0,0 +1,195 @@ +using System.Collections.Generic; +using GLTF.Schema; +using UnityEngine; + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + private List _skinnedNodes; + private Dictionary _bakedMeshes; + + private void ExportSkinFromNode(Transform transform) + { + exportSkinFromNodeMarker.Begin(); + + var go = transform.gameObject; + var skin = transform.GetComponent(); + var mesh = GetMeshFromGameObject(go); + UniquePrimitive key = new UniquePrimitive(); + key.Mesh = mesh; + key.SkinnedMeshRenderer = skin; + key.Materials = GetMaterialsFromGameObject(go); + MeshId val; + if (!_primOwner.TryGetValue(key, out val)) + { + Debug.Log("No mesh found for skin on " + transform, transform); + exportSkinFromNodeMarker.End(); + return; + } + GLTF.Schema.Skin gltfSkin = new Skin(); + + // early out of this SkinnedMeshRenderer has no bones assigned (could be BlendShapes-only) + if (skin.bones == null || skin.bones.Length == 0) + { + exportSkinFromNodeMarker.End(); + return; + } + + bool allBoneTransformNodesHaveBeenExported = true; + for (int i = 0; i < skin.bones.Length; ++i) + { + if (!skin.bones[i]) + { + Debug.LogWarning("Skin has null bone at index " + i + ": " + skin, skin); + continue; + } + var nodeId = skin.bones[i].GetInstanceID(); + if (!_exportedTransforms.ContainsKey(nodeId)) + { + allBoneTransformNodesHaveBeenExported = false; + break; + } + } + + if (!allBoneTransformNodesHaveBeenExported) + { + Debug.LogWarning("Not all bones for SkinnedMeshRenderer " + transform + " were exported. Skin information will be skipped. Make sure the bones are active and enabled if you want to export them.", transform); + exportSkinFromNodeMarker.End(); + return; + } + + for (int i = 0; i < skin.bones.Length; ++i) + { + if (!skin.bones[i]) + { + continue; + } + + var nodeId = skin.bones[i].GetInstanceID(); + + gltfSkin.Joints.Add( + new NodeId + { + Id = _exportedTransforms[nodeId], + Root = _root + }); + } + + gltfSkin.InverseBindMatrices = ExportAccessor(mesh.bindposes); + + Vector4[] bones = boneWeightToBoneVec4(mesh.boneWeights); + Vector4[] weights = boneWeightToWeightVec4(mesh.boneWeights); + + AccessorId sharedBones = null; + AccessorId sharedWeights = null; + + if(val != null) + { + GLTF.Schema.GLTFMesh gltfMesh = _root.Meshes[val.Id]; + if(gltfMesh != null) + { + foreach (MeshPrimitive prim in gltfMesh.Primitives) + { + if (!prim.Attributes.ContainsKey("JOINTS_0")) + { + if (sharedBones != null) + prim.Attributes.Add("JOINTS_0", sharedBones); + else + { + var jointsAccessor = ExportAccessorUint(bones); + jointsAccessor.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + prim.Attributes.Add("JOINTS_0", jointsAccessor); + sharedBones = jointsAccessor; + } + } + + if (!prim.Attributes.ContainsKey("WEIGHTS_0")) + { + if (sharedWeights != null) + prim.Attributes.Add("WEIGHTS_0", sharedWeights); + else + { + var weightsAccessor = ExportAccessor(weights); + weightsAccessor.Value.BufferView.Value.Target = BufferViewTarget.ArrayBuffer; + prim.Attributes.Add("WEIGHTS_0", weightsAccessor); + sharedWeights = weightsAccessor; + } + } + } + } + } + + _root.Nodes[_exportedTransforms[transform.GetInstanceID()]].Skin = new SkinId() { Id = _root.Skins.Count, Root = _root }; + _root.Skins.Add(gltfSkin); + + exportSkinFromNodeMarker.End(); + } + + private UnityEngine.Mesh GetMeshFromGameObject(GameObject gameObject) + { + if (gameObject.GetComponent()) + { + return gameObject.GetComponent().sharedMesh; + } + + SkinnedMeshRenderer skinMesh = gameObject.GetComponent(); + if (skinMesh) + { + if (!ExportAnimations && settings.BakeSkinnedMeshes) + { + if (!_bakedMeshes.ContainsKey(skinMesh)) + { + UnityEngine.Mesh bakedMesh = new UnityEngine.Mesh(); + skinMesh.BakeMesh(bakedMesh); + _bakedMeshes.Add(skinMesh, bakedMesh); + } + + return _bakedMeshes[skinMesh]; + } + + return gameObject.GetComponent().sharedMesh; + } + + return null; + } + + private UnityEngine.Material[] GetMaterialsFromGameObject(GameObject gameObject) + { + if (gameObject.GetComponent()) + { + return gameObject.GetComponent().sharedMaterials; + } + + if (gameObject.GetComponent()) + { + return gameObject.GetComponent().sharedMaterials; + } + + return null; + } + + private Vector4[] boneWeightToBoneVec4(BoneWeight[] bw) + { + Vector4[] bones = new Vector4[bw.Length]; + for (int i = 0; i < bw.Length; ++i) + { + bones[i] = new Vector4(bw[i].boneIndex0, bw[i].boneIndex1, bw[i].boneIndex2, bw[i].boneIndex3); + } + + return bones; + } + + private Vector4[] boneWeightToWeightVec4(BoneWeight[] bw) + { + Vector4[] weights = new Vector4[bw.Length]; + for (int i = 0; i < bw.Length; ++i) + { + weights[i] = new Vector4(bw[i].weight0, bw[i].weight1, bw[i].weight2, bw[i].weight3); + } + + return weights; + } + + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterSkinning.cs.meta b/Runtime/Scripts/SceneExporter/ExporterSkinning.cs.meta new file mode 100644 index 000000000..fe477e778 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterSkinning.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fb74840032dc4385aea8ea2f67c3d17e +timeCreated: 1657012764 \ No newline at end of file diff --git a/Runtime/Scripts/SceneExporter/ExporterTextures.cs b/Runtime/Scripts/SceneExporter/ExporterTextures.cs new file mode 100644 index 000000000..9c2805161 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterTextures.cs @@ -0,0 +1,824 @@ +using System; +using System.Collections.Generic; +using System.IO; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Cache; +using Object = UnityEngine.Object; +using WrapMode = GLTF.Schema.WrapMode; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneExporter + { + private string GetUniqueName(HashSet existingNames, string name) + { + if (!existingNames.Contains(name)) return name; + var i = 1; + while (existingNames.Contains(name + "-" + i)) + i++; + return name + "-" + i; + } + + private void ExportImages(string outputPath) + { + var allPaths = new HashSet(); + for (int t = 0; t < _imageInfos.Count; ++t) + { + writeImageToDiskMarker.Begin(); + + var image = _imageInfos[t].texture; + var textureMapType = _imageInfos[t].textureMapType; + var fileOutputPath = Path.Combine(outputPath, GetUniqueName(allPaths, _imageInfos[t].outputPath)); + allPaths.Add(fileOutputPath); + + var canBeExportedFromDisk = _imageInfos[t].canBeExportedFromDisk; + + var dir = Path.GetDirectoryName(fileOutputPath); + if (!Directory.Exists(dir) && dir != null) + Directory.CreateDirectory(dir); + + bool wasAbleToExportTexture = false; + if (canBeExportedFromDisk) + { + File.WriteAllBytes(fileOutputPath, GetTextureDataFromDisk(image)); + wasAbleToExportTexture = true; + } + + if (!wasAbleToExportTexture) + { + switch (textureMapType.conversion) + { + case TextureExportSettings.Conversion.MetalGlossChannelSwap: + ExportLinearTexture(image, fileOutputPath, true); + break; + case TextureExportSettings.Conversion.None: + if (textureMapType.linear) + ExportLinearTexture(image, fileOutputPath, false); + else + ExportTexture(image, fileOutputPath); + break; + case TextureExportSettings.Conversion.NormalChannel: + ExportNormalTexture(image, fileOutputPath); + break; + default: + ExportTexture(image, fileOutputPath); + break; + } + } + + writeImageToDiskMarker.End(); + } + } + + /// + /// This converts Unity's metallic-gloss texture representation into GLTF's metallic-roughness specifications. + /// Unity's metallic-gloss A channel (glossiness) is inverted and goes into GLTF's metallic-roughness G channel (roughness). + /// Unity's metallic-gloss R channel (metallic) goes into GLTF's metallic-roughess B channel. + /// + /// Unity's metallic-gloss texture to be exported + /// The location to export the texture + private void ExportLinearTexture(Texture2D texture, string outputPath, bool swapMetalGlossChannels) + { + if (!texture) + { + UnityEngine.Debug.LogError("Can not export missing texture: " + outputPath); + return; + } + var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); + if (swapMetalGlossChannels) + Graphics.Blit(texture, destRenderTexture, _metalGlossChannelSwapMaterial); + else + Graphics.Blit(texture, destRenderTexture); + WriteRenderTextureToDiskAndRelease(destRenderTexture, outputPath, true); + } + + /// + /// This export's the normal texture. If a texture is marked as a normal map, the values are stored in the A and G channel. + /// To output the correct normal texture, the A channel is put into the R channel. + /// + /// Unity's normal texture to be exported + /// The location to export the texture + private void ExportNormalTexture(Texture2D texture, string outputPath) + { + var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); + var wr = GL.sRGBWrite; + GL.sRGBWrite = false; + Graphics.Blit(texture, destRenderTexture, _normalChannelMaterial); + WriteRenderTextureToDiskAndRelease(destRenderTexture, outputPath, true); + GL.sRGBWrite = wr; + } + + private void ExportTexture(Texture2D texture, string outputPath) + { + var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); + Graphics.Blit(texture, destRenderTexture); + WriteRenderTextureToDiskAndRelease(destRenderTexture, outputPath, false); + } + + private void WriteRenderTextureToDiskAndRelease(RenderTexture destRenderTexture, string outputPath, bool linear) + { + RenderTexture.active = destRenderTexture; + + TextureFormat format = TextureFormat.ARGB32; + if (outputPath.EndsWith(".exr")) format = TextureFormat.RGBAFloat; + + var exportTexture = new Texture2D(destRenderTexture.width, destRenderTexture.height, format, false, linear); + exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); + exportTexture.Apply(); + + byte[] binaryData; + if(outputPath.EndsWith(".jpg")) + binaryData = exportTexture.EncodeToJPG(settings.DefaultJpegQuality); + else if(outputPath.EndsWith(".png")) + binaryData = exportTexture.EncodeToPNG(); + else if (outputPath.EndsWith(".exr")) + binaryData = exportTexture.EncodeToEXR(Texture2D.EXRFlags.CompressZIP); + else + { + Debug.LogError("Unsupported file extension: " + outputPath, destRenderTexture); + binaryData = exportTexture.EncodeToPNG(); + } + + File.WriteAllBytes(outputPath, binaryData); + + RenderTexture.ReleaseTemporary(destRenderTexture); + if (Application.isEditor) + Object.DestroyImmediate(exportTexture); + else + Object.Destroy(exportTexture); + } + + public TextureInfo ExportTextureInfo(Texture texture, string textureSlot, TextureExportSettings exportSettings = default) + { + if (!texture) return null; + + var info = new TextureInfo(); + + info.Index = ExportTexture(texture, textureSlot, exportSettings); + + return info; + } + + public TextureInfo ExportTextureInfoWithTextureTransform(Material mat, Texture texture, string textureSlot, + TextureExportSettings exportSettings = default) + { + var tInfo = ExportTextureInfo(texture, textureSlot, exportSettings); + if (texture != null) + ExportTextureTransform(tInfo, mat, textureSlot); + return tInfo; + } + + public TextureId ExportTexture(Texture textureObj, string textureSlot, TextureExportSettings exportSettings = default) + { + var uniqueTexture = exportSettings.isValid ? + new UniqueTexture(textureObj, exportSettings) : + new UniqueTexture(textureObj, textureSlot, this); + + foreach (var plugin in _plugins) + plugin?.BeforeTextureExport(this, ref uniqueTexture, textureSlot); + + TextureId id = GetTextureId(_root, uniqueTexture); + if (id != null) + { + return id; + } + + var texture = new GLTFTexture(); + + //If texture name not set give it a unique name using count + if (textureObj.name == "") + { + textureObj.name = (_root.Textures.Count + 1).ToString(); + } + + if (settings.ExportNames) + { + texture.Name = textureObj.name; + } + + if (_shouldUseInternalBufferForImages) + { + texture.Source = ExportImageInternalBuffer(uniqueTexture, textureSlot); + } + else + { + texture.Source = ExportImage(uniqueTexture, textureSlot); + } + texture.Sampler = ExportSampler(textureObj); + + _textures.Add(uniqueTexture); + + id = new TextureId + { + Id = _root.Textures.Count, + Root = _root + }; + + _root.Textures.Add(texture); + + // HACK we should properly check if the above texture was exported as EXR and then treat it differently; + // this here assumes the texture is already readable / was read back + if (textureSlot == TextureMapType.Custom_HDR) + { + if (texture.Extensions == null) texture.Extensions = new Dictionary(); + texture.Extensions.Add(EXT_texture_exr.EXTENSION_NAME, new EXT_texture_exr(texture.Source)); + DeclareExtensionUsage(EXT_texture_exr.EXTENSION_NAME); + } + + foreach (var plugin in _plugins) + plugin?.AfterTextureExport(this, uniqueTexture, id.Id, texture); + + return id; + } + + /// + /// Used for determining the resulting file output path for external images (not internal buffer). + /// Depends on various factors such as alpha channel, texture map type / conversion needs, and existing data on disk. + /// Logic needs to match the one in ExportImageInternalBuffer. + /// The actual export happens in ExportImages. + /// + /// The relative texture output path on disk, including extension + private string GetImageOutputPath(Texture texture, TextureExportSettings textureMapType, string textureSlot, out bool ableToExportFromDisk) + { + var imagePath = _exportContext.TexturePathRetriever(texture); + if (string.IsNullOrEmpty(imagePath)) + { + imagePath = texture.name; + } + + ableToExportFromDisk = false; + bool textureHasAlpha = true; + + if (settings.TryExportTexturesFromDisk && CanGetTextureDataFromDisk(textureMapType, texture, out string path)) + { + if (IsPng(path) || IsJpeg(path)) + { + imagePath = path; + ableToExportFromDisk = true; + } + } + + switch (textureMapType.alphaMode) + { + case TextureExportSettings.AlphaMode.Never: + textureHasAlpha = false; + break; + case TextureExportSettings.AlphaMode.Heuristic: + textureHasAlpha = TextureHasAlphaChannel(texture); + break; + } + + var canExportAsJpeg = !textureHasAlpha && settings.UseTextureFileTypeHeuristic; + var desiredExtension = canExportAsJpeg ? ".jpg" : ".png"; + if (textureSlot == TextureMapType.Custom_HDR) + desiredExtension = ".exr"; + + if (!settings.ExportFullPath) + { + imagePath = Path.GetFileName(imagePath); + } + + if (!ableToExportFromDisk) + { + imagePath = Path.ChangeExtension(imagePath, desiredExtension); + } + + return imagePath; + } + + private ImageId ExportImage(UniqueTexture uniqueTexture, string textureSlot) + { + var texture = uniqueTexture.Texture; + var width = uniqueTexture.GetWidth(); + var height = uniqueTexture.GetHeight(); + + ImageId id = GetImageId(_root, texture, uniqueTexture.ExportSettings); + if (id != null) + { + return id; + } + + var image = new GLTFImage(); + + if (ExportNames) + { + image.Name = texture.name; + } + + if (texture.GetType() == typeof(RenderTexture)) + { + Texture2D tempTexture = new Texture2D(width, height); + tempTexture.name = texture.name; + + RenderTexture.active = texture as RenderTexture; + tempTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0); + tempTexture.Apply(); + texture = tempTexture; + } + +#if UNITY_2017_1_OR_NEWER + if (texture.GetType() == typeof(CustomRenderTexture)) + { + Texture2D tempTexture = new Texture2D(width, height); + tempTexture.name = texture.name; + + RenderTexture.active = texture as CustomRenderTexture; + tempTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0); + tempTexture.Apply(); + texture = tempTexture; + } +#endif + + var filenamePath = GetImageOutputPath(texture, uniqueTexture.ExportSettings, textureSlot, out var canBeExportedFromDisk); + + // some characters such as # are allowed as part of an URI and are thus not escaped + // by EscapeUriString. They need to be escaped if they're part of the filename though. + image.Uri = Path.Combine( + Uri.EscapeUriString(Path.GetDirectoryName(filenamePath).Replace("\\","/")), + Uri.EscapeDataString(Path.GetFileName(filenamePath)) + ).Replace("\\","/"); + + // TODO: handle cubemap export + var imageInfoTexture = texture as Texture2D; + _imageInfos.Add(new ImageInfo + { + texture = imageInfoTexture, + textureMapType = uniqueTexture.ExportSettings, + outputPath = filenamePath, + canBeExportedFromDisk = canBeExportedFromDisk, + }); + + id = new ImageId + { + Id = _root.Images.Count, + Root = _root + }; + + if (image.Name.EndsWith(GLTFSceneImporter.EMPTY_TEXTURE_NAME_SUFFIX)) + image.Name = ""; + + _root.Images.Add(image); + + return id; + } + + private bool CanGetTextureDataFromDisk(TextureExportSettings textureMapType, Texture texture, out string path) + { + path = null; + +#if UNITY_EDITOR + if (Application.isEditor && UnityEditor.AssetDatabase.Contains(texture)) + { + path = UnityEditor.AssetDatabase.GetAssetPath(texture); + var importer = AssetImporter.GetAtPath(path) as TextureImporter; + if (importer?.textureShape != TextureImporterShape.Texture2D) + return false; + + switch (textureMapType.conversion) + { + // if this is a normal map generated from greyscale, we shouldn't attempt to export from disk + case TextureExportSettings.Conversion.NormalChannel: + if (importer && importer.textureType == TextureImporterType.NormalMap && importer.convertToNormalmap) + return false; + break; + // check if the texture contains an alpha channel; if yes, we shouldn't attempt to export from disk but instead convert. + case TextureExportSettings.Conversion.MetalGlossChannelSwap: + if (importer && importer.DoesSourceTextureHaveAlpha()) + return false; + break; + } + + if (File.Exists(path)) + { + if(AssetDatabase.GetMainAssetTypeAtPath(path) != typeof(Texture2D)) + { + var ext = Path.GetExtension(path); + path = path.Replace(ext, "-" + texture.name + ext); + } + return true; + } + } +#endif + return false; + } + + private byte[] GetTextureDataFromDisk(Texture texture) + { +#if UNITY_EDITOR + var path = UnityEditor.AssetDatabase.GetAssetPath(texture); + + if (File.Exists(path)) + return File.ReadAllBytes(path); +#endif + return null; + } + + bool TextureHasAlphaChannel(Texture sourceTexture) + { + var hasAlpha = false; + +#if UNITY_EDITOR + if (AssetDatabase.Contains(sourceTexture) && sourceTexture is Texture2D) + { + var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(sourceTexture)) as TextureImporter; + if (importer) + { + switch (importer.alphaSource) + { + case TextureImporterAlphaSource.FromInput: + hasAlpha = importer.DoesSourceTextureHaveAlpha(); + break; + case TextureImporterAlphaSource.FromGrayScale: + hasAlpha = true; + break; + case TextureImporterAlphaSource.None: + hasAlpha = false; + break; + } + } + } +#endif + + UnityEngine.Experimental.Rendering.GraphicsFormat graphicsFormat = UnityEngine.Experimental.Rendering.GraphicsFormat.None; +#if !UNITY_2019_1_OR_NEWER + if (sourceTexture is Texture2D tex2D) + graphicsFormat = UnityEngine.Experimental.Rendering.GraphicsFormatUtility.GetGraphicsFormat(tex2D.format, true); +#else + graphicsFormat = sourceTexture.graphicsFormat; +#endif +#if UNITY_2018_2_OR_NEWER + if(graphicsFormat != UnityEngine.Experimental.Rendering.GraphicsFormat.None) + hasAlpha |= UnityEngine.Experimental.Rendering.GraphicsFormatUtility.HasAlphaChannel(graphicsFormat); +#else + hasAlpha = true; +#endif + return hasAlpha; + } + + private bool IsPng(string filename) + { + return Path.GetExtension(filename).EndsWith("png", StringComparison.InvariantCultureIgnoreCase); + } + + private bool IsJpeg(string filename) + { + return Path.GetExtension(filename).EndsWith("jpg", StringComparison.InvariantCultureIgnoreCase) || Path.GetExtension(filename).EndsWith("jpeg", StringComparison.InvariantCultureIgnoreCase); + } + +#if UNITY_EDITOR + private bool TryGetImporter(Object obj, out T importer) where T : AssetImporter + { + if (EditorUtility.IsPersistent(obj)) + { + var texturePath = AssetDatabase.GetAssetPath(obj); + importer = AssetImporter.GetAtPath(texturePath) as T; + return importer; + } + importer = null; + return false; + } +#endif + + private ImageId ExportImageInternalBuffer(UniqueTexture uniqueTexture, string textureSlot) + { + var texture = uniqueTexture.Texture; + var exportSettings = uniqueTexture.ExportSettings; + + const string PNGMimeType = "image/png"; + const string JPEGMimeType = "image/jpeg"; + const string EXRMimeType = "image/exr"; + + if (texture == null) + { + throw new NullReferenceException("texture can not be NULL."); + } + + var image = new GLTFImage(); + image.MimeType = PNGMimeType; + + AlignToBoundary(_bufferWriter.BaseStream, 0x00); + uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); + + bool wasAbleToExport = false; + bool textureHasAlpha = true; + + if (settings.TryExportTexturesFromDisk && CanGetTextureDataFromDisk(exportSettings, texture, out string path)) + { + if (IsPng(path)) + { + image.MimeType = PNGMimeType; + var imageBytes = GetTextureDataFromDisk(texture); + _bufferWriter.Write(imageBytes); + wasAbleToExport = true; + } + else if (IsJpeg(path)) + { + image.MimeType = JPEGMimeType; + var imageBytes = GetTextureDataFromDisk(texture); + _bufferWriter.Write(imageBytes); + wasAbleToExport = true; + } + else + { + Debug.Log("Texture can't be exported from disk: " + path + ". Only PNG & JPEG are supported. The texture will be re-encoded as PNG.", texture); + } + } + + // export in-memory floating point textures as EXR + // TODO add readback when not readable + if (!wasAbleToExport && textureSlot == TextureMapType.Custom_HDR) + { + byte[] exrImageData = default; + + if (texture.isReadable) + { + const Texture2D.EXRFlags EXR_Flags = Texture2D.EXRFlags.CompressZIP; + + if (texture is Texture2D texture2D) + { + exrImageData = texture2D.EncodeToEXR(EXR_Flags); + } + else if (texture is RenderTexture rt) + { + var prev = RenderTexture.active; + RenderTexture.active = rt; + var temp = new Texture2D(rt.width, rt.height, TextureFormat.RGBAFloat, false, true); + temp.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); + temp.Apply(); + RenderTexture.active = prev; + exrImageData = temp.EncodeToEXR(EXR_Flags); + } + } + + if (exrImageData != null) + { + image.MimeType = EXRMimeType; + _bufferWriter.Write(exrImageData); + wasAbleToExport = true; + } + } + + if (!wasAbleToExport) + { + var sRGB = !exportSettings.linear; + +#if UNITY_EDITOR + if (textureSlot == TextureMapType.Custom_Unknown) + { +#if UNITY_EDITOR + if (TryGetImporter(texture, out var importer)) + { + if (!importer.sRGBTexture) + sRGB = false; + else + sRGB = true; + } +#endif + } +#endif + + var format = sRGB ? RenderTextureReadWrite.sRGB : RenderTextureReadWrite.Linear; + + var width = uniqueTexture.GetWidth(); + var height = uniqueTexture.GetHeight(); + + // TODO we could make sure texture size is power-of-two here + + switch (exportSettings.alphaMode) + { + case TextureExportSettings.AlphaMode.Never: + textureHasAlpha = false; + break; + case TextureExportSettings.AlphaMode.Always: + textureHasAlpha = true; + break; + case TextureExportSettings.AlphaMode.Heuristic: + textureHasAlpha = TextureHasAlphaChannel(texture); + break; + } + + if (textureSlot == TextureMapType.Custom_HDR) + { + Debug.LogWarning("HDR Texture Export from non-readable textures isn't supported yet", texture); + } + + + var canExportAsJpeg = !textureHasAlpha && settings.UseTextureFileTypeHeuristic; + image.MimeType = canExportAsJpeg ? JPEGMimeType : PNGMimeType; + + var cacheKey = uniqueTexture.GetHashCode().ToString(); + if (settings.UseCaching && ExportCache.TryGetBytes(texture, cacheKey, out var bytes)) + { + _bufferWriter.Write(bytes); + } + else + { + var destRenderTexture = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.Default, format); + var previousSRGBState = GL.sRGBWrite; + GL.sRGBWrite = sRGB; + + var shader = GetConversionMaterial(exportSettings); + if (shader && shader.HasProperty("_SmoothnessMultiplier")) + shader.SetFloat("_SmoothnessMultiplier", exportSettings.smoothnessMultiplier); + + if (shader) + Graphics.Blit(texture, destRenderTexture, shader); + else + Graphics.Blit(texture, destRenderTexture); + + var exportTexture = new Texture2D(width, height, TextureFormat.ARGB32, false, false); + exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); + + var imageData = canExportAsJpeg ? exportTexture.EncodeToJPG(settings.DefaultJpegQuality) : exportTexture.EncodeToPNG(); + _bufferWriter.Write(imageData); + + if (settings.UseCaching) + ExportCache.AddBytes(texture, cacheKey, imageData); + + GL.sRGBWrite = previousSRGBState; + + RenderTexture.ReleaseTemporary(destRenderTexture); + + if (Application.isEditor) + { + UnityEngine.Object.DestroyImmediate(exportTexture); + } + else + { + UnityEngine.Object.Destroy(exportTexture); + } + } + + + } + + // // Check for potential warnings in GLTF validation + // if (!Mathf.IsPowerOfTwo(texture.width) || !Mathf.IsPowerOfTwo(texture.height)) + // { + // Debug.LogWarning("Validation Warning: " + "Image has non-power-of-two dimensions: " + texture.width + "x" + texture.height + ".", texture); + // } + + uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); + image.BufferView = ExportBufferView((uint)byteOffset, (uint)byteLength); + + if (ExportNames) + { + image.Name = texture.name; + } + + if (image.Name.EndsWith(GLTFSceneImporter.EMPTY_TEXTURE_NAME_SUFFIX)) + image.Name = ""; + + var id = new ImageId + { + Id = _root.Images.Count, + Root = _root + }; + _root.Images.Add(image); + + return id; + } + + private struct SamplerRelevantTextureData : IEquatable + { + private readonly TextureWrapMode wrapMode; + private readonly FilterMode filterMode; + private readonly bool hasMipmaps; + private readonly bool hasAniso; + public bool HasMipmaps => hasMipmaps; + public bool HasAniso => hasAniso; + + public SamplerRelevantTextureData(Texture texture) + { + var mipmapCount = 1; + var aniso = 1; +#if UNITY_2019_2_OR_NEWER + mipmapCount = texture.mipmapCount; + aniso = texture.anisoLevel; +#else + if (texture is Texture2D tex2D) mipmapCount = tex2D.mipmapCount; +#endif + wrapMode = texture.wrapMode; + filterMode = texture.filterMode; + hasMipmaps = mipmapCount > 1; + hasAniso = aniso > 0; + } + + public bool Equals(SamplerRelevantTextureData other) + { + return wrapMode == other.wrapMode && filterMode == other.filterMode && hasMipmaps == other.hasMipmaps && hasAniso == other.hasAniso; + } + + public override bool Equals(object obj) + { + return obj is SamplerRelevantTextureData other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + var hashCode = (int)wrapMode; + hashCode = (hashCode * 397) ^ (int)filterMode; + hashCode = (hashCode * 397) ^ hasMipmaps.GetHashCode(); + hashCode = (hashCode * 397) ^ hasAniso.GetHashCode(); + return hashCode; + } + } + } + + private Dictionary _textureSettingsToSamplerIndices = + new Dictionary(); + private SamplerId ExportSampler(Texture texture) + { + var dataForTexture = new SamplerRelevantTextureData(texture); + + if (_textureSettingsToSamplerIndices.TryGetValue(dataForTexture, out var existingSamplerIndex)) + { + return new SamplerId + { + Id = existingSamplerIndex, + Root = _root + }; + } + + var sampler = new Sampler(); + + switch (texture.wrapMode) + { + case TextureWrapMode.Clamp: + sampler.WrapS = WrapMode.ClampToEdge; + sampler.WrapT = WrapMode.ClampToEdge; + break; + case TextureWrapMode.Repeat: + sampler.WrapS = WrapMode.Repeat; + sampler.WrapT = WrapMode.Repeat; + break; + case TextureWrapMode.Mirror: + sampler.WrapS = WrapMode.MirroredRepeat; + sampler.WrapT = WrapMode.MirroredRepeat; + break; + default: + Debug.LogWarning("Unsupported Texture.wrapMode: " + texture.wrapMode, texture); + sampler.WrapS = WrapMode.Repeat; + sampler.WrapT = WrapMode.Repeat; + break; + } + + if(dataForTexture.HasMipmaps) + { + switch (texture.filterMode) + { + case FilterMode.Point: + sampler.MinFilter = MinFilterMode.NearestMipmapNearest; + sampler.MagFilter = MagFilterMode.Nearest; + break; + case FilterMode.Bilinear: + // not technically correct but matches result in Unity much better. When any aniso is on, the expectation is a smooth texture transition. + sampler.MinFilter = dataForTexture.HasAniso ? MinFilterMode.LinearMipmapLinear : MinFilterMode.LinearMipmapNearest; + sampler.MagFilter = MagFilterMode.Linear; + break; + case FilterMode.Trilinear: + sampler.MinFilter = MinFilterMode.LinearMipmapLinear; + sampler.MagFilter = MagFilterMode.Linear; + break; + default: + Debug.LogWarning("Unsupported Texture.filterMode: " + texture.filterMode, texture); + sampler.MinFilter = MinFilterMode.LinearMipmapLinear; + sampler.MagFilter = MagFilterMode.Linear; + break; + } + } + else + { + switch (texture.filterMode) + { + case FilterMode.Point: + sampler.MinFilter = MinFilterMode.Nearest; + sampler.MagFilter = MagFilterMode.Nearest; + break; + default: + sampler.MinFilter = MinFilterMode.Linear; + sampler.MagFilter = MagFilterMode.Linear; + break; + } + } + + var samplerId = new SamplerId + { + Id = _root.Samplers.Count, + Root = _root + }; + + _root.Samplers.Add(sampler); + _textureSettingsToSamplerIndices.Add(dataForTexture, samplerId.Id); + + return samplerId; + } + } +} diff --git a/Runtime/Scripts/SceneExporter/ExporterTextures.cs.meta b/Runtime/Scripts/SceneExporter/ExporterTextures.cs.meta new file mode 100644 index 000000000..eabd3fcb0 --- /dev/null +++ b/Runtime/Scripts/SceneExporter/ExporterTextures.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e2d7fb34285a479db4c18291fe881855 +timeCreated: 1657010903 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter.meta b/Runtime/Scripts/SceneImporter.meta new file mode 100644 index 000000000..93c2b46e6 --- /dev/null +++ b/Runtime/Scripts/SceneImporter.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4903dfef32b84dd2862485b344995895 +timeCreated: 1657012079 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterNormals.cs b/Runtime/Scripts/SceneImporter/GLTFImporterNormals.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterNormals.cs rename to Runtime/Scripts/SceneImporter/GLTFImporterNormals.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterNormals.cs.meta b/Runtime/Scripts/SceneImporter/GLTFImporterNormals.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterNormals.cs.meta rename to Runtime/Scripts/SceneImporter/GLTFImporterNormals.cs.meta diff --git a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs new file mode 100644 index 000000000..12a56c688 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs @@ -0,0 +1,377 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using GLTF; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Cache; +using UnityGLTF.Extensions; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { +#if UNITY_ANIMATION || !UNITY_2019_1_OR_NEWER + private static string RelativePathFrom(Transform self, Transform root) + { + var path = new List(); + for (var current = self; current != null; current = current.parent) + { + if (current == root) + { + return String.Join("/", path.ToArray()); + } + + path.Insert(0, current.name); + } + + throw new Exception("no RelativePath"); + } + + protected virtual async Task BuildAnimationSamplers(GLTFAnimation animation, int animationId) + { + // look up expected data types + var typeMap = new Dictionary(); + foreach (var channel in animation.Channels) + { + typeMap[channel.Sampler.Id] = channel.Target.Path.ToString(); + } + + var samplers = _assetCache.AnimationCache[animationId].Samplers; + var samplersByType = new Dictionary> + { + {"time", new List(animation.Samplers.Count)} + }; + + for (var i = 0; i < animation.Samplers.Count; i++) + { + // no sense generating unused samplers + if (!typeMap.ContainsKey(i)) + { + continue; + } + + var samplerDef = animation.Samplers[i]; + + samplers[i].Interpolation = samplerDef.Interpolation; + + // set up input accessors + BufferCacheData inputBufferCacheData = await GetBufferData(samplerDef.Input.Value.BufferView.Value.Buffer); + AttributeAccessor attributeAccessor = new AttributeAccessor + { + AccessorId = samplerDef.Input, + Stream = inputBufferCacheData.Stream, + Offset = inputBufferCacheData.ChunkOffset + }; + + samplers[i].Input = attributeAccessor; + samplersByType["time"].Add(attributeAccessor); + + // set up output accessors + BufferCacheData outputBufferCacheData = await GetBufferData(samplerDef.Output.Value.BufferView.Value.Buffer); + attributeAccessor = new AttributeAccessor + { + AccessorId = samplerDef.Output, + Stream = outputBufferCacheData.Stream, + Offset = outputBufferCacheData.ChunkOffset + }; + + samplers[i].Output = attributeAccessor; + + if (!samplersByType.ContainsKey(typeMap[i])) + { + samplersByType[typeMap[i]] = new List(); + } + + samplersByType[typeMap[i]].Add(attributeAccessor); + } + + // populate attributeAccessors with buffer data + GLTFHelpers.BuildAnimationSamplers(ref samplersByType); + } + + protected void SetAnimationCurve( + AnimationClip clip, + string relativePath, + string[] propertyNames, + NumericArray input, + NumericArray output, + InterpolationType mode, + Type curveType, + ValuesConvertion getConvertedValues) + { + var channelCount = propertyNames.Length; + var frameCount = input.AsFloats.Length; + + // copy all the key frame data to cache + Keyframe[][] keyframes = new Keyframe[channelCount][]; + for (var ci = 0; ci < channelCount; ++ci) + { + keyframes[ci] = new Keyframe[frameCount]; + } + + for (var i = 0; i < frameCount; ++i) + { + var time = input.AsFloats[i]; + + float[] values = null; + float[] inTangents = null; + float[] outTangents = null; + if (mode == InterpolationType.CUBICSPLINE) + { + // For cubic spline, the output will contain 3 values per keyframe; inTangent, dataPoint, and outTangent. + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation + + var cubicIndex = i * 3; + inTangents = getConvertedValues(output, cubicIndex); + values = getConvertedValues(output, cubicIndex + 1); + outTangents = getConvertedValues(output, cubicIndex + 2); + } + else + { + // For other interpolation types, the output will only contain one value per keyframe + values = getConvertedValues(output, i); + } + + for (var ci = 0; ci < channelCount; ++ci) + { + if (mode == InterpolationType.CUBICSPLINE) + { + keyframes[ci][i] = new Keyframe(time, values[ci], inTangents[ci], outTangents[ci]); + } + else + { + keyframes[ci][i] = new Keyframe(time, values[ci]); + } + } + } + + if (mode == InterpolationType.LINEAR && channelCount == 4 && propertyNames.All(p => p == "localRotation.x" || p == "localRotation.y" || p == "localRotation.z" || p == "localRotation.w")) + { + Quaternion prev = Quaternion.identity; + for (int i = 0; i < keyframes[0].Length; i++) + { + Quaternion q = new Quaternion(keyframes[0][i].value, keyframes[1][i].value, keyframes[2][i].value, keyframes[3][i].value); + if (i > 0) + { + if (Quaternion.Dot(prev, q) < 0) + q = new Quaternion(-q.x, -q.y, -q.z, -q.w); + + keyframes[0][i].value = q.x; + keyframes[1][i].value = q.y; + keyframes[2][i].value = q.z; + keyframes[3][i].value = q.w; + } + prev = q; + } + } + + for (var ci = 0; ci < channelCount; ci++) + { + if (mode != InterpolationType.CUBICSPLINE) + { + // For cubic spline interpolation, the inTangents and outTangents are already explicitly defined. + // For the rest, set them appropriately. + for (var i = 0; i < keyframes[ci].Length; i++) + { + SetTangentMode(keyframes[ci], i, mode); + } + } + + // copy all key frames data to animation curve and add it to the clip + AnimationCurve curve = new AnimationCurve(keyframes[ci]); + +#if !UNITY_EDITOR + // Only in editor SetCurve works with non-legacy clips + if (clip.legacy) +#endif + clip.SetCurve(relativePath, curveType, propertyNames[ci], curve); + } + } + + private static void SetTangentMode(Keyframe[] keyframes, int keyframeIndex, InterpolationType interpolation) + { + var key = keyframes[keyframeIndex]; + + switch (interpolation) + { + case InterpolationType.CATMULLROMSPLINE: + key.inTangent = 0; + key.outTangent = 0; + break; + case InterpolationType.LINEAR: + key.inTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex); + key.outTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex + 1); + break; + case InterpolationType.STEP: + key.inTangent = float.PositiveInfinity; + key.outTangent = 0; + break; + default: + throw new NotImplementedException(); + } + keyframes[keyframeIndex] = key; + } + + private static float GetCurveKeyframeLeftLinearSlope(Keyframe[] keyframes, int keyframeIndex) + { + if (keyframeIndex <= 0 || keyframeIndex >= keyframes.Length) + { + return 0; + } + + var valueDelta = keyframes[keyframeIndex].value - keyframes[keyframeIndex - 1].value; + var timeDelta = keyframes[keyframeIndex].time - keyframes[keyframeIndex - 1].time; + + if (timeDelta <= 0) + { + var k = keyframes[keyframeIndex]; + k.time = keyframes[keyframeIndex - 1].time + Mathf.Epsilon + 1 / 100f; + keyframes[keyframeIndex] = k; + Debug.Log(LogType.Warning, "Time of subsequent animation keyframes is not increasing (glTF-Validator error ACCESSOR_ANIMATION_INPUT_NON_INCREASING)"); + return float.PositiveInfinity; + } + return valueDelta / timeDelta; + } + + protected async Task ConstructClip(Transform root, int animationId, CancellationToken cancellationToken) + { + GLTFAnimation animation = _gltfRoot.Animations[animationId]; + + AnimationCacheData animationCache = _assetCache.AnimationCache[animationId]; + if (animationCache == null) + { + animationCache = new AnimationCacheData(animation.Samplers.Count); + _assetCache.AnimationCache[animationId] = animationCache; + } + else if (animationCache.LoadedAnimationClip != null) + { + return animationCache.LoadedAnimationClip; + } + + // unpack accessors + await BuildAnimationSamplers(animation, animationId); + + // init clip + AnimationClip clip = new AnimationClip + { + name = animation.Name ?? $"animation:{animationId}", + }; + _assetCache.AnimationCache[animationId].LoadedAnimationClip = clip; + + if (_options.AnimationMethod == AnimationMethod.Legacy) + clip.legacy = true; + + foreach (AnimationChannel channel in animation.Channels) + { + AnimationSamplerCacheData samplerCache = animationCache.Samplers[channel.Sampler.Id]; + if (channel.Target.Node == null) + { + // If a channel doesn't have a target node, then just skip it. + // This is legal and is present in one of the asset generator models, but means that animation doesn't actually do anything. + // https://github.com/KhronosGroup/glTF-Asset-Generator/tree/master/Output/Positive/Animation_NodeMisc + // Model 08 + continue; + } + var node = await GetNode(channel.Target.Node.Id, cancellationToken); + string relativePath = RelativePathFrom(node.transform, root); + + NumericArray input = samplerCache.Input.AccessorContent, + output = samplerCache.Output.AccessorContent; + + string[] propertyNames; + var known = Enum.TryParse(channel.Target.Path, out GLTFAnimationChannelPath path); + if (!known) continue; + switch (path) + { + case GLTFAnimationChannelPath.translation: + propertyNames = new string[] { "localPosition.x", "localPosition.y", "localPosition.z" }; +#if UNITY_EDITOR + // TODO technically this should be postprocessing in the ScriptedImporter instead, + // but performance is much better if we do it when constructing the clips + var factor = Context?.ImportScaleFactor ?? 1f; +#endif + SetAnimationCurve(clip, relativePath, propertyNames, input, output, + samplerCache.Interpolation, typeof(Transform), + (data, frame) => + { + var position = data.AsVec3s[frame].ToUnityVector3Convert(); +#if UNITY_EDITOR + return new float[] { position.x * factor, position.y * factor, position.z * factor}; +#else + return new float[] { position.x, position.y, position.z }; +#endif + }); + break; + + case GLTFAnimationChannelPath.rotation: + propertyNames = new string[] { "localRotation.x", "localRotation.y", "localRotation.z", "localRotation.w" }; + + SetAnimationCurve(clip, relativePath, propertyNames, input, output, + samplerCache.Interpolation, typeof(Transform), + (data, frame) => + { + var rotation = data.AsVec4s[frame]; + var quaternion = new GLTF.Math.Quaternion(rotation.X, rotation.Y, rotation.Z, rotation.W).ToUnityQuaternionConvert(); + return new float[] { quaternion.x, quaternion.y, quaternion.z, quaternion.w }; + }); + + break; + + case GLTFAnimationChannelPath.scale: + propertyNames = new string[] { "localScale.x", "localScale.y", "localScale.z" }; + + SetAnimationCurve(clip, relativePath, propertyNames, input, output, + samplerCache.Interpolation, typeof(Transform), + (data, frame) => + { + var scale = data.AsVec3s[frame].ToUnityVector3Raw(); + return new float[] { scale.x, scale.y, scale.z }; + }); + break; + + case GLTFAnimationChannelPath.weights: + var mesh = channel.Target.Node.Value.Mesh.Value; + var primitives = mesh.Primitives; + if (primitives[0].Targets == null) break; + var targetCount = primitives[0].Targets.Count; + for (int primitiveIndex = 0; primitiveIndex < primitives.Count; primitiveIndex++) + { + // see SceneImporter:156 + // blend shapes are always called "Morphtarget" + var targetNames = mesh.TargetNames; + propertyNames = new string[targetCount]; + for (var i = 0; i < targetCount; i++) + propertyNames[i] = _options.ImportBlendShapeNames ? ("blendShape." + ((targetNames != null && targetNames.Count > i) ? targetNames[i] : ("Morphtarget" + i))) : "blendShape."+i.ToString(); + var frameFloats = new float[targetCount]; + + SetAnimationCurve(clip, relativePath, propertyNames, input, output, + samplerCache.Interpolation, typeof(SkinnedMeshRenderer), + (data, frame) => + { + var allValues = data.AsFloats; + for (var k = 0; k < targetCount; k++) + frameFloats[k] = allValues[frame * targetCount + k]; + + return frameFloats; + }); + } + break; + + default: + Debug.Log(LogType.Warning, "Cannot read GLTF animation path"); + break; + } // switch target type + } // foreach channel + + // EnsureQuaternionContinuity results in unwanted tangents on the first and last keyframes > custom Solution in SetAnimationCurve + //clip.EnsureQuaternionContinuity(); + return clip; + } + +#endif + + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterAnimation.cs.meta b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs.meta new file mode 100644 index 000000000..2e73fa9b7 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterAnimation.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 20eade7af2db4b06a0d23b23c3a83c47 +timeCreated: 1657012127 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterLODs.cs b/Runtime/Scripts/SceneImporter/ImporterLODs.cs new file mode 100644 index 000000000..3ed05dcfe --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterLODs.cs @@ -0,0 +1,96 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + private async Task ConstructLods(GLTFRoot gltfRoot, GameObject nodeObj, Node node, int nodeIndex, CancellationToken cancellationToken) + { + if (!Context.TryGetPlugin(out _)) return; + + const string msft_LODExtName = MSFT_LODExtensionFactory.EXTENSION_NAME; + MSFT_LODExtension lodsExtension = null; + if (_gltfRoot.ExtensionsUsed != null + && _gltfRoot.ExtensionsUsed.Contains(msft_LODExtName) + && node.Extensions != null + && node.Extensions.ContainsKey(msft_LODExtName)) + { + lodsExtension = node.Extensions[msft_LODExtName] as MSFT_LODExtension; + if (lodsExtension != null && lodsExtension.NodeIds.Count > 0) + { + int lodCount = lodsExtension.NodeIds.Count + 1; + if (CullFarLOD) + { + lodCount += 1; + } + LOD[] lods = new LOD[lodCount]; + List lodCoverage = lodsExtension.GetLODCoverage(node); + if (lodCoverage == null) + lodCoverage = new List(); + + var hasExplicitLodCoverage = lodCoverage.Count > 0; + if (lodCoverage.Count != lods.Length) + { + if (!hasExplicitLodCoverage) + lodCoverage.Add(0.5f); + + var count = lodCoverage.Count; + var length = lods.Length; + for (var i = count; i < length; i++) + { + lodCoverage.Add(lodCoverage[i - 1] / 2); + } + + if (!CullFarLOD && !hasExplicitLodCoverage) + lodCoverage[lodCoverage.Count - 1] = 0; + } + + // sanitize values so that they are strictly decreasing + for (int i = lodCoverage.Count - 2; i >= 0; i--) + { + if (lodCoverage[i] <= lodCoverage[i + 1]) + lodCoverage[i] = lodCoverage[i + 1] + 0.01f; + } + + var lodGroupNodeObj = nodeObj; + lodGroupNodeObj.SetActive(false); + var firstLodChildRenderers = nodeObj.GetComponentsInChildren().ToList(); + + LODGroup lodGroup = lodGroupNodeObj.AddComponent(); + for (int i = 0; i < lodsExtension.NodeIds.Count; i++) + { + int lodNodeId = lodsExtension.NodeIds[i]; + var lodNodeObj = await GetNode(lodNodeId, cancellationToken); + // progressStatus.NodeTotal++; + lodNodeObj.transform.SetParent(lodGroupNodeObj.transform, false); + var childRenderers = lodNodeObj.GetComponentsInChildren(); + int lodIndex = i + 1; + // make sure to kick out the renderers that are used in lower LOD levels from the root LOD level + foreach (var child in childRenderers) + firstLodChildRenderers.Remove(child); + lods[lodIndex] = new LOD(GetLodCoverage(lodCoverage, lodIndex), childRenderers); + } + + lods[0] = new LOD(GetLodCoverage(lodCoverage, 0), firstLodChildRenderers.ToArray()); + + if (CullFarLOD) + { + //use the last mesh as the LOD + lods[lodsExtension.NodeIds.Count + 1] = new LOD(0, null); + } + + lodGroup.SetLODs(lods); + lodGroup.RecalculateBounds(); + lodGroupNodeObj.SetActive(true); + _assetCache.NodeCache[nodeIndex] = lodGroupNodeObj; + } + } + } + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterLODs.cs.meta b/Runtime/Scripts/SceneImporter/ImporterLODs.cs.meta new file mode 100644 index 000000000..70c40d6de --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterLODs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fe34f290cdf64038ad7d60c706251109 +timeCreated: 1675772109 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterLights.cs b/Runtime/Scripts/SceneImporter/ImporterLights.cs new file mode 100644 index 000000000..875117387 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterLights.cs @@ -0,0 +1,59 @@ +using GLTF.Schema; +using GLTF.Schema.KHR_lights_punctual; +using UnityEngine; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; +using LightType = UnityEngine.LightType; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + private void ConstructLights(GameObject nodeObj, Node node) + { + var useLightsExtension = Context.TryGetPlugin(out _); + if (!useLightsExtension) return; + + // TODO this should be handled by the lights extension directly, not here + const string lightExt = KHR_lights_punctualExtensionFactory.EXTENSION_NAME; + KHR_LightsPunctualNodeExtension lightsExtension = null; + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(lightExt) && node.Extensions != null && node.Extensions.ContainsKey(lightExt)) + { + lightsExtension = node.Extensions[lightExt] as KHR_LightsPunctualNodeExtension; + var l = lightsExtension.LightId; + + var light = l.Value; + + var newLight = nodeObj.AddComponent(); + switch (light.Type) + { + case GLTF.Schema.KHR_lights_punctual.LightType.spot: + newLight.intensity = (float) light.Intensity / Mathf.PI; + newLight.type = LightType.Spot; + break; + case GLTF.Schema.KHR_lights_punctual.LightType.directional: + newLight.type = LightType.Directional; + break; + case GLTF.Schema.KHR_lights_punctual.LightType.point: + newLight.type = LightType.Point; + newLight.intensity = (float) light.Intensity * Mathf.PI; + break; + } + + newLight.name = light.Name; + newLight.color = light.Color.ToUnityColorRaw(); + newLight.range = (float) light.Range; + if (light.Spot != null) + { +#if UNITY_2019_1_OR_NEWER + newLight.innerSpotAngle = (float) light.Spot.InnerConeAngle * 2 / (Mathf.Deg2Rad * 0.8f); +#endif + newLight.spotAngle = (float) light.Spot.OuterConeAngle * 2 / Mathf.Deg2Rad; + } + + // flip? + nodeObj.transform.localRotation *= Quaternion.Euler(0, 180, 0); + } + } + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterLights.cs.meta b/Runtime/Scripts/SceneImporter/ImporterLights.cs.meta new file mode 100644 index 000000000..85ea90dff --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterLights.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7b547db626e3430c87fe1e060a131222 +timeCreated: 1657014645 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs new file mode 100644 index 000000000..35ae1eead --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs @@ -0,0 +1,939 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Cache; +using UnityGLTF.Extensions; +using UnityGLTF.Plugins; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + internal static List _runtimeNormalTextures = new List(); + + protected virtual async Task ConstructMaterial(GLTFMaterial def, int materialIndex) + { + IUniformMap mapper; + + const string specGlossExtName = KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME; + const string unlitExtName = KHR_MaterialsUnlitExtensionFactory.EXTENSION_NAME; + + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(specGlossExtName) && def.Extensions != null && def.Extensions.ContainsKey(specGlossExtName)) + { + Debug.Log(LogType.Warning, $"KHR_materials_pbrSpecularGlossiness has been deprecated, material {def.Name} may not look correct. Use `gltf-transform metalrough` or other tools to convert to PBR."); + + if (!string.IsNullOrEmpty(CustomShaderName)) + { + mapper = new SpecGlossMap(CustomShaderName, MaximumLod); + } + else + { +#if UNITY_2021_3_OR_NEWER + // This isn't fully supported. KHR_materials_pbrSpecularGlossiness is deprecated though, so we're warning here. + mapper = new PBRGraphMap(); +#else + mapper = new SpecGlossMap(MaximumLod); +#endif + } + } + else if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(unlitExtName) && def.Extensions != null && def.Extensions.ContainsKey(unlitExtName)) + { + if (!string.IsNullOrEmpty(CustomShaderName)) + { + mapper = new UnlitMap(CustomShaderName, null, MaximumLod); + } + else + { +#if UNITY_2021_3_OR_NEWER + mapper = new UnlitGraphMap(); +#elif UNITY_2019_1_OR_NEWER + if (UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline) + mapper = new UnlitGraphMap(def.AlphaMode == AlphaMode.BLEND, def.DoubleSided); + else + mapper = new UnlitMap(MaximumLod); +#else + mapper = new UnlitMap(MaximumLod); +#endif + } + } + else + { + if (!string.IsNullOrEmpty(CustomShaderName)) + { + mapper = new MetalRoughMap(CustomShaderName, MaximumLod); + } + else + { + // do we have URP or Unity 2021.2+? Use the PBR Graph Material! +#if UNITY_2021_3_OR_NEWER + mapper = new PBRGraphMap(); +#elif UNITY_2019_1_OR_NEWER + if (UnityEngine.Rendering.GraphicsSettings.currentRenderPipeline) + mapper = new PBRGraphMap(def.AlphaMode == AlphaMode.BLEND, def.DoubleSided); + else + mapper = new MetalRoughMap(MaximumLod); +#else + mapper = new MetalRoughMap(MaximumLod); +#endif + } + } + + void CalculateYOffsetAndScale(TextureId textureId, ExtTextureTransformExtension ext, out Vector2 scale, out Vector2 offset) + { + offset = ext.Offset.ToUnityVector2Raw(); + scale = ext.Scale.ToUnityVector2Raw(); + + if (IsTextureFlipped(textureId.Value)) + { + offset.y = scale.y + offset.y; + scale.y *= -1f; + } + else + { + offset.y = 1 - scale.y - offset.y; + } + } + + mapper.Material.name = def.Name; + mapper.AlphaMode = def.AlphaMode; + mapper.AlphaCutoff = def.AlphaCutoff; + mapper.DoubleSided = def.DoubleSided; + mapper.Material.SetFloat("_BUILTIN_QueueControl", -1); + mapper.Material.SetFloat("_QueueControl", -1); + +#if UNITY_EDITOR + if (Context.SourceImporter == null) +#endif + mapper.Material.SetFloat("_NormalMapFormatXYZ", 1); + + void SetTransformKeyword() + { + MatHelper.SetKeyword(mapper.Material, "_TEXTURE_TRANSFORM", true); + } + + var mrMapper = mapper as IMetalRoughUniformMap; + if (def.PbrMetallicRoughness != null && mrMapper != null) + { + var pbr = def.PbrMetallicRoughness; + + mrMapper.BaseColorFactor = pbr.BaseColorFactor.ToUnityColorRaw(); + + if (pbr.BaseColorTexture != null) + { + TextureId textureId = pbr.BaseColorTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false, false); + mrMapper.BaseColorTexture = _assetCache.TextureCache[textureId.Id].Texture; + mrMapper.BaseColorTexCoord = pbr.BaseColorTexture.TexCoord; + + var ext = GetTextureTransform(pbr.BaseColorTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + mrMapper.BaseColorXOffset = offset; + mrMapper.BaseColorXRotation = ext.Rotation; + mrMapper.BaseColorXScale = scale; + if (ext.TexCoord != null) mrMapper.BaseColorXTexCoord = ext.TexCoord.Value; + + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + mrMapper.BaseColorXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + mrMapper.MetallicFactor = pbr.MetallicFactor; + mrMapper.RoughnessFactor = pbr.RoughnessFactor; + + if (pbr.MetallicRoughnessTexture != null) + { + TextureId textureId = pbr.MetallicRoughnessTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true, false); + mrMapper.MetallicRoughnessTexture = _assetCache.TextureCache[textureId.Id].Texture; + mrMapper.MetallicRoughnessTexCoord = pbr.MetallicRoughnessTexture.TexCoord; + + var ext = GetTextureTransform(pbr.MetallicRoughnessTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + mrMapper.MetallicRoughnessXOffset = offset; + mrMapper.MetallicRoughnessXRotation = ext.Rotation; + mrMapper.MetallicRoughnessXScale = scale; + if (ext.TexCoord != null) mrMapper.MetallicRoughnessXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + mrMapper.MetallicRoughnessXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + } + // when PbrMetallicRoughness is not defined, default values MUST apply + else if (def.PbrMetallicRoughness == null && mrMapper != null) + { + mrMapper.MetallicFactor = 1; + mrMapper.RoughnessFactor = 1; + } + + // get MaterialImportPluginContext and check which options are enabled + // ReSharper disable InconsistentNaming IdentifierTypo + var settings = (Context.Plugins.FirstOrDefault(x => x is MaterialExtensionsImportContext) as MaterialExtensionsImportContext)?.settings; + var KHR_materials_ior = settings && settings.KHR_materials_ior; + var KHR_materials_transmission = settings && settings.KHR_materials_transmission; + var KHR_materials_volume = settings && settings.KHR_materials_volume; + var KHR_materials_iridescence = settings && settings.KHR_materials_iridescence; + var KHR_materials_specular = settings && settings.KHR_materials_specular; + var KHR_materials_clearcoat = settings && settings.KHR_materials_clearcoat; + var KHR_materials_pbrSpecularGlossiness = settings && settings.KHR_materials_pbrSpecularGlossiness; + var KHR_materials_emissive_strength = settings && settings.KHR_materials_emissive_strength; + // ReSharper restore InconsistentNaming + + var sgMapper = mapper as ISpecGlossUniformMap; + if (sgMapper != null && KHR_materials_pbrSpecularGlossiness) + { + var specGloss = def.Extensions[specGlossExtName] as KHR_materials_pbrSpecularGlossinessExtension; + + sgMapper.DiffuseFactor = specGloss.DiffuseFactor.ToUnityColorRaw(); + + if (specGloss.DiffuseTexture != null) + { + TextureId textureId = specGloss.DiffuseTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false, false); + sgMapper.DiffuseTexture = _assetCache.TextureCache[textureId.Id].Texture; + sgMapper.DiffuseTexCoord = specGloss.DiffuseTexture.TexCoord; + + var ext = GetTextureTransform(specGloss.DiffuseTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + sgMapper.DiffuseXOffset = offset; + sgMapper.DiffuseXRotation = ext.Rotation; + sgMapper.DiffuseXScale = scale; + if (ext.TexCoord != null) sgMapper.DiffuseXTexCoord = ext.TexCoord.Value; + MatHelper.SetKeyword(mapper.Material, "_TEXTURE_TRANSFORM", true); + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + sgMapper.DiffuseXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + sgMapper.SpecularFactor = specGloss.SpecularFactor.ToUnityVector3Raw(); + sgMapper.GlossinessFactor = specGloss.GlossinessFactor; + + if (specGloss.SpecularGlossinessTexture != null) + { + TextureId textureId = specGloss.SpecularGlossinessTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false, false); + sgMapper.SpecularGlossinessTexture = _assetCache.TextureCache[textureId.Id].Texture; + sgMapper.SpecularGlossinessTexCoord = specGloss.SpecularGlossinessTexture.TexCoord; + + var ext = GetTextureTransform(specGloss.SpecularGlossinessTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + sgMapper.SpecularGlossinessXOffset = offset; + sgMapper.SpecularGlossinessXRotation = ext.Rotation; + sgMapper.SpecularGlossinessXScale = scale; + if (ext.TexCoord != null) sgMapper.SpecularGlossinessXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + sgMapper.SpecularGlossinessXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + } + + var unlitMapper = mapper as IUnlitUniformMap; + if (unlitMapper != null) + { + var pbr = def.PbrMetallicRoughness; + unlitMapper.BaseColorFactor = pbr.BaseColorFactor.ToUnityColorRaw(); + + if (pbr.BaseColorTexture != null) + { + TextureId textureId = pbr.BaseColorTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false, false); + unlitMapper.BaseColorTexture = _assetCache.TextureCache[textureId.Id].Texture; + unlitMapper.BaseColorTexCoord = pbr.BaseColorTexture.TexCoord; + + var ext = GetTextureTransform(pbr.BaseColorTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + unlitMapper.BaseColorXOffset = offset; + unlitMapper.BaseColorXRotation = ext.Rotation; + unlitMapper.BaseColorXScale = scale; + if (ext.TexCoord != null) unlitMapper.BaseColorXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + unlitMapper.BaseColorXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + } + + var iorMapper = mapper as IIORMap; + if (iorMapper != null && KHR_materials_ior) + { + var ior = GetIOR(def); + if (ior != null) + { + iorMapper.IOR = ior.ior; + } + } + + var transmissionMapper = mapper as ITransmissionMap; + if (transmissionMapper != null && KHR_materials_transmission) + { + var transmission = GetTransmission(def); + if (transmission != null) + { + transmissionMapper.TransmissionFactor = transmission.transmissionFactor; + + if (transmission.transmissionTexture != null) + { + var td = await FromTextureInfo(transmission.transmissionTexture, false); + transmissionMapper.TransmissionTexture = td.Texture; + transmissionMapper.TransmissionTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(transmission.transmissionTexture); + if (ext != null) + { + CalculateYOffsetAndScale(transmission.transmissionTexture.Index, ext, out var scale, out var offset); + transmissionMapper.TransmissionTextureOffset = offset; + transmissionMapper.TransmissionTextureScale = scale; + transmissionMapper.TransmissionTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) transmissionMapper.TransmissionTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(transmission.transmissionTexture.Index.Value)) + { + transmissionMapper.TransmissionTextureScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + mapper.Material.renderQueue = 3000; + mapper.Material.SetKeyword("_VOLUME_TRANSMISSION", true); + mapper.Material.SetFloat("_VOLUME_TRANSMISSION_ON", 1f); + } + } + + var volumeMapper = mapper as IVolumeMap; + if (volumeMapper != null && KHR_materials_volume) + { + var volume = GetVolume(def); + if (volume != null) + { + volumeMapper.AttenuationColor = QualitySettings.activeColorSpace == ColorSpace.Linear ? volume.attenuationColor.ToUnityColorLinear() : volume.attenuationColor.ToUnityColorRaw(); + volumeMapper.AttenuationDistance = volume.attenuationDistance; + volumeMapper.ThicknessFactor = volume.thicknessFactor; + if (volume.thicknessTexture != null) + { + var td = await FromTextureInfo(volume.thicknessTexture, false); + volumeMapper.ThicknessTexture = td.Texture; + volumeMapper.ThicknessTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(volume.thicknessTexture); + if (ext != null) + { + CalculateYOffsetAndScale(volume.thicknessTexture.Index, ext, out var scale, out var offset); + volumeMapper.ThicknessTextureOffset = offset; + volumeMapper.ThicknessTextureScale = scale; + volumeMapper.ThicknessTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) volumeMapper.ThicknessTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(volume.thicknessTexture.Index.Value)) + { + volumeMapper.ThicknessTextureScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + mapper.Material.renderQueue = 3000; + mapper.Material.SetFloat("_VOLUME_ON", 1f); + } + } + + var iridescenceMapper = mapper as IIridescenceMap; + if (iridescenceMapper != null && KHR_materials_iridescence) + { + var iridescence = GetIridescence(def); + if (iridescence != null) + { + iridescenceMapper.IridescenceFactor = iridescence.iridescenceFactor; + iridescenceMapper.IridescenceIor = iridescence.iridescenceIor; + iridescenceMapper.IridescenceThicknessMinimum = iridescence.iridescenceThicknessMinimum; + iridescenceMapper.IridescenceThicknessMaximum = iridescence.iridescenceThicknessMaximum; + if (iridescence.iridescenceTexture != null) + { + var td = await FromTextureInfo(iridescence.iridescenceTexture, false); + iridescenceMapper.IridescenceTexture = td.Texture; + iridescenceMapper.IridescenceTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(iridescence.iridescenceTexture); + if (ext != null) + { + CalculateYOffsetAndScale(iridescence.iridescenceTexture.Index, ext, out var scale, out var offset); + iridescenceMapper.IridescenceTextureOffset = offset; + iridescenceMapper.IridescenceTextureScale = scale; + iridescenceMapper.IridescenceTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) iridescenceMapper.IridescenceTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(iridescence.iridescenceTexture.Index.Value)) + { + iridescenceMapper.IridescenceTextureScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + if (iridescence.iridescenceThicknessTexture != null) + { + var td2 = await FromTextureInfo(iridescence.iridescenceThicknessTexture, false); + iridescenceMapper.IridescenceThicknessTexture = td2.Texture; + iridescenceMapper.IridescenceThicknessTextureTexCoord = td2.TexCoord; + var ext2 = GetTextureTransform(iridescence.iridescenceThicknessTexture); + if (ext2 != null) + { + CalculateYOffsetAndScale(iridescence.iridescenceThicknessTexture.Index, ext2, out var scale, + out var offset); + iridescenceMapper.IridescenceThicknessTextureOffset = offset; + iridescenceMapper.IridescenceThicknessTextureScale = scale; + iridescenceMapper.IridescenceThicknessTextureRotation = td2.Rotation; + if (td2.TexCoordExtra != null) iridescenceMapper.IridescenceThicknessTextureTexCoord = td2.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(iridescence.iridescenceThicknessTexture.Index.Value)) + { + iridescenceMapper.IridescenceThicknessTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + } + + mapper.Material.SetKeyword("_IRIDESCENCE", true); + } + } + + var specularMapper = mapper as ISpecularMap; + if (specularMapper != null && KHR_materials_specular) + { + var specular = GetSpecular(def); + if (specular != null) + { + specularMapper.SpecularFactor = specular.specularFactor; + specularMapper.SpecularColorFactor = specular.specularColorFactor.ToUnityColorLinear(); + if (specular.specularTexture != null) + { + var td = await FromTextureInfo(specular.specularTexture, false); + specularMapper.SpecularTexture = td.Texture; + specularMapper.SpecularTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(specular.specularTexture); + if (ext != null) + { + CalculateYOffsetAndScale(specular.specularTexture.Index, ext, out var scale, + out var offset); + specularMapper.SpecularTextureOffset = offset; + specularMapper.SpecularTextureScale = scale; + specularMapper.SpecularTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) specularMapper.SpecularTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(specular.specularTexture.Index.Value)) + { + specularMapper.SpecularTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + } + + if (specular.specularColorTexture != null) + { + var td2 = await FromTextureInfo(specular.specularColorTexture, false); + specularMapper.SpecularColorTexture = td2.Texture; + specularMapper.SpecularColorTextureTexCoord = td2.TexCoord; + var ext2 = GetTextureTransform(specular.specularColorTexture); + if (ext2 != null) + { + CalculateYOffsetAndScale(specular.specularColorTexture.Index, ext2, out var scale, + out var offset); + specularMapper.SpecularColorTextureOffset = offset; + specularMapper.SpecularColorTextureScale = scale; + specularMapper.SpecularColorTextureRotation = td2.Rotation; + if (td2.TexCoordExtra != null) specularMapper.SpecularColorTextureTexCoord = td2.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(specular.specularColorTexture.Index.Value)) + { + specularMapper.SpecularColorTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + } + + mapper.Material.SetKeyword("_SPECULAR", true); + } + } + + var clearcoatMapper = mapper as IClearcoatMap; + if (clearcoatMapper != null && KHR_materials_clearcoat) + { + var clearcoat = GetClearcoat(def); + if (clearcoat != null) + { + clearcoatMapper.ClearcoatFactor = clearcoat.clearcoatFactor; + clearcoatMapper.ClearcoatRoughnessFactor = clearcoat.clearcoatRoughnessFactor; + if (clearcoat.clearcoatTexture != null) + { + var td = await FromTextureInfo(clearcoat.clearcoatTexture, false); + clearcoatMapper.ClearcoatTexture = td.Texture; + clearcoatMapper.ClearcoatTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(clearcoat.clearcoatTexture); + if (ext != null) + { + CalculateYOffsetAndScale(clearcoat.clearcoatTexture.Index, ext, out var scale, + out var offset); + clearcoatMapper.ClearcoatTextureOffset = offset; + clearcoatMapper.ClearcoatTextureScale = scale; + clearcoatMapper.ClearcoatTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) clearcoatMapper.ClearcoatTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(clearcoat.clearcoatTexture.Index.Value)) + { + clearcoatMapper.ClearcoatTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + } + + if (clearcoat.clearcoatRoughnessTexture != null) + { + var td = await FromTextureInfo(clearcoat.clearcoatRoughnessTexture, false); + clearcoatMapper.ClearcoatRoughnessTexture = td.Texture; + clearcoatMapper.ClearcoatRoughnessTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(clearcoat.clearcoatRoughnessTexture); + if (ext != null) + { + CalculateYOffsetAndScale(clearcoat.clearcoatRoughnessTexture.Index, ext, out var scale, + out var offset); + clearcoatMapper.ClearcoatRoughnessTextureOffset = offset; + clearcoatMapper.ClearcoatRoughnessTextureScale = scale; + clearcoatMapper.ClearcoatRoughnessTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) clearcoatMapper.ClearcoatRoughnessTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(clearcoat.clearcoatRoughnessTexture.Index.Value)) + { + clearcoatMapper.ClearcoatRoughnessTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + + } + + var clearcoatNormalMapper = mapper as IClearcoatNormalMap; + if (clearcoatNormalMapper != null) + { + if (clearcoat.clearcoatNormalTexture != null) + { + var td = await FromTextureInfo(clearcoat.clearcoatNormalTexture, false); + + _runtimeNormalTextures.Add(td.Texture); + + clearcoatNormalMapper.ClearcoatNormalTexture = td.Texture; + clearcoatNormalMapper.ClearcoatNormalTextureTexCoord = td.TexCoord; + var ext = GetTextureTransform(clearcoat.clearcoatNormalTexture); + if (ext != null) + { + CalculateYOffsetAndScale(clearcoat.clearcoatNormalTexture.Index, ext, out var scale, + out var offset); + clearcoatNormalMapper.ClearcoatNormalTextureOffset = offset; + clearcoatNormalMapper.ClearcoatNormalTextureScale = scale; + clearcoatNormalMapper.ClearcoatNormalTextureRotation = td.Rotation; + if (td.TexCoordExtra != null) + clearcoatNormalMapper.ClearcoatNormalTextureTexCoord = td.TexCoordExtra.Value; + SetTransformKeyword(); + } + else if (IsTextureFlipped(clearcoat.clearcoatNormalTexture.Index.Value)) + { + clearcoatNormalMapper.ClearcoatNormalTextureScale *= new Vector2(1f, -1f); + SetTransformKeyword(); + } + } + } + + mapper.Material.SetKeyword("_CLEARCOAT", true); + } + } + + var uniformMapper = mapper as ILitMap; + if (uniformMapper != null) + { + if (def.NormalTexture != null) + { + TextureId textureId = def.NormalTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true, true); + + uniformMapper.NormalTexture = _assetCache.TextureCache[textureId.Id].Texture; + uniformMapper.NormalTexCoord = def.NormalTexture.TexCoord; + uniformMapper.NormalTexScale = def.NormalTexture.Scale; + + _runtimeNormalTextures.Add(uniformMapper.NormalTexture); + + var ext = GetTextureTransform(def.NormalTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + uniformMapper.NormalXOffset = offset; + uniformMapper.NormalXRotation = ext.Rotation; + uniformMapper.NormalXScale = scale; + if (ext.TexCoord != null) uniformMapper.NormalXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + uniformMapper.NormalXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + if (def.EmissiveTexture != null) + { + TextureId textureId = def.EmissiveTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false, false); + uniformMapper.EmissiveTexture = _assetCache.TextureCache[textureId.Id].Texture; + uniformMapper.EmissiveTexCoord = def.EmissiveTexture.TexCoord; + + var ext = GetTextureTransform(def.EmissiveTexture); + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + uniformMapper.EmissiveXOffset = offset; + uniformMapper.EmissiveXRotation = ext.Rotation; + uniformMapper.EmissiveXScale = scale; + if (ext.TexCoord != null) uniformMapper.EmissiveXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + uniformMapper.EmissiveXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + if (def.OcclusionTexture != null) + { + uniformMapper.OcclusionTexStrength = def.OcclusionTexture.Strength; + TextureId textureId = def.OcclusionTexture.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true, false); + uniformMapper.OcclusionTexture = _assetCache.TextureCache[textureId.Id].Texture; + uniformMapper.OcclusionTexCoord = def.OcclusionTexture.TexCoord; + + var ext = GetTextureTransform(def.OcclusionTexture); + + if (ext != null) + { + CalculateYOffsetAndScale(textureId, ext, out var scale, out var offset); + uniformMapper.OcclusionXOffset = offset; + uniformMapper.OcclusionXRotation = ext.Rotation; + uniformMapper.OcclusionXScale = scale; + if (ext.TexCoord != null) uniformMapper.OcclusionXTexCoord = ext.TexCoord.Value; + SetTransformKeyword(); + } + else + if (IsTextureFlipped(textureId.Value)) + { + uniformMapper.OcclusionXScale *= new Vector2(1f,-1f); + SetTransformKeyword(); + } + } + + uniformMapper.EmissiveFactor = QualitySettings.activeColorSpace == ColorSpace.Linear ? def.EmissiveFactor.ToUnityColorLinear() : def.EmissiveFactor.ToUnityColorLinear(); + + var emissiveExt = GetEmissiveStrength(def); + if (emissiveExt != null && KHR_materials_emissive_strength) + { + uniformMapper.EmissiveFactor = uniformMapper.EmissiveFactor * emissiveExt.emissiveStrength; + } + } + var vertColorMapper = mapper.Clone(); + vertColorMapper.VertexColorsEnabled = true; + + // if (mapper is PBRGraphMap pbrGraphMap) + // { + // MaterialExtensions.ValidateMaterialKeywords(pbrGraphMap.Material); + // } + + MaterialCacheData materialWrapper = new MaterialCacheData + { + UnityMaterial = mapper.Material, + UnityMaterialWithVertexColor = vertColorMapper.Material, + GLTFMaterial = def + }; + + if (materialIndex >= 0) + { + _assetCache.MaterialCache[materialIndex] = materialWrapper; + } + else + { + _defaultLoadedMaterial = materialWrapper; + } + + foreach (var plugin in Context.Plugins) + { + plugin.OnAfterImportMaterial(def, materialIndex, mapper.Material); + } + } + + protected virtual Task ConstructMaterialImageBuffers(GLTFMaterial def) + { + var tasks = new List(8); + if (def.PbrMetallicRoughness != null) + { + var pbr = def.PbrMetallicRoughness; + + if (pbr.BaseColorTexture != null) + { + var textureId = pbr.BaseColorTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (pbr.MetallicRoughnessTexture != null) + { + var textureId = pbr.MetallicRoughnessTexture.Index; + + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.CommonConstant != null) + { + if (def.CommonConstant.LightmapTexture != null) + { + var textureId = def.CommonConstant.LightmapTexture.Index; + + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.NormalTexture != null) + { + var textureId = def.NormalTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + + if (def.OcclusionTexture != null) + { + var textureId = def.OcclusionTexture.Index; + + if (!(def.PbrMetallicRoughness != null + && def.PbrMetallicRoughness.MetallicRoughnessTexture != null + && def.PbrMetallicRoughness.MetallicRoughnessTexture.Index.Id == textureId.Id)) + { + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.EmissiveTexture != null) + { + var textureId = def.EmissiveTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + + // pbr_spec_gloss extension + const string specGlossExtName = KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME; + if (def.Extensions != null && def.Extensions.ContainsKey(specGlossExtName)) + { + var specGlossDef = (KHR_materials_pbrSpecularGlossinessExtension)def.Extensions[specGlossExtName]; + if (specGlossDef.DiffuseTexture != null) + { + var textureId = specGlossDef.DiffuseTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + + if (specGlossDef.SpecularGlossinessTexture != null) + { + var textureId = specGlossDef.SpecularGlossinessTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_transmission_Factory.EXTENSION_NAME)) + { + var transmissionDef = (KHR_materials_transmission)def.Extensions[KHR_materials_transmission_Factory.EXTENSION_NAME]; + if (transmissionDef.transmissionTexture != null) + { + var textureId = transmissionDef.transmissionTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_volume_Factory.EXTENSION_NAME)) + { + var transmissionDef = (KHR_materials_volume)def.Extensions[KHR_materials_volume_Factory.EXTENSION_NAME]; + if (transmissionDef.thicknessTexture != null) + { + var textureId = transmissionDef.thicknessTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_iridescence_Factory.EXTENSION_NAME)) + { + var iridescenceDef = (KHR_materials_iridescence) def.Extensions[KHR_materials_iridescence_Factory.EXTENSION_NAME]; + if (iridescenceDef.iridescenceTexture != null) + { + var textureId = iridescenceDef.iridescenceTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (iridescenceDef.iridescenceThicknessTexture != null) + { + var textureId = iridescenceDef.iridescenceThicknessTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_specular_Factory.EXTENSION_NAME)) + { + var specularDef = (KHR_materials_specular) def.Extensions[KHR_materials_specular_Factory.EXTENSION_NAME]; + if (specularDef.specularTexture != null) + { + var textureId = specularDef.specularTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (specularDef.specularColorTexture != null) + { + var textureId = specularDef.specularColorTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + + if (def.Extensions != null && def.Extensions.ContainsKey(KHR_materials_clearcoat_Factory.EXTENSION_NAME)) + { + var clearCoatDef = (KHR_materials_clearcoat) def.Extensions[KHR_materials_clearcoat_Factory.EXTENSION_NAME]; + if (clearCoatDef.clearcoatTexture != null) + { + var textureId = clearCoatDef.clearcoatTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (clearCoatDef.clearcoatNormalTexture != null) + { + var textureId = clearCoatDef.clearcoatNormalTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + if (clearCoatDef.clearcoatRoughnessTexture != null) + { + var textureId = clearCoatDef.clearcoatRoughnessTexture.Index; + tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); + } + } + + return Task.WhenAll(tasks); + } + + protected virtual ExtTextureTransformExtension GetTextureTransform(TextureInfo def) + { + IExtension extension; + if (_gltfRoot.ExtensionsUsed != null && + _gltfRoot.ExtensionsUsed.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME) && + def.Extensions != null && + def.Extensions.TryGetValue(ExtTextureTransformExtensionFactory.EXTENSION_NAME, out extension)) + { + return (ExtTextureTransformExtension)extension; + } + return null; + } + + protected virtual KHR_materials_emissive_strength GetEmissiveStrength(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_emissive_strength_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_emissive_strength_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_emissive_strength) extension; + } + return null; + } + + protected virtual KHR_materials_transmission GetTransmission(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_transmission_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_transmission_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_transmission) extension; + } + return null; + } + + protected virtual KHR_materials_volume GetVolume(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_volume_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_volume_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_volume) extension; + } + return null; + } + + protected virtual KHR_materials_ior GetIOR(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_ior_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_ior_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_ior) extension; + } + return null; + } + + protected virtual KHR_materials_iridescence GetIridescence(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_iridescence_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_iridescence_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_iridescence) extension; + } + return null; + } + + protected virtual KHR_materials_specular GetSpecular(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_specular_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_specular_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_specular) extension; + } + return null; + } + + protected virtual KHR_materials_clearcoat GetClearcoat(GLTFMaterial def) + { + if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(KHR_materials_clearcoat_Factory.EXTENSION_NAME) && + def.Extensions != null && def.Extensions.TryGetValue(KHR_materials_clearcoat_Factory.EXTENSION_NAME, out var extension)) + { + return (KHR_materials_clearcoat) extension; + } + return null; + } + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterMaterials.cs.meta b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs.meta new file mode 100644 index 000000000..d95c00b88 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterMaterials.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 25e2614154434641a15540a7203e47f6 +timeCreated: 1657012132 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs new file mode 100644 index 000000000..2679e293b --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs @@ -0,0 +1,998 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using GLTF; +using GLTF.Schema; +using Unity.Collections; +using Unity.Jobs; +using UnityEngine; +using UnityEngine.Rendering; +using UnityGLTF.Cache; +using UnityGLTF.Extensions; +#if HAVE_DRACO +using Draco; +using UnityGLTF.Plugins; +#if !HAVE_DRACO_VERSION_5 +using DecodeResult = Draco.DracoMeshLoader.DecodeResult; +#endif +#endif + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + private async Task CreateMaterials(MeshPrimitive primitive) + { + bool shouldUseDefaultMaterial = primitive.Material == null; + GLTFMaterial materialToLoad = shouldUseDefaultMaterial ? DefaultMaterial : primitive.Material.Value; + if ((shouldUseDefaultMaterial && _defaultLoadedMaterial == null) || + (!shouldUseDefaultMaterial && _assetCache.MaterialCache[primitive.Material.Id] == null)) + { + await ConstructMaterial(materialToLoad, shouldUseDefaultMaterial ? -1 : primitive.Material.Id); + } + } + + /// + /// Triggers loading, converting, and constructing of a UnityEngine.Mesh, and stores it in the asset cache + /// + /// The definition of the mesh to generate + /// The index of the mesh to generate + /// + /// A task that completes when the mesh is attached to the given GameObject + protected virtual async Task ConstructMesh(GLTFMesh mesh, int meshIndex, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + if (_assetCache.MeshCache[meshIndex] == null) + { + throw new Exception("Cannot generate mesh before ConstructMeshAttributes is called!"); + } + else if (_assetCache.MeshCache[meshIndex].LoadedMesh) + { + return; + } + + var anyHadDraco = mesh.Primitives.Any(p => p.Extensions != null && p.Extensions.ContainsKey(KHR_draco_mesh_compression_Factory.EXTENSION_NAME)); +#if HAVE_DRACO + if (anyHadDraco) + { + if (Context.TryGetPlugin(out _)) + { + await ConstructDracoMesh(mesh, meshIndex, cancellationToken); + return; + } + else + { + throw new NotSupportedException("Can't import model because it uses the KHR_draco_mesh_compression extension. Add the package \"com.unity.cloud.draco\" to your project to import this file."); + } + } +#else + if (anyHadDraco) + { + throw new NotSupportedException("Can't import model because it uses the KHR_draco_mesh_compression extension. Add the package \"com.unity.cloud.draco\" to your project to import this file."); + } +#endif + + var firstPrim = mesh.Primitives.Count > 0 ? mesh.Primitives[0] : null; + cancellationToken.ThrowIfCancellationRequested(); + + Dictionary accessorIds = new Dictionary(); + uint vOffset = 0; + int primIndex = 0; + uint[] vertOffsetBySubMesh = new uint[mesh.Primitives.Count]; + uint totalVertCount = 0; + uint lastVertOffset = 0; + foreach (var p in mesh.Primitives) + { + + var acc = p.Attributes[SemanticProperties.POSITION]; + if (!accessorIds.ContainsKey(acc.Id)) + { + accessorIds.Add(acc.Id, acc); + totalVertCount += acc.Value.Count; + vOffset = lastVertOffset; + lastVertOffset += acc.Value.Count; + } + vertOffsetBySubMesh[primIndex] = vOffset; + + primIndex++; + } + + var meshCache = _assetCache.MeshCache[meshIndex]; + + var unityData = CreateUnityMeshData(mesh, firstPrim, totalVertCount); + unityData.subMeshVertexOffset = vertOffsetBySubMesh; + + for (int i = 0; i < mesh.Primitives.Count; ++i) + { + var primitive = mesh.Primitives[i]; + var primCache = meshCache.Primitives[i]; + unityData.Topology[i] = GetTopology(primitive.Mode); + + if (IsMultithreaded) + { + await Task.Run(() => ConvertAttributeAccessorsToUnityTypes(primCache, unityData, unityData.subMeshVertexOffset[i], i)); + } + else + { + ConvertAttributeAccessorsToUnityTypes(primCache, unityData, unityData.subMeshVertexOffset[i], i); + } + + await CreateMaterials(primitive); + + cancellationToken.ThrowIfCancellationRequested(); + + if (unityData.Topology[i] == MeshTopology.Triangles && primitive.Indices != null && primitive.Indices.Value != null) + { + Statistics.TriangleCount += primitive.Indices.Value.Count / 3; + } + } + + Statistics.VertexCount += unityData.Vertices.Length; + await ConstructUnityMesh(unityData, meshIndex, mesh.Name); + } + +#if HAVE_DRACO + protected virtual async Task ConstructDracoMesh(GLTFMesh mesh, int meshIndex, CancellationToken cancellationToken) + { + var firstPrim = mesh.Primitives.Count > 0 ? mesh.Primitives[0] : null; + Mesh.MeshDataArray meshDataArray = Mesh.AllocateWritableMeshData(mesh.Primitives.Count); + var dracoDecodeResults = new DecodeResult[mesh.Primitives.Count]; + for (int i = 0; i < mesh.Primitives.Count; i++) + { + var primitive = mesh.Primitives[i]; + if (primitive.Extensions == null || !primitive.Extensions.ContainsKey("KHR_draco_mesh_compression")) + continue; + + + if (primitive.Extensions.TryGetValue("KHR_draco_mesh_compression", out var extension)) + { + var dracoExtension = (KHR_draco_mesh_compression)extension; + if (_assetCache.BufferCache[dracoExtension.bufferView.Value.Buffer.Id] == null) + await ConstructBuffer(dracoExtension.bufferView.Value.Buffer.Value, + dracoExtension.bufferView.Value.Buffer.Id); + + BufferCacheData bufferContents = + _assetCache.BufferCache[dracoExtension.bufferView.Value.Buffer.Id]; + + GLTFHelpers.LoadBufferView(dracoExtension.bufferView.Value, bufferContents.ChunkOffset, + bufferContents.Stream, out byte[] bufferViewData); + + int weightsAttributeId = -1; + if (dracoExtension.attributes.TryGetValue("WEIGHTS_0", out var attribute)) + weightsAttributeId = (int)attribute; + + int jointsAttributeId = -1; + if (dracoExtension.attributes.TryGetValue("JOINTS_0", out var extensionAttribute)) + jointsAttributeId = (int)extensionAttribute; + + // TODO: check if normals and tangents are needed +#pragma warning disable 0219 + bool hasTangents = dracoExtension.attributes.ContainsKey(SemanticProperties.TANGENT); + + bool needsTangents = _options.ImportTangents != GLTFImporterNormals.None && hasTangents; + bool needsNormals = _options.ImportNormals != GLTFImporterNormals.None || needsTangents; +#pragma warning restore 0219 + +#if HAVE_DRACO_VERSION_5 + DecodeSettings decodeSettings = DecodeSettings.ConvertSpace; + if (needsNormals) + decodeSettings |= DecodeSettings.RequireNormals; + if (needsTangents) + decodeSettings |= DecodeSettings.RequireTangents; + if (firstPrim != null && firstPrim.Targets != null) + decodeSettings |= DecodeSettings.ForceUnityVertexLayout; + + dracoDecodeResults[i] = await DracoDecoder.DecodeMesh(meshDataArray[i], bufferViewData, decodeSettings, DracoDecoder.CreateAttributeIdMap(weightsAttributeId, jointsAttributeId)); + +#else + var draco = new DracoMeshLoader(); + + dracoDecodeResults[i] = await draco.ConvertDracoMeshToUnity(meshDataArray[i], bufferViewData, + needsNormals, needsTangents, + weightsAttributeId, jointsAttributeId, firstPrim.Targets != null); +#endif + if (!dracoDecodeResults[i].success) + { + Debug.LogError("Error decoding draco mesh", this); + meshDataArray.Dispose(); + return; + } + + Statistics.VertexCount += meshDataArray[i].vertexCount; + + await CreateMaterials(primitive); + } + } + + // Combine sub meshes + await ConstructUnityMesh(mesh, dracoDecodeResults, meshDataArray, meshIndex, mesh.Name); + } +#endif + +#if HAVE_MESHOPT_DECOMPRESS + private async Task MeshOptDecodeBuffer(GLTFRoot root) + { + if (root.BufferViews == null) + return; + + int bufferViewIndex = 0; + var jobHandlesList = new List(root.BufferViews.Count); + var meshOptBufferViews = new Dictionary>(); + var meshOptReturnValues = new NativeArray( root.BufferViews.Count, Allocator.TempJob); + var meshOptInputBuffers = new List>(); + + foreach (var bView in root.BufferViews) + { + if (bView.Extensions != null && bView.Extensions.ContainsKey(EXT_meshopt_compression_Factory.EXTENSION_NAME)) + { + var meshOpt = bView.Extensions[EXT_meshopt_compression_Factory.EXTENSION_NAME] as EXT_meshopt_compression; + + var arr = new NativeArray((int)(meshOpt.count * meshOpt.bufferView.ByteStride), Allocator.TempJob); + + if (_assetCache.BufferCache[meshOpt.bufferView.Buffer.Id] == null) + await ConstructBuffer(meshOpt.bufferView.Buffer.Value, meshOpt.bufferView.Buffer.Id); + + BufferCacheData bufferContents = _assetCache.BufferCache[ meshOpt.bufferView.Buffer.Id]; + + GLTFHelpers.LoadBufferView(meshOpt.bufferView, bufferContents.ChunkOffset, bufferContents.Stream, out byte[] bufferViewData); + var origBufferView = new NativeArray(bufferViewData, Allocator.TempJob ); + meshOptInputBuffers.Add(origBufferView); + + var jobHandle = Meshoptimizer.Decode.DecodeGltfBuffer( + new NativeSlice(meshOptReturnValues,bufferViewIndex,1), + arr, + meshOpt.count, + (int)meshOpt.bufferView.ByteStride, + origBufferView, + meshOpt.mode, + meshOpt.filter + ); + + jobHandlesList.Add(jobHandle); + meshOptBufferViews[bufferViewIndex] = arr; + } + + bufferViewIndex++; + } + + if (jobHandlesList.Count > 0) + { + JobHandle meshoptJobHandle; + using (var jobHandles = new NativeArray(jobHandlesList.ToArray(), Allocator.TempJob)) + { + meshoptJobHandle = JobHandle.CombineDependencies(jobHandles); + } + while (!meshoptJobHandle.IsCompleted) + { + await Task.Yield(); + } + meshoptJobHandle.Complete(); + } + + foreach (var m in meshOptBufferViews) + { + var bufferView = root.BufferViews[m.Key]; + var bufferData = await GetBufferData(bufferView.Buffer); + bufferData.Stream.Seek(bufferView.ByteOffset, System.IO.SeekOrigin.Begin); + var bufferContent = m.Value.ToArray(); + bufferData.Stream.Write(bufferContent, 0, bufferContent.Length); + m.Value.Dispose(); + } + + foreach (var m in meshOptInputBuffers) + { + m.Dispose(); + } + + meshOptReturnValues.Dispose(); + } +#endif + + + protected void ApplyImportOptionsOnMesh(Mesh mesh) + { + if (_options.ImportNormals == GLTFImporterNormals.None) + mesh.normals = new Vector3[0]; + else if (_options.ImportNormals == GLTFImporterNormals.Calculate && mesh.GetTopology(0) == MeshTopology.Triangles) + mesh.RecalculateNormals(); + else if (_options.ImportNormals == GLTFImporterNormals.Import && mesh.normals.Length == 0 && mesh.GetTopology(0) == MeshTopology.Triangles) + mesh.RecalculateNormals(); + else if (_options.ImportTangents != GLTFImporterNormals.None && mesh.normals.Length == 0) + mesh.RecalculateNormals(); + + if (_options.ImportTangents == GLTFImporterNormals.None) + mesh.tangents = new Vector4[0]; + else if (_options.ImportTangents == GLTFImporterNormals.Calculate && mesh.GetTopology(0) == MeshTopology.Triangles) + mesh.RecalculateTangents(); + else if (_options.ImportTangents == GLTFImporterNormals.Import && mesh.tangents.Length == 0 && mesh.GetTopology(0) == MeshTopology.Triangles) + mesh.RecalculateTangents(); + + if (_options.SwapUVs) + { + var uv = mesh.uv; + var uv2 = mesh.uv2; + mesh.uv = uv2; + if(uv.Length > 0) + mesh.uv2 = uv; + } + + } + +#if HAVE_DRACO + /// + /// Populate a UnityEngine.Mesh from Draco generated SubMeshes + /// + /// + protected async Task ConstructUnityMesh(GLTFMesh gltfMesh, DecodeResult[] decodeResults, Mesh.MeshDataArray meshes, int meshIndex, string meshName) + { + uint verticesLength = 0; + for (int i = 0; i < meshes.Length; i++) + verticesLength+= (uint)meshes[i].vertexCount; + + Mesh mesh = new Mesh + { + name = meshName, +#if UNITY_2017_3_OR_NEWER + indexFormat = verticesLength > 65535 ? IndexFormat.UInt32 : IndexFormat.UInt16, +#endif + }; + + Mesh[] subMeshes = new Mesh[meshes.Length]; + for (int i = 0; i < subMeshes.Length; i++) + subMeshes[i] = new Mesh(); + + Mesh.ApplyAndDisposeWritableMeshData(meshes, subMeshes); + + CombineInstance[] combineInstances = new CombineInstance[subMeshes.Length]; + for (int i = 0; i < combineInstances.Length; i++) + { + combineInstances[i] = new CombineInstance(); + combineInstances[i].mesh = subMeshes[i]; + } + + int boneWeightCount = 0; + int bonesPerVertexCount = 0; + for (int i = 0; i < subMeshes.Length; i++) + { + if (decodeResults[i].boneWeightData == null) continue; + decodeResults[i].boneWeightData.ApplyOnMesh(subMeshes[i]); + decodeResults[i].boneWeightData.Dispose(); + + boneWeightCount += subMeshes[i].GetAllBoneWeights().Length; + bonesPerVertexCount += subMeshes[i].GetBonesPerVertex().Length; + } + + // Custom combine all boneweights and bonePerVertex of sub meshes and apply to final combined mesh + // >> Bug(?) in CombineMeshes that does not proper copy bone weights and bones per vertex + NativeArray allBoneWeights = new NativeArray(boneWeightCount, Allocator.TempJob); + NativeArray allBonesPerVertex = new NativeArray(bonesPerVertexCount, Allocator.TempJob); + int currentArrayPositionBoneWeights = 0; + int currentArrayPositionBpV = 0; + for (int i = 0; i < subMeshes.Length; i++) + { + var subMeshBoneWeights = subMeshes[i].GetAllBoneWeights(); + var subMeshBonesPerVertex = subMeshes[i].GetBonesPerVertex(); + + NativeArray.Copy(subMeshBoneWeights, 0, allBoneWeights, currentArrayPositionBoneWeights, subMeshBoneWeights.Length); + NativeArray.Copy(subMeshBonesPerVertex, 0, allBonesPerVertex, currentArrayPositionBpV, subMeshBonesPerVertex.Length); + + currentArrayPositionBoneWeights += subMeshBoneWeights.Length; + currentArrayPositionBpV += subMeshBonesPerVertex.Length; + } + + mesh.CombineMeshes(combineInstances, false, false); + + mesh.SetBoneWeights(allBonesPerVertex, allBoneWeights); + allBoneWeights.Dispose(); + allBonesPerVertex.Dispose(); + + foreach (var m in subMeshes) + { +#if UNITY_EDITOR + UnityEngine.Object.DestroyImmediate(m); +#else + UnityEngine.Object.Destroy(m); +#endif + } + + await YieldOnTimeoutAndThrowOnLowMemory(); + + verticesLength = (uint) mesh.vertexCount; + + var firstPrim = gltfMesh.Primitives[0]; + var unityMeshData = CreateUnityMeshData(gltfMesh, firstPrim, verticesLength,true); + + uint vertOffset = 0; + var meshCache = _assetCache.MeshCache[meshIndex]; + + unityMeshData.BoneWeights = mesh.boneWeights; + + for (int i = 0; i < gltfMesh.Primitives.Count; i++) + { + var primCache = meshCache.Primitives[i]; + if (IsMultithreaded) + { + await Task.Run(() => ConvertAttributeAccessorsToUnityTypes(primCache, unityMeshData, vertOffset, i)); + } + else + { + ConvertAttributeAccessorsToUnityTypes(primCache, unityMeshData, vertOffset, i); + } + vertOffset += (uint)mesh.GetSubMesh(i).vertexCount; + } + + mesh.RecalculateBounds(); + await YieldOnTimeoutAndThrowOnLowMemory(); + + AddBlendShapesToMesh(unityMeshData, meshIndex, mesh); + await YieldOnTimeoutAndThrowOnLowMemory(); + + ApplyImportOptionsOnMesh(mesh); + + if (!KeepCPUCopyOfMesh) + { + mesh.UploadMeshData(true); + } + + _assetCache.MeshCache[meshIndex].LoadedMesh = mesh; + } + +#endif + + private static UnityMeshData CreateUnityMeshData(GLTFMesh gltfMesh, MeshPrimitive firstPrim, uint verticesLength, bool onlyMorphTargets = false) + { + UnityMeshData unityMeshData = new UnityMeshData() + { + MorphTargetVertices = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.POSITION) + ? Allocate2dArray((uint)firstPrim.Targets.Count, verticesLength) + : null, + MorphTargetNormals = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.NORMAL) + ? Allocate2dArray((uint)firstPrim.Targets.Count, verticesLength) + : null, + MorphTargetTangents = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.TANGENT) + ? Allocate2dArray((uint)firstPrim.Targets.Count, verticesLength) + : null, + + Topology = new MeshTopology[gltfMesh.Primitives.Count], + Indices = new int[gltfMesh.Primitives.Count][], + subMeshVertexOffset = new uint[gltfMesh.Primitives.Count] + }; + if (!onlyMorphTargets) + { + unityMeshData.Vertices = new Vector3[verticesLength]; + unityMeshData.Normals = firstPrim.Attributes.ContainsKey(SemanticProperties.NORMAL) + ? new Vector3[verticesLength] + : null; + unityMeshData.Tangents = firstPrim.Attributes.ContainsKey(SemanticProperties.TANGENT) + ? new Vector4[verticesLength] + : null; + unityMeshData.Uv1 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_0) + ? new Vector2[verticesLength] + : null; + unityMeshData.Uv2 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_1) + ? new Vector2[verticesLength] + : null; + unityMeshData.Uv3 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_2) + ? new Vector2[verticesLength] + : null; + unityMeshData.Uv4 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_3) + ? new Vector2[verticesLength] + : null; + unityMeshData.Colors = firstPrim.Attributes.ContainsKey(SemanticProperties.COLOR_0) + ? new Color[verticesLength] + : null; + unityMeshData.BoneWeights = firstPrim.Attributes.ContainsKey(SemanticProperties.WEIGHTS_0) + ? new BoneWeight[verticesLength] + : null; + } + + return unityMeshData; + } + + /// + /// Populate a UnityEngine.Mesh from preloaded and preprocessed buffer data + /// + /// + /// + /// + /// + protected async Task ConstructUnityMesh(UnityMeshData unityMeshData, int meshIndex, string meshName) + { + await YieldOnTimeoutAndThrowOnLowMemory(); + Mesh mesh = new Mesh + { + name = meshName, +#if UNITY_2017_3_OR_NEWER + indexFormat = unityMeshData.Vertices.Length > 65535 ? IndexFormat.UInt32 : IndexFormat.UInt16, +#endif + }; + + mesh.vertices = unityMeshData.Vertices; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.normals = unityMeshData.Normals; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.tangents = unityMeshData.Tangents; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.uv = unityMeshData.Uv1; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.uv2 = unityMeshData.Uv2; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.uv3 = unityMeshData.Uv3; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.uv4 = unityMeshData.Uv4; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.colors = unityMeshData.Colors; + await YieldOnTimeoutAndThrowOnLowMemory(); + mesh.boneWeights = unityMeshData.BoneWeights; + await YieldOnTimeoutAndThrowOnLowMemory(); + + mesh.subMeshCount = unityMeshData.Indices.Length; + for (int i = 0; i < unityMeshData.Indices.Length; i++) + { + mesh.SetIndices(unityMeshData.Indices[i], unityMeshData.Topology[i], i, false, + (int)unityMeshData.subMeshVertexOffset[i]); + } + mesh.RecalculateBounds(); + await YieldOnTimeoutAndThrowOnLowMemory(); + + AddBlendShapesToMesh(unityMeshData, meshIndex, mesh); + await YieldOnTimeoutAndThrowOnLowMemory(); + + ApplyImportOptionsOnMesh(mesh); + + if (!KeepCPUCopyOfMesh) + { + mesh.UploadMeshData(true); + } + + _assetCache.MeshCache[meshIndex].LoadedMesh = mesh; + } + + private void AddBlendShapesToMesh(UnityMeshData unityMeshData, int meshIndex, Mesh mesh) + { + if (unityMeshData.MorphTargetVertices != null) + { + var gltfMesh = _gltfRoot.Meshes[meshIndex]; + var firstPrim = gltfMesh.Primitives[0]; + // TODO theoretically there could be multiple prims and only one of them has morph targets + for (int i = 0; i < firstPrim.Targets.Count; i++) + { + var targetName = _options.ImportBlendShapeNames ? ((gltfMesh.TargetNames != null && gltfMesh.TargetNames.Count > i) ? gltfMesh.TargetNames[i] : $"Morphtarget{i}") : i.ToString(); + mesh.AddBlendShapeFrame(targetName, 1f, + unityMeshData.MorphTargetVertices[i], + unityMeshData.MorphTargetNormals != null ? unityMeshData.MorphTargetNormals[i] : null, + unityMeshData.MorphTargetTangents != null ? unityMeshData.MorphTargetTangents[i] : null + ); + } + } + } + + protected virtual async Task ConstructMeshTargets(MeshPrimitive primitive, int meshIndex, int primitiveIndex) + { + var newTargets = new List>(primitive.Targets.Count); + _assetCache.MeshCache[meshIndex].Primitives[primitiveIndex].Targets = newTargets; + + for (int i = 0; i < primitive.Targets.Count; i++) + { + var target = primitive.Targets[i]; + newTargets.Add(new Dictionary()); + + NumericArray[] sparseNormals = null; + NumericArray[] sparsePositions = null; + NumericArray[] sparseTangents = null; + + const string NormalKey = "NORMAL"; + const string PositionKey = "POSITION"; + const string TangentKey = "TANGENT"; + + // normals, positions, tangents + foreach (var targetAttribute in target) + { + BufferId bufferIdPair = null; + if (targetAttribute.Value.Value.Sparse == null) + { + bufferIdPair = targetAttribute.Value.Value.BufferView.Value.Buffer; + } + else + { + // When using Draco, it's possible the BufferView is null + if (primitive.Attributes[targetAttribute.Key].Value.BufferView == null) + { + continue; + } + bufferIdPair = primitive.Attributes[targetAttribute.Key].Value.BufferView.Value.Buffer; + targetAttribute.Value.Value.BufferView = primitive.Attributes[targetAttribute.Key].Value.BufferView; + } + GLTFBuffer buffer = bufferIdPair.Value; + int bufferID = bufferIdPair.Id; + + if (_assetCache.BufferCache[bufferID] == null) + { + await ConstructBuffer(buffer, bufferID); + } + + newTargets[i][targetAttribute.Key] = new AttributeAccessor + { + AccessorId = targetAttribute.Value, + Stream = _assetCache.BufferCache[bufferID].Stream, + Offset = (uint)_assetCache.BufferCache[bufferID].ChunkOffset + }; + + // if this buffer isn't sparse, we're done here + if (targetAttribute.Value.Value.Sparse == null) continue; + + // Values + var bufferId = targetAttribute.Value.Value.Sparse.Values.BufferView.Value.Buffer; + var bufferData = await GetBufferData(bufferId); + AttributeAccessor sparseValues = new AttributeAccessor + { + AccessorId = targetAttribute.Value, + Stream = bufferData.Stream, + Offset = (uint)bufferData.ChunkOffset + }; + GLTFHelpers.LoadBufferView(sparseValues.AccessorId.Value.Sparse.Values.BufferView.Value, sparseValues.Offset, sparseValues.Stream, out byte[] bufferViewCache1); + + // Indices + bufferId = targetAttribute.Value.Value.Sparse.Indices.BufferView.Value.Buffer; + bufferData = await GetBufferData(bufferId); + AttributeAccessor sparseIndices = new AttributeAccessor + { + AccessorId = targetAttribute.Value, + Stream = bufferData.Stream, + Offset = (uint)bufferData.ChunkOffset + }; + GLTFHelpers.LoadBufferView(sparseIndices.AccessorId.Value.Sparse.Indices.BufferView.Value, sparseIndices.Offset, sparseIndices.Stream, out byte[] bufferViewCache2); + + switch (targetAttribute.Key) + { + case NormalKey: + sparseNormals = new NumericArray[2]; + Accessor.AsSparseVector3Array(targetAttribute.Value.Value, ref sparseNormals[0], bufferViewCache1); + Accessor.AsSparseUIntArray(targetAttribute.Value.Value, ref sparseNormals[1], bufferViewCache2); + break; + case PositionKey: + sparsePositions = new NumericArray[2]; + Accessor.AsSparseVector3Array(targetAttribute.Value.Value, ref sparsePositions[0], bufferViewCache1); + Accessor.AsSparseUIntArray(targetAttribute.Value.Value, ref sparsePositions[1], bufferViewCache2); + break; + case TangentKey: + sparseTangents = new NumericArray[2]; + Accessor.AsSparseVector3Array(targetAttribute.Value.Value, ref sparseTangents[0], bufferViewCache1); + Accessor.AsSparseUIntArray(targetAttribute.Value.Value, ref sparseTangents[1], bufferViewCache2); + break; + } + } + + var att = newTargets[i]; + GLTFHelpers.BuildTargetAttributes(ref att); + + if (sparseNormals != null) + { + var current = att[NormalKey].AccessorContent; + NumericArray before = new NumericArray(); + before.AsVec3s = new GLTF.Math.Vector3[current.AsVec3s.Length]; + for (int j = 0; j < sparseNormals[1].AsUInts.Length; j++) + { + before.AsVec3s[sparseNormals[1].AsUInts[j]] = sparseNormals[0].AsVec3s[j]; + } + att[NormalKey].AccessorContent = before; + } + + if (sparsePositions != null) + { + var current = att[PositionKey].AccessorContent; + NumericArray before = new NumericArray(); + before.AsVec3s = new GLTF.Math.Vector3[current.AsVec3s.Length]; + for (int j = 0; j < sparsePositions[1].AsUInts.Length; j++) + { + before.AsVec3s[sparsePositions[1].AsUInts[j]] = sparsePositions[0].AsVec3s[j]; + } + att[PositionKey].AccessorContent = before; + } + + if (sparseTangents != null) + { + var current = att[TangentKey].AccessorContent; + NumericArray before = new NumericArray(); + before.AsVec3s = new GLTF.Math.Vector3[current.AsVec3s.Length]; + for (int j = 0; j < sparseTangents[1].AsUInts.Length; j++) + { + before.AsVec3s[sparseTangents[1].AsUInts[j]] = sparseTangents[0].AsVec3s[j]; + } + att[TangentKey].AccessorContent = before; + } + + TransformTargets(ref att); + } + } + + private async Task ConstructMeshAttributes(GLTFMesh mesh, MeshId meshId) + { + int meshIndex = meshId.Id; + + if (_assetCache.MeshCache[meshIndex] == null) + _assetCache.MeshCache[meshIndex] = new MeshCacheData(); + else if (_assetCache.MeshCache[meshIndex].Primitives.Count > 0) + return; + + for (int i = 0; i < mesh.Primitives.Count; ++i) + { + MeshPrimitive primitive = mesh.Primitives[i]; + + await ConstructPrimitiveAttributes(primitive, meshIndex, i); + + if (primitive.Material != null) + { + await ConstructMaterialImageBuffers(primitive.Material.Value); + } + + if (primitive.Targets != null) + { + // read mesh primitive targets into assetcache + await ConstructMeshTargets(primitive, meshIndex, i); + } + } + } + + protected virtual async Task ConstructPrimitiveAttributes(MeshPrimitive primitive, int meshIndex, int primitiveIndex) + { + var primData = new MeshCacheData.PrimitiveCacheData(); + _assetCache.MeshCache[meshIndex].Primitives.Add(primData); + + var attributeAccessors = primData.Attributes; + var sparseAccessors = new Dictionary(); + foreach (var attributePair in primitive.Attributes) + { + if (attributePair.Value.Value.BufferView == null) // When Draco Compression is used, the bufferView is null + continue; + + var bufferId = attributePair.Value.Value.BufferView.Value.Buffer; + var bufferData = await GetBufferData(bufferId); + + attributeAccessors[attributePair.Key] = new AttributeAccessor + { + AccessorId = attributePair.Value, + Stream = bufferData.Stream, + Offset = (uint)bufferData.ChunkOffset + }; + + var sparse = attributePair.Value.Value.Sparse; + if (sparse != null) + { + var sparseBufferId = sparse.Values.BufferView.Value.Buffer; + var sparseBufferData = await GetBufferData(sparseBufferId); + AttributeAccessor sparseValues = new AttributeAccessor + { + AccessorId = attributePair.Value, + Stream = sparseBufferData.Stream, + Offset = (uint)sparseBufferData.ChunkOffset + }; + + var sparseIndicesBufferId = sparse.Indices.BufferView.Value.Buffer; + var sparseIndicesBufferData = await GetBufferData(sparseIndicesBufferId); + AttributeAccessor sparseIndices = new AttributeAccessor + { + AccessorId = attributePair.Value, + Stream = sparseIndicesBufferData.Stream, + Offset = (uint)sparseIndicesBufferData.ChunkOffset + }; + + sparseAccessors[attributePair.Key] = (sparseIndices, sparseValues); + } + } + + if (primitive.Indices != null && primitive.Indices.Value.BufferView != null) + { + var bufferId = primitive.Indices.Value.BufferView.Value.Buffer; + var bufferData = await GetBufferData(bufferId); + + attributeAccessors[SemanticProperties.INDICES] = new AttributeAccessor + { + AccessorId = primitive.Indices, + Stream = bufferData.Stream, + Offset = (uint)bufferData.ChunkOffset + }; + } + try + { + GLTFHelpers.BuildMeshAttributes(ref attributeAccessors, ref sparseAccessors); + } + catch (GLTFLoadException e) + { + Debug.Log(LogType.Warning, e.ToString()); + } + TransformAttributes(ref attributeAccessors); + } + + protected void ConvertAttributeAccessorsToUnityTypes( + MeshCacheData.PrimitiveCacheData primData, + UnityMeshData unityData, + uint vertOffset, + int indexOffset) + { + + // todo optimize: There are multiple copies being performed to turn the buffer data into mesh data. Look into reducing them + var meshAttributes = primData.Attributes; + uint vertexCount = 0; + if (meshAttributes.TryGetValue(SemanticProperties.POSITION, out var attribute)) + { + vertexCount = attribute.AccessorId.Value.Count; + } + + int[] indices; + + if (meshAttributes.TryGetValue(SemanticProperties.INDICES, out var indicesAccessor)) + { + indices = indicesAccessor.AccessorContent.AsUInts.ToIntArrayRaw(); + if (unityData.Topology[indexOffset] == MeshTopology.Triangles) + SchemaExtensions.FlipTriangleFaces(indices); + } + else + { + indices = MeshPrimitive.GenerateTriangles((int)vertexCount); + } + + unityData.Indices[indexOffset] = indices; + + // Only add weight/joint data when it's not already added to the unity mesh data ! + if (meshAttributes.ContainsKey(SemanticProperties.Weight[0]) && meshAttributes.ContainsKey(SemanticProperties.Joint[0]) + && !unityData.alreadyAddedAccessors.Contains(meshAttributes[SemanticProperties.Weight[0]].AccessorId.Id)) + { + unityData.alreadyAddedAccessors.Add(meshAttributes[SemanticProperties.Weight[0]].AccessorId.Id); + + CreateBoneWeightArray( + meshAttributes[SemanticProperties.Joint[0]].AccessorContent.AsVec4s.ToUnityVector4Raw(), + meshAttributes[SemanticProperties.Weight[0]].AccessorContent.AsVec4s.ToUnityVector4Raw(), + ref unityData.BoneWeights, + vertOffset); + } + + // Only add vertex data when it's not already added to the unity mesh data ! + if (meshAttributes.ContainsKey(SemanticProperties.POSITION) && !unityData.alreadyAddedAccessors.Contains(meshAttributes[SemanticProperties.POSITION].AccessorId.Id)) + { + + if (meshAttributes.TryGetValue(SemanticProperties.POSITION, out var attrPos)) + { + unityData.alreadyAddedAccessors.Add(attrPos.AccessorId.Id); + attrPos.AccessorContent.AsVertices.ToUnityVector3Raw(unityData.Vertices, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.NORMAL, out var attrNorm)) + { + attrNorm.AccessorContent.AsNormals.ToUnityVector3Raw(unityData.Normals, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.TANGENT, out var attrTang)) + { + attrTang.AccessorContent.AsTangents.ToUnityVector4Raw(unityData.Tangents, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.TexCoord[0], out var attrTex0)) + { + attrTex0.AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv1, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.TexCoord[1], out var attrTex1)) + { + attrTex1.AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv2, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.TexCoord[2], out var attrTex2)) + { + attrTex2.AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv3, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.TexCoord[3], out var attrTex3)) + { + attrTex3.AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv4, (int)vertOffset); + } + if (meshAttributes.TryGetValue(SemanticProperties.Color[0], out var attrColor)) + { + if (_activeColorSpace == ColorSpace.Gamma) + attrColor.AccessorContent.AsColors.ToUnityColorRaw(unityData.Colors, (int)vertOffset); + else + attrColor.AccessorContent.AsColors.ToUnityColorLinear(unityData.Colors, (int)vertOffset); + } + + } + var targets = primData.Targets; + if (targets != null) + { + for (int i = 0; i < targets.Count; ++i) + { + if (targets[i].TryGetValue(SemanticProperties.POSITION, out var tarAttrPos) && !unityData.alreadyAddedAccessors.Contains(tarAttrPos.AccessorId.Id)) + { + unityData.alreadyAddedAccessors.Add(tarAttrPos.AccessorId.Id); + tarAttrPos.AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetVertices[i], (int)vertOffset); + } + if (targets[i].TryGetValue(SemanticProperties.NORMAL, out var tarAttrNorm) && !unityData.alreadyAddedAccessors.Contains(tarAttrNorm.AccessorId.Id)) + { + unityData.alreadyAddedAccessors.Add(tarAttrNorm.AccessorId.Id); + tarAttrNorm.AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetNormals[i], (int)vertOffset); + } + if (targets[i].TryGetValue(SemanticProperties.TANGENT, out var tarAttrTang) && !unityData.alreadyAddedAccessors.Contains(tarAttrTang.AccessorId.Id)) + { + unityData.alreadyAddedAccessors.Add(tarAttrTang.AccessorId.Id); + tarAttrTang.AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetTangents[i], (int)vertOffset); + } + } + } + } + + // Flip vectors to Unity coordinate system + private void TransformTargets(ref Dictionary attributeAccessors) + { + if (attributeAccessors.ContainsKey(SemanticProperties.POSITION)) + { + AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.POSITION]; + SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); + } + + if (attributeAccessors.ContainsKey(SemanticProperties.NORMAL)) + { + AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.NORMAL]; + SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); + } + + if (attributeAccessors.ContainsKey(SemanticProperties.TANGENT)) + { + AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.TANGENT]; + SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); + } + } + + protected void TransformAttributes(ref Dictionary attributeAccessors) + { + foreach (var name in attributeAccessors.Keys) + { + var aa = attributeAccessors[name]; + switch (name) + { + case SemanticProperties.POSITION: + case SemanticProperties.NORMAL: + SchemaExtensions.ConvertVector3CoordinateSpace(ref aa, SchemaExtensions.CoordinateSpaceConversionScale); + break; + case SemanticProperties.TANGENT: + SchemaExtensions.ConvertVector4CoordinateSpace(ref aa, SchemaExtensions.TangentSpaceConversionScale); + break; + case SemanticProperties.TEXCOORD_0: + case SemanticProperties.TEXCOORD_1: + case SemanticProperties.TEXCOORD_2: + case SemanticProperties.TEXCOORD_3: + SchemaExtensions.FlipTexCoordArrayV(ref aa); + break; + } + } + } + + private static void AddNewBufferAndViewToAccessor(byte[] data, Accessor accessor, GLTFRoot _gltfRoot) + { + _gltfRoot.Buffers.Add(new GLTFBuffer() { ByteLength = (uint) data.Length }); + _gltfRoot.BufferViews.Add(new BufferView() { ByteLength = (uint) data.Length, ByteOffset = 0, Buffer = new BufferId() { Id = _gltfRoot.Buffers.Count, Root = _gltfRoot } }); + accessor.BufferView = new BufferViewId() { Id = _gltfRoot.BufferViews.Count - 1, Root = _gltfRoot }; + } + + protected static MeshTopology GetTopology(DrawMode mode) + { + switch (mode) + { + case DrawMode.Points: return MeshTopology.Points; + case DrawMode.Lines: return MeshTopology.Lines; + case DrawMode.LineStrip: return MeshTopology.LineStrip; + case DrawMode.Triangles: return MeshTopology.Triangles; + } + + throw new Exception("Unity does not support glTF draw mode: " + mode); + } + + /// + /// Allocate a generic type 2D array. The size is depending on the given parameters. + /// + /// Defines the depth of the arrays first dimension + /// >Defines the depth of the arrays second dimension + /// + private static T[][] Allocate2dArray(uint x, uint y) + { + var result = new T[x][]; + for (var i = 0; i < x; i++) result[i] = new T[y]; + return result; + } + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterMeshes.cs.meta b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs.meta new file mode 100644 index 000000000..0edafabc1 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterMeshes.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7f4930a0205140bbbcfaa67b79ab587b +timeCreated: 1657013019 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterSkinning.cs b/Runtime/Scripts/SceneImporter/ImporterSkinning.cs new file mode 100644 index 000000000..a9e9bce0f --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterSkinning.cs @@ -0,0 +1,97 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using GLTF; +using GLTF.Schema; +using UnityEngine; +using UnityGLTF.Extensions; +using Matrix4x4 = GLTF.Math.Matrix4x4; +using Vector4 = UnityEngine.Vector4; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + + protected virtual async Task SetupBones(Skin skin, SkinnedMeshRenderer renderer, CancellationToken cancellationToken) + { + var boneCount = skin.Joints.Count; + Transform[] bones = new Transform[boneCount]; + + // TODO: build bindpose arrays only once per skin, instead of once per node + Matrix4x4[] gltfBindPoses = null; + if (skin.InverseBindMatrices != null) + { + var bufferId = skin.InverseBindMatrices.Value.BufferView.Value.Buffer; + var bufferData = await GetBufferData(bufferId); + AttributeAccessor attributeAccessor = new AttributeAccessor + { + AccessorId = skin.InverseBindMatrices, + Stream = bufferData.Stream, + Offset = bufferData.ChunkOffset + }; + + GLTFHelpers.BuildBindPoseSamplers(ref attributeAccessor); + gltfBindPoses = attributeAccessor.AccessorContent.AsMatrix4x4s; + } + + UnityEngine.Matrix4x4[] bindPoses = new UnityEngine.Matrix4x4[boneCount]; + for (int i = 0; i < boneCount; i++) + { + var node = await GetNode(skin.Joints[i].Id, cancellationToken); + + bones[i] = node.transform; + bindPoses[i] = gltfBindPoses != null ? gltfBindPoses[i].ToUnityMatrix4x4Convert() : UnityEngine.Matrix4x4.identity; + } + + if (skin.Skeleton != null) + { + var rootBoneNode = await GetNode(skin.Skeleton.Id, cancellationToken); + renderer.rootBone = rootBoneNode.transform; + } + else + { + var rootBoneId = GLTFHelpers.FindCommonAncestor(skin.Joints); + if (rootBoneId != null) + { + var rootBoneNode = await GetNode(rootBoneId.Id, cancellationToken); + renderer.rootBone = rootBoneNode.transform; + } + else + { + throw new Exception("glTF skin joints do not share a root node!"); + } + } + renderer.sharedMesh.bindposes = bindPoses; + renderer.bones = bones; + } + + private void CreateBoneWeightArray(Vector4[] joints, Vector4[] weights, ref BoneWeight[] destArr, uint offset = 0) + { + // normalize weights (built-in normalize function only normalizes three components) + for (int i = 0; i < weights.Length; i++) + { + var weightSum = (weights[i].x + weights[i].y + weights[i].z + weights[i].w); + + if (!Mathf.Approximately(weightSum, 0)) + { + weights[i] /= weightSum; + } + } + + for (int i = 0; i < joints.Length; i++) + { + destArr[offset + i].boneIndex0 = (int)joints[i].x; + destArr[offset + i].boneIndex1 = (int)joints[i].y; + destArr[offset + i].boneIndex2 = (int)joints[i].z; + destArr[offset + i].boneIndex3 = (int)joints[i].w; + + destArr[offset + i].weight0 = weights[i].x; + destArr[offset + i].weight1 = weights[i].y; + destArr[offset + i].weight2 = weights[i].z; + destArr[offset + i].weight3 = weights[i].w; + } + } + + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterSkinning.cs.meta b/Runtime/Scripts/SceneImporter/ImporterSkinning.cs.meta new file mode 100644 index 000000000..fe761d70d --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterSkinning.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cef61a6932d545e0aca7bb7cd4a819db +timeCreated: 1657012769 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs b/Runtime/Scripts/SceneImporter/ImporterTextures.cs new file mode 100644 index 000000000..467d3b3db --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs @@ -0,0 +1,597 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using GLTF.Schema; +using GLTF.Utilities; +using UnityEditor; +using UnityEngine; +using UnityGLTF.Cache; +using UnityGLTF.Extensions; +using UnityGLTF.Loader; +using UnityGLTF.Plugins; +using Object = UnityEngine.Object; + +namespace UnityGLTF +{ + public partial class GLTFSceneImporter + { + internal const string EMPTY_TEXTURE_NAME_SUFFIX = " \0"; + + private class TextureData + { + public Texture Texture = null; + public int TexCoord = 0; + public double DataMultiplier = 1; + public Vector2 Offset = Vector2.zero; + public double Rotation = 0; + public Vector2 Scale = Vector2.one; + public Nullable TexCoordExtra = 0; + } + + private async Task CreateNotReferencedTexture(int index) + { + if (Root.Textures[index].Source != null + && Root.Images.Count > 0 + && Root.Images.Count > Root.Textures[index].Source.Id + && string.IsNullOrEmpty(Root.Textures[index].Source.Value.Uri)) + { + await ConstructImageBuffer(Root.Textures[index], index); + await ConstructTexture(Root.Textures[index], index, !KeepCPUCopyOfTexture, true, false); + } + } + + private async Task FromTextureInfo(TextureInfo textureInfo, bool isNormal) + { + var result = new TextureData(); + if (textureInfo?.Index?.Value == null) return result; + + TextureId textureId = textureInfo.Index; + await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true, isNormal); + result.Texture = _assetCache.TextureCache[textureId.Id].Texture; + result.TexCoord = textureInfo.TexCoord; + + if (textureInfo is NormalTextureInfo nti) + result.DataMultiplier = nti.Scale; + if (textureInfo is OcclusionTextureInfo oti) + result.DataMultiplier = oti.Strength; + + var ext = GetTextureTransform(textureInfo); + if (ext != null) + { + result.Offset = ext.Offset.ToUnityVector2Raw(); + result.Rotation = ext.Rotation; + result.Scale = ext.Scale.ToUnityVector2Raw(); + result.TexCoordExtra = ext.TexCoord; + } + + return result; + } + + protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool markGpuOnly, bool isLinear, bool isNormal) + { + if (_assetCache.InvalidImageCache[imageCacheIndex]) + return; + + if (_assetCache.ImageCache[imageCacheIndex] == null) + { + Stream stream = null; + if (image.Uri == null) + { + var bufferView = image.BufferView.Value; + var data = new byte[bufferView.ByteLength]; + + BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; + bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; + stream = new SubStream(bufferContents.Stream, 0, data.Length); + } + else + { + string uri = image.Uri; + + byte[] bufferData; + URIHelper.TryParseBase64(uri, out bufferData); + if (bufferData != null) + { + stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); + } + else + { + stream = _assetCache.ImageStreamCache[imageCacheIndex]; + } + } + + await YieldOnTimeoutAndThrowOnLowMemory(); + await ConstructUnityTexture(stream, markGpuOnly, isLinear, isNormal, image, imageCacheIndex); + } + } + + protected async Task ConstructImageBuffer(GLTFTexture texture, int textureIndex) + { + int sourceId = GetTextureSourceId(texture); + if (_assetCache.ImageStreamCache[sourceId] == null) + { + GLTFImage image = _gltfRoot.Images[sourceId]; + + // we only load the streams if not a base64 uri, meaning the data is in the uri + if (image.Uri != null && !URIHelper.IsBase64Uri(image.Uri)) + { + _assetCache.ImageStreamCache[sourceId] = await _options.DataLoader.LoadStreamAsync(image.Uri); + } + else if (image.Uri == null && image.BufferView != null && _assetCache.BufferCache[image.BufferView.Value.Buffer.Id] == null) + { + int bufferIndex = image.BufferView.Value.Buffer.Id; + await ConstructBuffer(_gltfRoot.Buffers[bufferIndex], bufferIndex); + } + } + + if (_assetCache.TextureCache[textureIndex] == null) + { + _assetCache.TextureCache[textureIndex] = new TextureCacheData + { + TextureDefinition = texture + }; + } + } + + // With using KTX, we need to return a new Texture2D instance at the moment. Unity KTX package does not support loading into existing one + async Task CheckMimeTypeAndLoadImage(GLTFImage image, Texture2D texture, byte[] data, bool markGpuOnly) + { + switch (image.MimeType) + { + case "image/png": + case "image/jpeg": + // NOTE: the second parameter of LoadImage() marks non-readable, but we can't mark it until after we call Apply() + texture.LoadImage(data, markGpuOnly); + break; + case "image/exr": + Debug.Log(LogType.Warning, $"EXR images are not supported. The texture {texture.name} won't be imported. glTF filename: {_gltfFileName}"); + break; + case "image/ktx2": + string textureName = texture.name; + +#if HAVE_KTX + if (Context.TryGetPlugin(out _)) + { + bool isLinear = !texture.isDataSRGB; +#if UNITY_EDITOR + Texture.DestroyImmediate(texture); +#else + Texture.Destroy(texture); +#endif + var ktxTexture = new KtxUnity.KtxTexture(); + + using (var alloc = new Unity.Collections.NativeArray(data, Unity.Collections.Allocator.Persistent)) + { + + var resultTextureData = await ktxTexture.LoadFromBytes(alloc, isLinear); + texture = resultTextureData.texture; + texture.name = textureName; + } + + ktxTexture.Dispose(); + + } + else +#endif + { + Debug.Log(LogType.Warning, $"Can't import texture \"{image.Name}\" from \"{_gltfFileName}\" because it is a KTX2 file using the KHR_texture_basisu extension. Add the package \"com.unity.cloud.ktx\" version v1.3+ to your project to import KTX2 textures."); + await Task.CompletedTask; + texture = null; + } + break; + default: + texture.LoadImage(data, markGpuOnly); + break; + } + + // assign default values + if (texture) + { + texture.wrapMode = TextureWrapMode.Repeat; + texture.wrapModeV = TextureWrapMode.Repeat; + texture.wrapModeU = TextureWrapMode.Repeat; + texture.filterMode = FilterMode.Bilinear; + } + + await Task.CompletedTask; + return texture; + } + + protected virtual async Task ConstructUnityTexture(Stream stream, bool markGpuOnly, bool isLinear, bool isNormal, GLTFImage image, int imageCacheIndex) + { + bool convertToDxt5nmFormat = false; +#if UNITY_EDITOR + if (stream is AssetDatabaseStream assetDatabaseStream) + { + var tx = UnityEditor.AssetDatabase.LoadAssetAtPath(assetDatabaseStream.AssetUri); + progressStatus.TextureLoaded++; + progress?.Report(progressStatus); + _assetCache.ImageCache[imageCacheIndex] = tx; + return; + } + + if (isNormal && Context.SourceImporter != null) + { + BuildTargetGroup activeTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); + if (PlayerSettings.GetNormalMapEncoding(activeTargetGroup) == NormalMapEncoding.DXT5nm) + { + convertToDxt5nmFormat = true; + } + } + +#endif + Texture2D texture = new Texture2D(4, 4, TextureFormat.RGBA32, GenerateMipMapsForTextures, isLinear); + texture.name = string.IsNullOrEmpty(image.Name) ? Path.GetFileNameWithoutExtension(image.Uri) : image.Name; + if (string.IsNullOrEmpty(texture.name)) + texture.name = $"Texture_{imageCacheIndex.ToString()}{EMPTY_TEXTURE_NAME_SUFFIX}"; + + var newTextureObject = texture; + +#if UNITY_EDITOR + var haveRemappedTexture = false; + if (Context.SourceImporter != null) + { + // check for remapping, we don't even need to attempt loading the texture in that case. + var externalObjects = Context.SourceImporter.GetExternalObjectMap(); + var sourceIdentifier = new AssetImporter.SourceAssetIdentifier(texture); + externalObjects.TryGetValue(sourceIdentifier, out var o); + if (o is Texture2D remappedTexture) + { + if (remappedTexture) + { + texture = remappedTexture; + haveRemappedTexture = true; + } + else + { + Context.SourceImporter.RemoveRemap(sourceIdentifier); + } + } + } + + if (haveRemappedTexture) + { + // nothing to do here, the texture has already been remapped + } + else +#endif + if (stream is FileLoader.InvalidStream invalidStream) + { + // ignore - we still need a valid texture so that we can properly remap + // texture = null; + // We need some way to track these mock textures, so that we can get rid of them again after import + // TODO we should still set it to null here, and save the importer definition names for remapping instead. + // This way here we'll get into weird code for Runtime import, as we would still import mock textures... + // Or we add another option to avoid that. + texture = null; + UnityEngine.Debug.LogError("Buffer file " + invalidStream.RelativeFilePath + " not found in path: " + invalidStream.AbsoluteFilePath); + + } + else if (stream is MemoryStream) + { + using (MemoryStream memoryStream = stream as MemoryStream) + { + await YieldOnTimeoutAndThrowOnLowMemory(); + texture = await CheckMimeTypeAndLoadImage(image, texture, memoryStream.ToArray(), markGpuOnly); + } + } + else + { + byte[] buffer = new byte[stream.Length]; + + // todo: potential optimization is to split stream read into multiple frames (or put it on a thread?) + if (stream.Length > int.MaxValue) + { + throw new Exception("Stream is larger than can be copied into byte array"); + } + stream.Read(buffer, 0, (int)stream.Length); + + await YieldOnTimeoutAndThrowOnLowMemory(); + texture = await CheckMimeTypeAndLoadImage(image, texture, buffer, markGpuOnly); + } + + if (texture && convertToDxt5nmFormat) + { + texture = await NormalMapEncodingConverter.ConvertToDxt5nmAndCheckTextureFormatAsync(texture); + if (texture != newTextureObject) + newTextureObject = texture; + + texture.Apply(); + } + + if (!texture) + _assetCache.InvalidImageCache[imageCacheIndex] = newTextureObject; + + if (_assetCache.ImageCache[imageCacheIndex] != null) Debug.Log(LogType.Assert, "ImageCache should not be loaded multiple times"); + if (texture) + { + progressStatus.TextureLoaded++; + progress?.Report(progressStatus); + } + _assetCache.ImageCache[imageCacheIndex] = texture; + } + + + protected virtual int GetTextureSourceId(GLTFTexture texture) + { + if (texture.Extensions != null && texture.Extensions.ContainsKey(KHR_texture_basisu.EXTENSION_NAME)) + { + return ((KHR_texture_basisu)texture.Extensions[KHR_texture_basisu.EXTENSION_NAME]).source.Id; + } + return texture.Source?.Id ?? 0; + } + + protected virtual bool IsTextureFlipped(GLTFTexture texture) + { + if (texture.Extensions != null && texture.Extensions.ContainsKey(KHR_texture_basisu.EXTENSION_NAME)) + { + return true; + } + return false; + } + + /// + /// Creates a texture from a glTF texture + /// + /// The texture to load + /// The index in the texture cache + /// Whether the texture is GPU only, instead of keeping a CPU copy + /// Whether the texture is linear rather than sRGB + /// The loading task + public virtual async Task LoadTextureAsync(GLTFTexture texture, int textureIndex, bool markGpuOnly, bool isLinear) + { + try + { + lock (this) + { + if (_isRunning) + { + throw new GLTFLoadException("Cannot CreateTexture while GLTFSceneImporter is already running"); + } + + _isRunning = true; + } + + if (_options.ThrowOnLowMemory) + { + _memoryChecker = new MemoryChecker(); + } + + if (_gltfRoot == null) + { + await LoadJson(_gltfFileName); + } + + if (_assetCache == null) + { + _assetCache = new AssetCache(_gltfRoot); + } + + await ConstructImageBuffer(texture, textureIndex); + await ConstructTexture(texture, textureIndex, markGpuOnly, isLinear, false); + } + finally + { + lock (this) + { + _isRunning = false; + } + _gltfStream.Stream.Close(); + } + } + + public virtual Task LoadTextureAsync(GLTFTexture texture, int textureIndex, bool isLinear) + { + return LoadTextureAsync(texture, textureIndex, !KeepCPUCopyOfTexture, isLinear); + } + + /// + /// Gets texture that has been loaded from CreateTexture + /// + /// The texture to get + /// Created texture + public virtual Texture GetTexture(int textureIndex) + { + if (_assetCache == null) + { + throw new GLTFLoadException("Asset cache needs initialized before calling GetTexture"); + } + + if (_assetCache.TextureCache[textureIndex] == null) + { + return null; + } + + return _assetCache.TextureCache[textureIndex].Texture; + } + + protected virtual async Task ConstructTexture(GLTFTexture texture, int textureIndex, bool markGpuOnly, bool isLinear, bool isNormal) + { + if (_assetCache.TextureCache[textureIndex].Texture == null) + { + int sourceId = GetTextureSourceId(texture); + GLTFImage image = _gltfRoot.Images[sourceId]; + await ConstructImage(image, sourceId, markGpuOnly, isLinear, isNormal); + + var source = _assetCache.ImageCache[sourceId]; + if (!source) return; + + FilterMode desiredFilterMode; + TextureWrapMode desiredWrapModeS, desiredWrapModeT; + + if (texture.Sampler != null) + { + var sampler = texture.Sampler.Value; + switch (sampler.MinFilter) + { + case MinFilterMode.Nearest: + case MinFilterMode.NearestMipmapNearest: + case MinFilterMode.NearestMipmapLinear: + desiredFilterMode = FilterMode.Point; + break; + case MinFilterMode.Linear: + case MinFilterMode.LinearMipmapNearest: + desiredFilterMode = FilterMode.Bilinear; + break; + case MinFilterMode.LinearMipmapLinear: + desiredFilterMode = FilterMode.Trilinear; + break; + default: + Debug.Log(LogType.Warning, "Unsupported Sampler.MinFilter: " + sampler.MinFilter); + desiredFilterMode = FilterMode.Trilinear; + break; + } + + TextureWrapMode UnityWrapMode(GLTF.Schema.WrapMode gltfWrapMode) + { + switch (gltfWrapMode) + { + case GLTF.Schema.WrapMode.ClampToEdge: + return TextureWrapMode.Clamp; + case GLTF.Schema.WrapMode.Repeat: + return TextureWrapMode.Repeat; + case GLTF.Schema.WrapMode.MirroredRepeat: + return TextureWrapMode.Mirror; + default: + Debug.Log(LogType.Warning, "Unsupported Sampler.Wrap: " + gltfWrapMode); + return TextureWrapMode.Repeat; + } + } + + desiredWrapModeS = UnityWrapMode(sampler.WrapS); + desiredWrapModeT = UnityWrapMode(sampler.WrapT); + } + else + { + desiredFilterMode = FilterMode.Trilinear; + desiredWrapModeS = TextureWrapMode.Repeat; + desiredWrapModeT = TextureWrapMode.Repeat; + } + + var matchSamplerState = source.filterMode == desiredFilterMode && source.wrapModeU == desiredWrapModeS && source.wrapModeV == desiredWrapModeT; + if (matchSamplerState || markGpuOnly) + { + if (_assetCache.TextureCache[textureIndex].Texture != null) Debug.Log(LogType.Assert, "Texture should not be reset to prevent memory leaks"); + _assetCache.TextureCache[textureIndex].Texture = source; + + if (!matchSamplerState) + { + Debug.Log(LogType.Warning, $"Ignoring sampler; filter mode: source {source.filterMode}, desired {desiredFilterMode}; wrap mode: source {source.wrapModeU}x{source.wrapModeV}, desired {desiredWrapModeS}x{desiredWrapModeT}"); + } + } + else +#if UNITY_EDITOR + if (!UnityEditor.AssetDatabase.Contains(source)) +#endif + { + Texture2D unityTexture; + if (!source.isReadable) + { + unityTexture = new Texture2D(source.width, source.height, source.format, source.mipmapCount, isLinear); + Graphics.CopyTexture(source, unityTexture); + } + else + unityTexture = Object.Instantiate(source); + + unityTexture.name = string.IsNullOrEmpty(image.Name) ? + string.IsNullOrEmpty(texture.Name) ? + Path.GetFileNameWithoutExtension(image.Uri) : + texture.Name : + image.Name; + + if (string.IsNullOrEmpty(unityTexture.name)) + unityTexture.name = $"Texture_{textureIndex.ToString()}{EMPTY_TEXTURE_NAME_SUFFIX}"; + + unityTexture.filterMode = desiredFilterMode; + unityTexture.wrapModeU = desiredWrapModeS; + unityTexture.wrapModeV = desiredWrapModeT; + + if (_assetCache.TextureCache[textureIndex].Texture != null) Debug.Log(LogType.Assert, "Texture should not be reset to prevent memory leaks"); + _assetCache.TextureCache[textureIndex].Texture = unityTexture; + } +#if UNITY_EDITOR + else + { + // don't warn for just filter mode, user choice + if (source.wrapModeU != desiredWrapModeS || source.wrapModeV != desiredWrapModeT) + Debug.Log(LogType.Warning, ($"Sampler state doesn't match but source texture is non-readable. Results might not be correct if textures are used multiple times with different sampler states. {source.filterMode} == {desiredFilterMode} && {source.wrapModeU} == {desiredWrapModeS} && {source.wrapModeV} == {desiredWrapModeT}")); + _assetCache.TextureCache[textureIndex].Texture = source; + } +#endif + } + + _assetCache.TextureCache[textureIndex].IsLinear = isLinear; + _assetCache.TextureCache[textureIndex].IsNormal = isNormal; + + try + { + var tex = _assetCache.TextureCache[textureIndex].Texture; + + foreach (var plugin in Context.Plugins) + { + plugin.OnAfterImportTexture(texture, textureIndex, tex); + } + } + catch (Exception ex) + { + Debug.LogException(ex); + } + } + + protected virtual void ConstructImageFromGLB(GLTFImage image, int imageCacheIndex) + { + var texture = new Texture2D(0, 0); + texture.name = nameof(GLTFSceneImporter) + (image.Name != null ? ("." + image.Name) : ""); + var bufferView = image.BufferView.Value; + var data = new byte[bufferView.ByteLength]; + + var bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; + bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; + bufferContents.Stream.Read(data, 0, data.Length); + texture.LoadImage(data); + + if (_assetCache.ImageCache[imageCacheIndex] != null) Debug.Log(LogType.Assert, "ImageCache should not be loaded multiple times"); + progressStatus.TextureLoaded++; + progress?.Report(progressStatus); + _assetCache.ImageCache[imageCacheIndex] = texture; + } + +#if UNITY_EDITOR + internal class AssetDatabaseStream : Stream + { + public string AssetUri { get; } + + public AssetDatabaseStream(string imageUri) + { + AssetUri = imageUri; + } + + public override void Flush() => throw new NotImplementedException(); + public override int Read(byte[] buffer, int offset, int count) => throw new NotImplementedException(); + public override long Seek(long offset, SeekOrigin origin) => throw new NotImplementedException(); + public override void SetLength(long value) => throw new NotImplementedException(); + public override void Write(byte[] buffer, int offset, int count) => throw new NotImplementedException(); + + public override bool CanRead { get; } + public override bool CanSeek { get; } + public override bool CanWrite { get; } + public override long Length { get; } + public override long Position { get; set; } + } +#endif + } + + internal static class MatHelper + { + internal static void SetKeyword(this Material material, string keyword, bool state) + { + if (state) + material.EnableKeyword(keyword + "_ON"); + else + material.DisableKeyword(keyword + "_ON"); + + if (material.HasProperty(keyword)) + material.SetFloat(keyword, state ? 1 : 0); + } + } +} diff --git a/Runtime/Scripts/SceneImporter/ImporterTextures.cs.meta b/Runtime/Scripts/SceneImporter/ImporterTextures.cs.meta new file mode 100644 index 000000000..a00c414e9 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/ImporterTextures.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 859436f420e4466daa129c3fc03f4480 +timeCreated: 1657012139 \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs b/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs new file mode 100644 index 000000000..84e153193 --- /dev/null +++ b/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs @@ -0,0 +1,107 @@ +using System.Threading.Tasks; +using UnityEngine; + +namespace UnityGLTF +{ + internal static class NormalMapEncodingConverter + { + public static async Task ConvertToDxt5nmAndCheckTextureFormatAsync(Texture2D source) + { + Texture2D dest = source; + Color[] pixels; + + void CreateDestinationTexture() + { + dest = new Texture2D(source.width, source.height, TextureFormat.RGBA32, source.mipmapCount > 0, true); + dest.wrapMode = source.wrapMode; + dest.wrapModeU = source.wrapModeU; + dest.wrapModeV = source.wrapModeV; + dest.wrapModeW = source.wrapModeW; + dest.filterMode = source.filterMode; + dest.anisoLevel = source.anisoLevel; + dest.mipMapBias = source.mipMapBias; + dest.name = source.name; + } + + void DestroySourceTexture() + { +#if UNITY_EDITOR + Texture.DestroyImmediate(source); +#else + Texture.Destroy(source); +#endif + } + + if (!source.isReadable) + { + CreateDestinationTexture(); + + var destRenderTexture = RenderTexture.GetTemporary(source.width, source.height, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Linear); + var previousSRGBState = GL.sRGBWrite; + GL.sRGBWrite = false; + + Graphics.Blit(source, destRenderTexture); + + dest.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); + + GL.sRGBWrite = previousSRGBState; + + RenderTexture.ReleaseTemporary(destRenderTexture); + + pixels = dest.GetPixels(); + + DestroySourceTexture(); + } + else + { + pixels = source.GetPixels(); + + if (source.format != TextureFormat.RGBA32) + { + CreateDestinationTexture(); + DestroySourceTexture(); + } + } + + await Task.Run(() => + { + for (var i = 0; i < pixels.Length; i++) + { + var c = pixels[i]; + pixels[i] = new Color(1, c.g, 1, c.r); + } + }); + + dest.SetPixels(pixels); + return dest; + } + + public static void ConvertToDxt5nm(Texture2D source, Texture2D dest) + { + var pixels = source.GetPixels(); + for (var i = 0; i < pixels.Length; i++) + { + var c = pixels[i]; + pixels[i] = new Color(1, c.g, 1, c.r); + } + + dest.SetPixels(pixels); + } + + public static async Task ConvertToDxt5nmAsync(Texture2D texture) + { + var pixels = texture.GetPixels(); + await Task.Run(() => + { + for (var i = 0; i < pixels.Length; i++) + { + var c = pixels[i]; + pixels[i] = new Color(1, c.g, 1, c.r); + } + }); + + texture.SetPixels(pixels); + } + + } +} \ No newline at end of file diff --git a/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs.meta b/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs.meta new file mode 100644 index 000000000..3d0a3b57f --- /dev/null +++ b/Runtime/Scripts/SceneImporter/NormalMapEncodingConverter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 870ecf89bfc64980a38e2977a56943bb +timeCreated: 1705055769 \ No newline at end of file diff --git a/Runtime/Scripts/Timeline.meta b/Runtime/Scripts/Timeline.meta new file mode 100644 index 000000000..1b7db75fa --- /dev/null +++ b/Runtime/Scripts/Timeline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bab39c7055582594da14a45f4b1bebf1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Timeline/GLTFRecorder.cs b/Runtime/Scripts/Timeline/GLTFRecorder.cs new file mode 100644 index 000000000..7a2992fdd --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorder.cs @@ -0,0 +1,495 @@ +#define USE_ANIMATION_POINTER + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using GLTF.Schema; +using Unity.Profiling; +using UnityEngine; +using UnityGLTF.Plugins; +using Object = UnityEngine.Object; + +namespace UnityGLTF.Timeline +{ + public class GLTFRecorder + { + public GLTFRecorder(Transform root, bool recordBlendShapes = true, bool recordRootInWorldSpace = false, bool recordAnimationPointer = false) + { + if (!root) + throw new ArgumentNullException(nameof(root), "Please provide a root transform to record."); + + this.root = root; + this.recordBlendShapes = recordBlendShapes; + this.recordRootInWorldSpace = recordRootInWorldSpace; + this.recordAnimationPointer = recordAnimationPointer; + } + + /// + /// Optionally assign a list of transforms to be recorded, other transforms will be ignored + /// + internal ICollection recordingList = null; + private bool AllowRecordingTransform(Transform tr) => recordingList == null || recordingList.Contains(tr); + + private Transform root; + private Dictionary data = new Dictionary(64); + private double startTime; + private double lastRecordedTime; + private bool hasRecording; + private bool isRecording; + + private readonly bool recordBlendShapes; + private readonly bool recordRootInWorldSpace; + private readonly bool recordAnimationPointer; + + public bool HasRecording => hasRecording; + public bool IsRecording => isRecording; + + public double LastRecordedTime => lastRecordedTime; + + public string AnimationName = "Recording"; + + public delegate void OnBeforeAddAnimationDataDelegate(PostAnimationData animationData); + public delegate void OnPostExportDelegate(PostExportArgs animationData); + + /// + /// Callback to modify the animation data before it is added to the animation. + /// Is called once for each track after the recording has ended. This is a non destructive callback, + /// so the original recorded data is not modified. Every time you call EndRecording to the save the gltf/glb, + /// you can modify the data again. + /// + public OnBeforeAddAnimationDataDelegate OnBeforeAddAnimationData; + + /// + /// Callback to modify or add additional data to the gltf root after the recording has ended and animation + /// data is added to the animation. + /// + public OnPostExportDelegate OnPostExport; + + + public class PostExportArgs + { + public Bounds AnimationTranslationBounds { get; private set; } + public GLTFSceneExporter Exporter { get; private set; } + public GLTFRoot GltfRoot { get; private set; } + + internal PostExportArgs(Bounds animationTranslationBounds, GLTFSceneExporter exporter, GLTFRoot gltfRoot) + { + this.AnimationTranslationBounds = animationTranslationBounds; + this.Exporter = exporter; + this.GltfRoot = gltfRoot; + } + } + + public class PostAnimationData + { + internal AnimationData.Track animationTrack; + public float[] Times; + public object[] Values; + + public Object AnimatedObject => animationTrack.animatedObject; + public string PropertyName => animationTrack.propertyName; + + internal PostAnimationData(AnimationData.Track tr, float[] times, object[] values) + { + this.animationTrack = tr; + this.Times = times; + this.Values = values; + } + } + + internal class AnimationData + { + internal Transform tr; + private SkinnedMeshRenderer smr; + private bool recordBlendShapes; + private bool inWorldSpace = false; + private bool recordAnimationPointer; + +#if USE_ANIMATION_POINTER + private static List exportPlans; + private static MaterialPropertyBlock materialPropertyBlock = new MaterialPropertyBlock(); + internal List tracks = new List(); + + internal class ExportPlan + { + public string propertyName; + public Type dataType; + public Func GetTarget; + public Func GetData; + + public ExportPlan(string propertyName, Type dataType, Func GetTarget, Func GetData) + { + this.propertyName = propertyName; + this.dataType = dataType; + this.GetTarget = GetTarget; + this.GetData = GetData; + } + + public object Sample(AnimationData data) + { + var target = GetTarget(data.tr); + return GetData(data.tr, target, data); + } + } +#endif + + public AnimationData(Transform tr, double time, bool zeroScale = false, bool recordBlendShapes = true, bool inWorldSpace = false, bool recordAnimationPointer = false) + { + this.tr = tr; + this.smr = tr.GetComponent(); + this.recordBlendShapes = recordBlendShapes; + this.inWorldSpace = inWorldSpace; + this.recordAnimationPointer = recordAnimationPointer; + + if (exportPlans == null) + { + exportPlans = new List(); + exportPlans.Add(new ExportPlan("translation", typeof(Vector3), x => x, (tr0, _, options) => options.inWorldSpace ? tr0.position : tr0.localPosition)); + exportPlans.Add(new ExportPlan("rotation", typeof(Quaternion), x => x, (tr0, _, options) => + { + var q = options.inWorldSpace ? tr0.rotation : tr0.localRotation; + return new Quaternion(q.x, q.y, q.z, q.w); + })); + exportPlans.Add(new ExportPlan("scale", typeof(Vector3), x => x, (tr0, _, options) => options.inWorldSpace ? tr0.lossyScale : tr0.localScale)); + + if (recordBlendShapes) + { + exportPlans.Add(new ExportPlan("weights", typeof(float[]), + x => x.GetComponent(), (tr0, x, options) => + { + if (x is SkinnedMeshRenderer skinnedMesh && skinnedMesh.sharedMesh) + { + var mesh = skinnedMesh.sharedMesh; + var blendShapeCount = mesh.blendShapeCount; + if (blendShapeCount == 0) return null; + var weights = new float[blendShapeCount]; + for (var i = 0; i < blendShapeCount; i++) + weights[i] = skinnedMesh.GetBlendShapeWeight(i); + return weights; + } + + return null; + })); + } + + if (recordAnimationPointer) + { + // TODO add other animation pointer export plans + + exportPlans.Add(new ExportPlan("baseColorFactor", typeof(Color), x => x.GetComponent() ? x.GetComponent().sharedMaterial : null, (tr0, mat, options) => + { + var r = tr0.GetComponent(); + + if (r.HasPropertyBlock()) + { + r.GetPropertyBlock(materialPropertyBlock); + #if UNITY_2021_1_OR_NEWER + if (materialPropertyBlock.HasColor("_BaseColor")) return materialPropertyBlock.GetColor("_BaseColor").linear; + if (materialPropertyBlock.HasColor("_Color")) return materialPropertyBlock.GetColor("_Color").linear; + if (materialPropertyBlock.HasColor("baseColorFactor")) return materialPropertyBlock.GetColor("baseColorFactor").linear; + #else + var c = materialPropertyBlock.GetColor("_BaseColor"); + if (c.r != 0 || c.g != 0 || c.b != 0 || c.a != 0) return c; + c = materialPropertyBlock.GetColor("_Color"); + if (c.r != 0 || c.g != 0 || c.b != 0 || c.a != 0) return c; + // this leaves an edge case where someone is actually animating color to black: + // in that case, the un-animated color would now be exported... + #endif + } + + if (mat is Material m && m) + { + if (m.HasProperty("_BaseColor")) return m.GetColor("_BaseColor").linear; + if (m.HasProperty("_Color")) return m.GetColor("_Color").linear; + if (m.HasProperty("baseColorFactor")) return m.GetColor("baseColorFactor").linear; + } + + return null; + })); + } + } + + foreach (var plan in exportPlans) + { + if (plan.GetTarget(tr)) { + tracks.Add(new Track(this, plan, time)); + } + } + } + + internal class Track + { + public Object animatedObject => plan.GetTarget(tr.tr); + public string propertyName => plan.propertyName; + // TODO sample as floats? + public float[] times => samples.Keys.Select(x => (float) x).ToArray(); + public object[] values => samples.Values.ToArray(); + + private AnimationData tr; + private ExportPlan plan; + private Dictionary samples; + private object lastSample; + + public Track(AnimationData tr, ExportPlan plan, double time) + { + this.tr = tr; + this.plan = plan; + samples = new Dictionary(); + SampleIfChanged(time); + } + + public void SampleIfChanged(double time) + { + var value = plan.Sample(tr); + if (value == null || (value is Object o && !o)) + return; + if (!value.Equals(lastSample)) + { + samples[time] = value; + lastSample = value; + } + } + + } + + public void Update(double time) + { + foreach (var track in tracks) + { + track.SampleIfChanged(time); + } + } + } + + public void StartRecording(double time) + { + startTime = time; + lastRecordedTime = time; + var trs = root.GetComponentsInChildren(true); + data.Clear(); + + foreach (var tr in trs) + { + if (!AllowRecordingTransform(tr)) continue; + data.Add(tr, new AnimationData(tr, 0, !tr.gameObject.activeSelf, recordBlendShapes, recordRootInWorldSpace && tr == root, recordAnimationPointer)); + } + + isRecording = true; + hasRecording = true; + } + + public void UpdateRecording(double time) + { + if (!isRecording) + { + throw new InvalidOperationException($"{nameof(GLTFRecorder)} isn't recording, but {nameof(UpdateRecording)} was called. This is invalid."); + } + + if (time <= lastRecordedTime) + { + Debug.LogWarning("Can't record backwards in time, please avoid this."); + return; + } + + var currentTime = time - startTime; + var trs = root.GetComponentsInChildren(true); + foreach (var tr in trs) + { + if (!AllowRecordingTransform(tr)) continue; + if (!data.ContainsKey(tr)) + { + // insert "empty" frame with scale=0,0,0 because this object might have just appeared in this frame + var emptyData = new AnimationData(tr, lastRecordedTime, true, recordBlendShapes, recordAnimationPointer); + data.Add(tr, emptyData); + // insert actual keyframe + data[tr].Update(currentTime); + } + else + data[tr].Update(currentTime); + } + + lastRecordedTime = time; + } + + internal void EndRecording(out Dictionary param) + { + param = null; + if (!hasRecording) return; + param = data; + } + + public void EndRecording(string filename, string sceneName = "scene", GLTFSettings settings = null) + { + if (!isRecording) return; + if (!hasRecording) return; + + var dir = Path.GetDirectoryName(filename); + if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) Directory.CreateDirectory(dir); + using (var filestream = new FileStream(filename, FileMode.Create, FileAccess.Write)) + { + EndRecording(filestream, sceneName, settings); + } + } + + public void EndRecording(Stream stream, string sceneName = "scene", GLTFSettings settings = null) + { + if (!hasRecording) return; + isRecording = false; + Debug.Log("Gltf Recording saved. Tracks: " + data.Count + ", Total Keyframes: " + data.Sum(x => x.Value.tracks.Sum(y => y.values.Count()))); + + if (!settings) + { + var adjustedSettings = Object.Instantiate(GLTFSettings.GetOrCreateSettings()); + adjustedSettings.ExportDisabledGameObjects = true; + adjustedSettings.ExportAnimations = false; + settings = adjustedSettings; + } + + // ensure correct animation pointer plugin settings are used + if (!recordAnimationPointer) + settings.ExportPlugins.RemoveAll(x => x is AnimationPointerExport); + else + if (!settings.ExportPlugins.Any(x => x is AnimationPointerExport)) + settings.ExportPlugins.Add(ScriptableObject.CreateInstance()); + + if (!recordBlendShapes) + settings.BlendShapeExportProperties = GLTFSettings.BlendShapeExportPropertyFlags.None; + + var logHandler = new StringBuilderLogHandler(); + + var exporter = new GLTFSceneExporter(new Transform[] { root }, new ExportContext(settings) + { + AfterSceneExport = PostExport, + logger = new Logger(logHandler), + }); + + exporter.SaveGLBToStream(stream, sceneName); + + logHandler.LogAndClear(); + } + + private void PostExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) + { + // this would include animation from the original root + // exporter.ExportAnimationFromNode(ref root); + + GLTFAnimation anim = new GLTFAnimation(); + anim.Name = AnimationName; + + CollectAndProcessAnimation(exporter, anim, true, out Bounds translationBounds); + + if (anim.Channels.Count > 0 && anim.Samplers.Count > 0) + gltfRoot.Animations.Add(anim); + + OnPostExport?.Invoke( new PostExportArgs(translationBounds, exporter, gltfRoot)); + } + + private static void SafeDestroy(Object obj) + { + if (Application.isEditor) + Object.DestroyImmediate(obj); + else + Object.Destroy(obj); + } + + private static ProfilerMarker processAnimationMarker = new ProfilerMarker("Process Animation"); + private static ProfilerMarker simplifyKeyframesMarker = new ProfilerMarker("Simplify Keyframes"); + private static ProfilerMarker convertValuesMarker = new ProfilerMarker("Convert Values to Arrays"); + + private void CollectAndProcessAnimation(GLTFSceneExporter gltfSceneExporter, GLTFAnimation anim, bool calculateTranslationBounds, out Bounds translationBounds) + { + var gotFirstValue = false; + translationBounds = new Bounds(); + + foreach (var kvp in data) + { + processAnimationMarker.Begin(); + foreach (var tr in kvp.Value.tracks) + { + if (tr.times.Length == 0) continue; + + var postAnimation = new PostAnimationData(tr, tr.times, tr.values); + OnBeforeAddAnimationData?.Invoke(postAnimation); + + if (calculateTranslationBounds && tr.propertyName == "translation") + { + for (var i = 0; i < postAnimation.Values.Length; i++) + { + var vec = (Vector3) postAnimation.Values[i]; + if (!gotFirstValue) + { + translationBounds = new Bounds(vec, Vector3.zero); + gotFirstValue = true; + } + else + { + translationBounds.Encapsulate(vec); + } + } + } + + gltfSceneExporter.RemoveUnneededKeyframes(ref postAnimation.Times, ref postAnimation.Values); + gltfSceneExporter.AddAnimationData(tr.animatedObject, tr.propertyName, anim, postAnimation.Times, postAnimation.Values); + } + processAnimationMarker.End(); + } + } + + private class StringBuilderLogHandler : ILogHandler + { + private readonly StringBuilder sb = new StringBuilder(); + + private string LogTypeToLog(LogType logType) + { +#if UNITY_EDITOR + // create strings with tags + switch (logType) + { + case LogType.Error: + return "[" + logType + "]"; + case LogType.Assert: + return "[" + logType + "]"; + case LogType.Warning: + return "[" + logType + "]"; + case LogType.Log: + return "[" + logType + "]"; + case LogType.Exception: + return "[" + logType + "]"; + default: + return "[" + logType + "]"; + } +#else + return "[" + logType + "]"; +#endif + } + + public void LogFormat(LogType logType, Object context, string format, params object[] args) => sb.AppendLine($"{LogTypeToLog(logType)} {string.Format(format, args)} [Context: {context}]"); + public void LogException(Exception exception, Object context) => sb.AppendLine($"{LogTypeToLog(LogType.Exception)} {exception} [Context: {context}]"); + + public void LogAndClear() + { + if(sb.Length > 0) + { + var str = sb.ToString(); +#if UNITY_2019_1_OR_NEWER + var logType = LogType.Log; +#if UNITY_EDITOR + if (str.IndexOf("[Error]", StringComparison.Ordinal) > -1 || + str.IndexOf("[Exception]", StringComparison.Ordinal) > -1 || + str.IndexOf("[Assert]", StringComparison.Ordinal) > -1) + logType = LogType.Error; + else if (str.IndexOf("[Warning]", StringComparison.Ordinal) > -1) + logType = LogType.Warning; +#endif + Debug.LogFormat(logType, LogOption.NoStacktrace, null, "Export Messages:" + "\n{0}", sb.ToString()); +#else + Debug.Log(string.Format("Export Messages:" + "\n{0}", str)); +#endif + } + sb.Clear(); + } + } + } +} diff --git a/Runtime/Scripts/Timeline/GLTFRecorder.cs.meta b/Runtime/Scripts/Timeline/GLTFRecorder.cs.meta new file mode 100644 index 000000000..82f844877 --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c86ab342c27009409e8735873d51306 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs b/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs new file mode 100644 index 000000000..6565b7e68 --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs @@ -0,0 +1,111 @@ +#if HAVE_TIMELINE + +using UnityEngine; +using UnityEngine.Playables; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityGLTF.Timeline +{ + public class GLTFRecorderBehaviour : PlayableBehaviour + { + private GLTFRecorder recorder = null; + + private void BeginRecording(double getTime, Transform getExportRoot) + { + if (!getExportRoot) + { + Debug.LogError("Can't record: export root is null"); + recorder = null; + return; + } + + Time.captureFramerate = Clip.m_CaptureFrameRate; + + // will be initialized lazy to ensure that the first frame is correct and not pre-timeline refresh + recorder = null; + } + + private void StopRecording(double getTime) + { + recorder?.EndRecording(Clip.m_File); + } + + private void ProcessRecording(double getTime, Transform getExportRoot) + { + if (recorder == null) + { + recorder = new GLTFRecorder(getExportRoot, Clip.m_RecordBlendShapes, recordAnimationPointer: Clip.m_RecordAnimationPointer); + recorder.AnimationName = Clip.m_AnimationName; + recorder.StartRecording(getTime); + } + else if (getTime > recorder.LastRecordedTime) + { + recorder?.UpdateRecording(getTime); + } + } + + public GLTFRecorderClip Clip; + private bool m_isPaused = false; + + private static bool IsPlaying() + { + #if UNITY_EDITOR + return EditorApplication.isPlaying; + #else + return true; + #endif + } + + public override void OnPlayableDestroy(Playable playable) + { + if (!IsPlaying()) return; + + StopRecording(playable.GetTime()); + } + + public override void OnGraphStart(Playable playable) + { + if (!IsPlaying()) return; + + BeginRecording(playable.GetTime(), Clip.GetExportRoot(playable.GetGraph())); + } + + public override void OnGraphStop(Playable playable) + { + if (!IsPlaying()) return; + + StopRecording(playable.GetTime()); + } + + public override void ProcessFrame(Playable playable, FrameData info, object playerData) + { + if (!IsPlaying()) return; + + double time = playable.GetTime(); + GLTFRecorderHelper.Add(() => OnFrameEnd(time, playable, info, playerData)); + } + + public override void OnBehaviourPlay(Playable playable, FrameData info) + { + m_isPaused = false; + } + + public override void OnBehaviourPause(Playable playable, FrameData info) + { + m_isPaused = true; + } + + public void OnFrameEnd(double time, Playable playable, FrameData info, object playerData) + { + if (!playable.IsValid()) return; + var root = Clip.GetExportRoot(playable.GetGraph()); + if (!root || m_isPaused) return; + + ProcessRecording(time, root); + } + } +} + +#endif diff --git a/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs.meta b/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs.meta new file mode 100644 index 000000000..486ba233f --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c90c158375298a4b931f2f013dbf111 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Timeline/GLTFRecorderClip.cs b/Runtime/Scripts/Timeline/GLTFRecorderClip.cs new file mode 100644 index 000000000..8028d5d9a --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderClip.cs @@ -0,0 +1,37 @@ +#if HAVE_TIMELINE + +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +namespace UnityGLTF.Timeline +{ + [System.ComponentModel.DisplayName("glTF Recorder Clip")] + public class GLTFRecorderClip : PlayableAsset, ITimelineClipAsset + { + public ExposedReference m_exportRoot; + public string m_File = "Assets/Recording.glb"; + public string m_AnimationName = "Recording"; + public int m_CaptureFrameRate = 60; + public bool m_RecordBlendShapes = true; + [Tooltip("Enable the KHR_animation_pointer extension. This allows recording material and script properties, but is not supported in all viewers.")] + public bool m_RecordAnimationPointer = false; + + public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) + { + var ret = ScriptPlayable.Create(graph); + var behaviour = ret.GetBehaviour(); + behaviour.Clip = this; // TOD check if needed + return ret; + } + + public ClipCaps clipCaps { get; } + + public Transform GetExportRoot(PlayableGraph graph) + { + return m_exportRoot.Resolve(graph.GetResolver()); + } + } +} + +#endif diff --git a/Runtime/Scripts/Timeline/GLTFRecorderClip.cs.meta b/Runtime/Scripts/Timeline/GLTFRecorderClip.cs.meta new file mode 100644 index 000000000..7f0668b33 --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderClip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7ec2229f5635a54cbc23eec87b45654 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs b/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs new file mode 100644 index 000000000..adb964d29 --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityGLTF.Timeline +{ + [ExecuteInEditMode] + internal class GLTFRecorderHelper : MonoBehaviour + { + public static void Add(Action callback) + { + GetInstance().queuedActions.Add(callback); + } + + private List queuedActions = new List(); + + private static GLTFRecorderHelper instance; + + static GLTFRecorderHelper GetInstance() + { + if (instance != null) return instance; +#if UNITY_2023_1_OR_NEWER + instance = FindFirstObjectByType(); + #else + instance = FindObjectOfType(); +#endif + if (instance != null) return instance; + + var go = new GameObject + { + name = "GLTF Recorder Helper", + hideFlags = HideFlags.HideAndDontSave, + }; + instance = go.AddComponent(); + + return instance; + } + + private IEnumerator WaitForEndOfFrame() + { + yield return new WaitForEndOfFrame(); + foreach (var callback in queuedActions) + { + try + { + callback(); + } + catch (Exception ex) + { + Debug.LogException(ex); + } + } + + queuedActions.Clear(); + } + + private void LateUpdate() + { + StartCoroutine(WaitForEndOfFrame()); + } + } +} diff --git a/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs.meta b/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs.meta new file mode 100644 index 000000000..60114845c --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fba5af8565ac464587d0d4663f151239 +timeCreated: 1646945202 \ No newline at end of file diff --git a/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs b/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs new file mode 100644 index 000000000..04433400d --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs @@ -0,0 +1,16 @@ +#if HAVE_TIMELINE + +using UnityEngine.Timeline; + +namespace UnityGLTF.Timeline +{ + [System.Serializable] + [TrackClipType(typeof(GLTFRecorderClip))] + [TrackColor(0.7f, 0.0f, 0.0f)] + public class GLTFRecorderTrack : TrackAsset + { + + } +} + +#endif diff --git a/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs.meta b/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs.meta new file mode 100644 index 000000000..36d14bec2 --- /dev/null +++ b/Runtime/Scripts/Timeline/GLTFRecorderTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f4885dbb1716a34b84ab7851fb37ccd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/URIHelper.cs b/Runtime/Scripts/URIHelper.cs new file mode 100644 index 000000000..a7acee016 --- /dev/null +++ b/Runtime/Scripts/URIHelper.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; +using UnityEngine; + +namespace UnityGLTF +{ + public static class URIHelper + { + private const string Base64StringInitializer = "^data:[a-z-]+/[a-z-]+;base64,"; + + /// + /// Get the absolute path to a gltf uri reference. + /// + /// The path to the gltf file + /// A path without the filename or extension + public static string AbsoluteUriPath(Uri uri) + { + var partialPath = uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Segments[uri.Segments.Length - 1].Length); + return partialPath; + } + + public static string GetFileFromUri(Uri uri) + { + return uri.Segments[uri.Segments.Length - 1]; + } + + /// + /// Gets a directory name from a file path + /// + /// Full path of a file + /// The name of directory file is in + public static string GetDirectoryName(string fullPath) + { + var fileName = Path.GetFileName(fullPath); + return fullPath.Substring(0, fullPath.Length - fileName.Length); + } + + /// + /// Tries to parse the uri as a base 64 encoded string + /// + /// The string that represents the data + /// Returns the deencoded bytes + public static void TryParseBase64(string uri, out byte[] bufferData) + { + Regex regex = new Regex(Base64StringInitializer); + Match match = regex.Match(uri); + bufferData = null; + if (match.Success) + { + var base64Data = uri.Substring(match.Length); + bufferData = Convert.FromBase64String(base64Data); + } + } + + /// + /// Returns whether the input uri is base64 encoded + /// + /// The uri data + /// Whether the uri is base64 + public static bool IsBase64Uri(string uri) + { + Regex regex = new Regex(Base64StringInitializer); + Match match = regex.Match(uri); + return match.Success; + } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/URIHelper.cs.meta b/Runtime/Scripts/URIHelper.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/URIHelper.cs.meta rename to Runtime/Scripts/URIHelper.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps.meta b/Runtime/Scripts/UniformMaps.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps.meta rename to Runtime/Scripts/UniformMaps.meta diff --git a/Runtime/Scripts/UniformMaps/BaseGraphMap.cs b/Runtime/Scripts/UniformMaps/BaseGraphMap.cs new file mode 100644 index 000000000..9946ba463 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/BaseGraphMap.cs @@ -0,0 +1,272 @@ +using GLTF.Schema; +using UnityEngine; +using UnityEngine.Rendering; + +namespace UnityGLTF +{ + public abstract class BaseGraphMap : IUniformMap + { + public abstract IUniformMap Clone(); + + protected BaseGraphMap(Material mat) + { + _material = mat; + } + + protected BaseGraphMap(string shaderName, string fallbackGuid) + { + var s = Shader.Find(shaderName); + +#if UNITY_EDITOR + // workaround for first-import issues with Shader.Find and import order + if (!s) + s = UnityEditor.AssetDatabase.LoadAssetAtPath(UnityEditor.AssetDatabase.GUIDToAssetPath(fallbackGuid)); +#endif + + if (!s) + throw new ShaderNotFoundException(shaderName + " not found. Did you forget to add it to the build?"); + + _material = new Material(s); + } + + public Material Material => _material; + internal Material _material; + + private AlphaMode _alphaMode; + public virtual AlphaMode AlphaMode + { + get { return _alphaMode; } + set + { + if (value == AlphaMode.MASK) + { + _material.SetOverrideTag("RenderType", "TransparentCutout"); + _material.SetFloat("_Mode", 1); + _material.SetInt("_SrcBlend", (int)BlendMode.One); + _material.SetInt("_DstBlend", (int)BlendMode.Zero); + _material.SetInt("_BUILTIN_SrcBlend", (int)BlendMode.One); + _material.SetInt("_BUILTIN_DstBlend", (int)BlendMode.Zero); + _material.SetInt("_ZWrite", 1); + _material.SetInt("_BUILTIN_ZWrite", 1); + _material.SetInt("_AlphaClip", 1); + _material.SetInt("_BUILTIN_AlphaClip", 1); + _material.EnableKeyword("_ALPHATEST_ON"); + _material.EnableKeyword("_BUILTIN_ALPHATEST_ON"); + _material.DisableKeyword("_ALPHABLEND_ON"); + _material.DisableKeyword("_BUILTIN_ALPHABLEND_ON"); + _material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + _material.DisableKeyword("_BUILTIN_ALPHAPREMULTIPLY_ON"); + _material.renderQueue = (int)RenderQueue.AlphaTest; + if (_material.HasProperty("_Cutoff")) + _material.SetFloat("_Cutoff", (float)AlphaCutoff); + if (_material.HasProperty("alphaCutoff")) + _material.SetFloat("alphaCutoff", (float)AlphaCutoff); + + SetAlphaModeMask(_material, true); + } + else if (value == AlphaMode.BLEND) + { + _material.SetOverrideTag("RenderType", "Transparent"); + _material.SetFloat("_Mode", 2); + _material.SetInt("_SrcBlend", (int)BlendMode.SrcAlpha); + _material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + _material.SetInt("_BUILTIN_SrcBlend", (int)BlendMode.SrcAlpha); + _material.SetInt("_BUILTIN_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + _material.SetInt("_ZWrite", 0); + _material.SetInt("_BUILTIN_ZWrite", 0); + _material.SetInt("_AlphaClip", 0); + _material.SetInt("_BUILTIN_AlphaClip", 0); + _material.DisableKeyword("_ALPHATEST_ON"); + _material.DisableKeyword("_BUILTIN_ALPHATEST_ON"); + _material.EnableKeyword("_ALPHABLEND_ON"); + _material.EnableKeyword("_BUILTIN_ALPHABLEND_ON"); + _material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + _material.DisableKeyword("_BUILTIN_ALPHAPREMULTIPLY_ON"); + _material.renderQueue = (int)RenderQueue.Transparent; + _material.EnableKeyword("_SURFACE_TYPE_TRANSPARENT"); + _material.EnableKeyword("_BUILTIN_SURFACE_TYPE_TRANSPARENT"); + + SetShaderModeBlend(_material); + } + else + { + _material.SetOverrideTag("RenderType", "Opaque"); + _material.SetFloat("_Mode", 0); + _material.SetInt("_SrcBlend", (int)BlendMode.One); + _material.SetInt("_DstBlend", (int)BlendMode.Zero); + _material.SetInt("_BUILTIN_SrcBlend", (int)BlendMode.One); + _material.SetInt("_BUILTIN_DstBlend", (int)BlendMode.Zero); + _material.SetInt("_ZWrite", 1); + _material.SetInt("_BUILTIN_ZWrite", 1); + _material.SetInt("_AlphaClip", 0); + _material.SetInt("_BUILTIN_AlphaClip", 0); + _material.DisableKeyword("_ALPHATEST_ON"); + _material.DisableKeyword("_ALPHABLEND_ON"); + _material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + _material.DisableKeyword("_BUILTIN_ALPHATEST_ON"); + _material.DisableKeyword("_BUILTIN_ALPHABLEND_ON"); + _material.DisableKeyword("_BUILTIN_ALPHAPREMULTIPLY_ON"); + _material.renderQueue = (int)RenderQueue.Geometry; + } + + _alphaMode = value; + } + } + + protected void SetDoubleSided (Material material, bool doubleSided) + { + material.doubleSidedGI = doubleSided; + var mode = doubleSided ? (int)CullMode.Off : (int)CullMode.Back; + material.SetFloat(cullPropId, mode); + material.SetFloat(cullModePropId, mode); + material.SetFloat(cullModePropIdBuiltin, mode); + } + + public static readonly int cutoffPropId = Shader.PropertyToID("_Cutoff"); + + protected void SetAlphaModeMask(Material material, bool isMask) { + material.SetFloat(cutoffPropId, isMask ? 1 : 0); + // #if USING_HDRP_10_OR_NEWER || USING_URP_12_OR_NEWER + material.EnableKeyword(KW_ALPHATEST_ON); + material.EnableKeyword(KW_ALPHATEST_ON_BUILTIN); + material.SetOverrideTag(TAG_RENDER_TYPE, TAG_RENDER_TYPE_CUTOUT); + material.SetFloat(k_ZTestGBufferPropId, (int)CompareFunction.Equal); //3 + // #endif + material.SetFloat(k_AlphaClip, 1); + material.SetFloat(k_AlphaClipBuiltin, 1); + if (isMask) material.EnableKeyword(KW_ALPHACLIP_ON_BUILTIN); + else material.DisableKeyword(KW_ALPHACLIP_ON_BUILTIN); + } + + static readonly int cullPropId = Shader.PropertyToID("_Cull"); + static readonly int cullModePropId = Shader.PropertyToID("_CullMode"); + static readonly int cullModePropIdBuiltin = Shader.PropertyToID("_BUILTIN_CullMode"); + static readonly int k_AlphaClip = Shader.PropertyToID("_AlphaClip"); + static readonly int k_AlphaClipBuiltin = Shader.PropertyToID("_BUILTIN_AlphaClip"); + static readonly int k_Surface = Shader.PropertyToID("_Surface"); + static readonly int k_SurfaceBuiltin = Shader.PropertyToID("_BUILTIN_Surface"); + static readonly int k_AlphaDstBlendPropId = Shader.PropertyToID("_AlphaDstBlend"); + static readonly int k_ZTestGBufferPropId = Shader.PropertyToID("_ZTestGBuffer"); + static readonly int srcBlendPropId = Shader.PropertyToID("_SrcBlend"); + static readonly int dstBlendPropId = Shader.PropertyToID("_DstBlend"); + static readonly int zWritePropId = Shader.PropertyToID("_ZWrite"); + + const string TAG_RENDER_TYPE = "RenderType"; + const string TAG_RENDER_TYPE_CUTOUT = "TransparentCutout"; + const string TAG_RENDER_TYPE_OPAQUE = "Opaque"; + const string TAG_RENDER_TYPE_FADE = "Fade"; + const string TAG_RENDER_TYPE_TRANSPARENT = "Transparent"; + const string KW_ALPHATEST_ON = "_ALPHATEST_ON"; + const string KW_ALPHATEST_ON_BUILTIN = "_BUILTIN_ALPHATEST_ON"; + const string KW_ALPHACLIP_ON_BUILTIN = "_BUILTIN_AlphaClip"; + const string KW_DISABLE_SSR_TRANSPARENT = "_DISABLE_SSR_TRANSPARENT"; + const string KW_ENABLE_FOG_ON_TRANSPARENT = "_ENABLE_FOG_ON_TRANSPARENT"; + const string KW_SURFACE_TYPE_TRANSPARENT = "_SURFACE_TYPE_TRANSPARENT"; + const string KW_SURFACE_TYPE_TRANSPARENT_BUILTIN = "_BUILTIN_SURFACE_TYPE_TRANSPARENT"; + const string k_ShaderPassTransparentDepthPrepass = "TransparentDepthPrepass"; + const string k_ShaderPassTransparentDepthPostpass = "TransparentDepthPostpass"; + const string k_ShaderPassTransparentBackface = "TransparentBackface"; + const string k_ShaderPassRayTracingPrepass = "RayTracingPrepass"; + const string k_ShaderPassDepthOnlyPass = "DepthOnly"; + + protected void SetShaderModeBlend(Material material) + { + material.SetOverrideTag(TAG_RENDER_TYPE, TAG_RENDER_TYPE_TRANSPARENT); + material.EnableKeyword(KW_SURFACE_TYPE_TRANSPARENT); + material.EnableKeyword(KW_SURFACE_TYPE_TRANSPARENT_BUILTIN); + material.EnableKeyword(KW_DISABLE_SSR_TRANSPARENT); + material.EnableKeyword(KW_ENABLE_FOG_ON_TRANSPARENT); + material.SetShaderPassEnabled(k_ShaderPassTransparentDepthPrepass, false); + material.SetShaderPassEnabled(k_ShaderPassTransparentDepthPostpass, false); + material.SetShaderPassEnabled(k_ShaderPassTransparentBackface, false); + material.SetShaderPassEnabled(k_ShaderPassRayTracingPrepass, false); + material.SetShaderPassEnabled(k_ShaderPassDepthOnlyPass, false); + material.SetFloat(srcBlendPropId, (int) BlendMode.SrcAlpha);//5 + material.SetFloat(dstBlendPropId, (int)BlendMode.OneMinusSrcAlpha);//10 + material.SetFloat(k_ZTestGBufferPropId, (int)CompareFunction.Equal); //3 + material.SetFloat(k_AlphaDstBlendPropId, (int)BlendMode.OneMinusSrcAlpha);//10 + material.SetFloat(k_Surface, 1); + material.SetFloat(k_SurfaceBuiltin, 1); + material.SetFloat(zWritePropId, 0); + } + + public double AlphaCutoff + { + get => _material.GetFloat("alphaCutoff"); + set + { + _material.SetFloat("alphaCutoff", (float) value); +#if !UNITY_2021_2_OR_NEWER + // PBRGraph/UnlitGraph always have alphaCutoff on 2020.x, so we need to set it to 0 for non-masked modes + if (_alphaMode != AlphaMode.MASK) + _material.SetFloat("alphaCutoff", 0f); +#endif + } + } + + public virtual bool DoubleSided + { + get { return +#if UNITY_2019_3_OR_NEWER + !GraphicsSettings.currentRenderPipeline ? + _material.GetInt(cullModePropIdBuiltin) == (int)CullMode.Off : +#endif + _material.GetInt(cullPropId) == (int)CullMode.Off; } + set { SetDoubleSided(_material, value); } + } + + public virtual bool VertexColorsEnabled + { + get { return _material.IsKeywordEnabled("_VERTEX_COLORS_ON"); } + set + { + if (value) + _material.EnableKeyword("_VERTEX_COLORS_ON"); + else + _material.DisableKeyword("_VERTEX_COLORS_ON"); + } + } + + public Texture BaseColorTexture + { + get => _material.GetTexture("baseColorTexture"); + set => _material.SetTexture("baseColorTexture", value); + } + + public int BaseColorTexCoord + { + get => (int) _material.GetFloat("baseColorTextureTexCoord"); + set => _material.SetFloat("baseColorTextureTexCoord", Mathf.RoundToInt(value)); + } + + public Vector2 BaseColorXOffset + { + get => _material.GetTextureOffset("baseColorTexture"); + set => _material.SetTextureOffset("baseColorTexture", value); + } + + public double BaseColorXRotation + { + get => _material.GetFloat("baseColorTextureRotation"); + set => _material.SetFloat("baseColorTextureRotation", (float) value); + } + + public Vector2 BaseColorXScale + { + get => _material.GetTextureScale("baseColorTexture"); + set => _material.SetTextureScale("baseColorTexture", value); + } + + public int BaseColorXTexCoord + { + get => (int) _material.GetFloat("baseColorTextureTexCoord"); + set => _material.SetFloat("baseColorTextureTexCoord", Mathf.RoundToInt(value)); + } + + public Color BaseColorFactor + { + get => _material.GetColor("baseColorFactor"); + set => _material.SetColor("baseColorFactor", value); + } + } +} diff --git a/Runtime/Scripts/UniformMaps/BaseGraphMap.cs.meta b/Runtime/Scripts/UniformMaps/BaseGraphMap.cs.meta new file mode 100644 index 000000000..ce280bb93 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/BaseGraphMap.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3453f34a8c4d4d4b86685f873378869c +timeCreated: 1657891795 \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs b/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs similarity index 89% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs rename to Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs index 7dc2ea465..4ce0e3b51 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs +++ b/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs @@ -6,8 +6,8 @@ public class MetalRough2StandardMap : StandardMap, IMetalRoughUniformMap { private Vector2 baseColorOffset = new Vector2(0, 0); - public MetalRough2StandardMap(int MaxLOD = 1000) : base("Standard", MaxLOD) { } - protected MetalRough2StandardMap(string shaderName, int MaxLOD = 1000) : base(shaderName, MaxLOD) { } + public MetalRough2StandardMap(int MaxLOD = 1000) : base("Standard", null, MaxLOD) { } + protected MetalRough2StandardMap(string shaderName, string shaderGuid, int MaxLOD = 1000) : base(shaderName, shaderGuid, MaxLOD) { } protected MetalRough2StandardMap(Material m, int MaxLOD = 1000) : base(m, MaxLOD) { } public virtual Texture BaseColorTexture @@ -28,8 +28,7 @@ public virtual Vector2 BaseColorXOffset get { return baseColorOffset; } set { baseColorOffset = value; - var unitySpaceVec = new Vector2(baseColorOffset.x, 1 - BaseColorXScale.y - baseColorOffset.y); - _material.SetTextureOffset("_MainTex", unitySpaceVec); + _material.SetTextureOffset("_MainTex", value); } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs.meta b/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs.meta rename to Runtime/Scripts/UniformMaps/MetalRough2StandardMap.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRoughMap.cs b/Runtime/Scripts/UniformMaps/MetalRoughMap.cs similarity index 84% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRoughMap.cs rename to Runtime/Scripts/UniformMaps/MetalRoughMap.cs index 8482d9851..6199db3fa 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRoughMap.cs +++ b/Runtime/Scripts/UniformMaps/MetalRoughMap.cs @@ -1,7 +1,4 @@ -using System; -using UnityEngine; -using AlphaMode = GLTF.Schema.AlphaMode; -using CullMode = UnityEngine.Rendering.CullMode; +using UnityEngine; namespace UnityGLTF { @@ -9,8 +6,8 @@ public class MetalRoughMap : MetalRough2StandardMap { private Vector2 metalRoughOffset = new Vector2(0, 0); - public MetalRoughMap(int MaxLOD = 1000) : base("GLTF/PbrMetallicRoughness", MaxLOD) { } - public MetalRoughMap(string shaderName, int MaxLOD = 1000) : base(shaderName, MaxLOD) { } + public MetalRoughMap(int MaxLOD = 1000) : base("GLTF/PbrMetallicRoughness", "9836e4430eb58204086d7d1440e16a4f", MaxLOD) { } + public MetalRoughMap(string shaderName, int MaxLOD = 1000) : base(shaderName, "9836e4430eb58204086d7d1440e16a4f", MaxLOD) { } protected MetalRoughMap(Material m, int MaxLOD = 1000) : base(m, MaxLOD) { } public override int NormalTexCoord @@ -59,8 +56,7 @@ public override Vector2 MetallicRoughnessXOffset set { metalRoughOffset = value; - var unitySpaceVec = new Vector2(metalRoughOffset.x, 1 - MetallicRoughnessXScale.y - metalRoughOffset.y); - _material.SetTextureOffset("_MetallicGlossMap", unitySpaceVec); + _material.SetTextureOffset("_MetallicGlossMap", value); } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRoughMap.cs.meta b/Runtime/Scripts/UniformMaps/MetalRoughMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/MetalRoughMap.cs.meta rename to Runtime/Scripts/UniformMaps/MetalRoughMap.cs.meta diff --git a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs new file mode 100644 index 000000000..9b18e909b --- /dev/null +++ b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs @@ -0,0 +1,556 @@ +using UnityEngine; + +namespace UnityGLTF +{ + public class PBRGraphMap : BaseGraphMap, IMetalRoughUniformMap, IVolumeMap, ITransmissionMap, IIORMap, IIridescenceMap, ISpecularMap, IClearcoatMap + { + private const string PBRGraphGuid = "478ce3626be7a5f4ea58d6b13f05a2e4"; + + public PBRGraphMap() : this("UnityGLTF/PBRGraph") {} + + protected PBRGraphMap(string shaderName) : base(shaderName, PBRGraphGuid) { } + +#if !UNITY_2021_1_OR_NEWER + private const string PBRGraphTransparentGuid = "0a931320a74ca574b91d2d7d4557dcf1"; + private const string PBRGraphTransparentDoubleGuid = "54352a53405971b41a6587615f947085"; + private const string PBRGraphDoubleGuid = "8bc739b14fe811644abb82057b363ba8"; + + public PBRGraphMap(bool transparent, bool doubleSided) : base( + "UnityGLTF/PBRGraph" + (transparent ? "-Transparent" : "") + (doubleSided ? "-Double" : ""), + (transparent && doubleSided ? PBRGraphTransparentDoubleGuid : transparent ? PBRGraphTransparentGuid : doubleSided ? PBRGraphDoubleGuid : PBRGraphGuid)) { } +#endif + + public PBRGraphMap(Material mat) : base(mat) { } + + public override IUniformMap Clone() + { + var clone = new PBRGraphMap(new Material(_material)); + clone.Material.shaderKeywords = _material.shaderKeywords; + return clone; + } + + public Texture NormalTexture + { + get => _material.GetTexture("normalTexture"); + set => _material.SetTexture("normalTexture", value); + } + + public int NormalTexCoord + { + get => (int) _material.GetFloat("normalTextureTexCoord"); + set => _material.SetFloat("normalTextureTexCoord", Mathf.RoundToInt(value)); + } + + public double NormalTexScale + { + get => _material.GetFloat("normalScale"); + set => _material.SetFloat("normalScale", (float) value); + } + + public Vector2 NormalXOffset + { + get => _material.GetTextureOffset("normalTexture"); + set => _material.SetTextureOffset("normalTexture", value); + } + + public double NormalXRotation + { + get => _material.GetFloat("normalTextureRotation"); + set => _material.SetFloat("normalTextureRotation", (float) value); + } + + public Vector2 NormalXScale + { + get => _material.GetTextureScale("normalTexture"); + set => _material.SetTextureScale("normalTexture", value); + } + + public int NormalXTexCoord + { + get => (int) _material.GetFloat("normalTextureTexCoord"); + set => _material.SetFloat("normalTextureTexCoord", Mathf.RoundToInt(value)); + } + + public Texture OcclusionTexture + { + get => _material.GetTexture("occlusionTexture"); + set => _material.SetTexture("occlusionTexture", value); + } + + public int OcclusionTexCoord + { + get => (int) _material.GetFloat("occlusionTextureTexCoord"); + set => _material.SetFloat("occlusionTextureTexCoord", Mathf.RoundToInt(value)); + } + + public double OcclusionTexStrength + { + get => _material.GetFloat("occlusionStrength"); + set => _material.SetFloat("occlusionStrength", (float) value); + } + + public Vector2 OcclusionXOffset + { + get => _material.GetTextureOffset("occlusionTexture"); + set => _material.SetTextureOffset("occlusionTexture", value); + } + + public double OcclusionXRotation + { + get => _material.GetFloat("occlusionTextureRotation"); + set => _material.SetFloat("occlusionTextureRotation", (float) value); + } + + public Vector2 OcclusionXScale + { + get => _material.GetTextureScale("occlusionTexture"); + set => _material.SetTextureScale("occlusionTexture", value); + } + + public int OcclusionXTexCoord + { + get => (int) _material.GetFloat("occlusionTextureTexCoord"); + set => _material.SetFloat("occlusionTextureTexCoord", Mathf.RoundToInt(value)); + } + + public Texture EmissiveTexture + { + get => _material.GetTexture("emissiveTexture"); + set => _material.SetTexture("emissiveTexture", value); + } + + public int EmissiveTexCoord + { + get => (int)_material.GetFloat("emissiveTextureTexCoord"); + set => _material.SetFloat("emissiveTextureTexCoord", (float) value); + } + + public Color EmissiveFactor + { + get => _material.GetColor("emissiveFactor"); + set => _material.SetColor("emissiveFactor", value); + } + + public Vector2 EmissiveXOffset + { + get => _material.GetTextureOffset("emissiveTexture"); + set => _material.SetTextureOffset("emissiveTexture", value); + } + + public double EmissiveXRotation + { + get => _material.GetFloat("emissiveTextureRotation"); + set => _material.SetFloat("emissiveTextureRotation", (float) value); + } + + public Vector2 EmissiveXScale + { + get => _material.GetTextureScale("emissiveTexture"); + set => _material.SetTextureScale("emissiveTexture", value); + } + + public int EmissiveXTexCoord + { + get => (int)_material.GetFloat("emissiveTextureTexCoord"); + set => _material.SetFloat("emissiveTextureTexCoord", (float) value); + } + + public Texture MetallicRoughnessTexture + { + get => _material.GetTexture("metallicRoughnessTexture"); + set => _material.SetTexture("metallicRoughnessTexture", value); + } + + public int MetallicRoughnessTexCoord + { + get => (int)_material.GetFloat("metallicRoughnessTextureTexCoord"); + set => _material.SetFloat("metallicRoughnessTextureTexCoord", (float) value); + } + + public Vector2 MetallicRoughnessXOffset + { + get => _material.GetTextureOffset("metallicRoughnessTexture"); + set => _material.SetTextureOffset("metallicRoughnessTexture", value); + } + + public double MetallicRoughnessXRotation + { + get => _material.GetFloat("metallicRoughnessTextureRotation"); + set => _material.SetFloat("metallicRoughnessTextureRotation", (float) value); + } + + public Vector2 MetallicRoughnessXScale + { + get => _material.GetTextureScale("metallicRoughnessTexture"); + set => _material.SetTextureScale("metallicRoughnessTexture", value); + } + + public int MetallicRoughnessXTexCoord + { + get => (int)_material.GetFloat("metallicRoughnessTextureTexCoord"); + set => _material.SetFloat("metallicRoughnessTextureTexCoord", (float) value); + } + + public double MetallicFactor + { + get => _material.GetFloat("metallicFactor"); + set => _material.SetFloat("metallicFactor", (float) value); + } + + public double RoughnessFactor + { + get => _material.GetFloat("roughnessFactor"); + set => _material.SetFloat("roughnessFactor", (float) value); + } + + public double ThicknessFactor + { + get => _material.GetFloat("thicknessFactor"); + set => _material.SetFloat("thicknessFactor", (float) value); + } + + public Texture ThicknessTexture + { + get => _material.GetTexture("thicknessTexture"); + set => _material.SetTexture("thicknessTexture", value); + } + + public double ThicknessTextureRotation + { + get => _material.GetFloat("thicknessTextureRotation"); + set => _material.SetFloat("thicknessTextureRotation", (float) value); + } + + public Vector2 ThicknessTextureOffset + { + get => _material.GetTextureOffset("thicknessTexture"); + set => _material.SetTextureOffset("thicknessTexture", value); + } + + public Vector2 ThicknessTextureScale + { + get => _material.GetTextureScale("thicknessTexture"); + set => _material.SetTextureScale("thicknessTexture", value); + } + + public int ThicknessTextureTexCoord + { + get => (int)_material.GetFloat("thicknessTextureTexCoord"); + set => _material.SetFloat("thicknessTextureTexCoord", (float) value); + } + + public double AttenuationDistance + { + get => _material.GetFloat("attenuationDistance"); + set => _material.SetFloat("attenuationDistance", (float) value); + } + + public Color AttenuationColor + { + get => _material.GetColor("attenuationColor"); + set => _material.SetColor("attenuationColor", value); + } + + public double TransmissionFactor + { + get => _material.GetFloat("transmissionFactor"); + set => _material.SetFloat("transmissionFactor", (float) value); + } + + public Texture TransmissionTexture + { + get => _material.GetTexture("transmissionTexture"); + set => _material.SetTexture("transmissionTexture", value); + } + + public double TransmissionTextureRotation + { + get => _material.GetFloat("transmissionTextureRotation"); + set => _material.SetFloat("transmissionTextureRotation", (float) value); + } + + public Vector2 TransmissionTextureOffset + { + get => _material.GetTextureOffset("transmissionTexture"); + set => _material.SetTextureOffset("transmissionTexture", value); + } + + public Vector2 TransmissionTextureScale + { + get => _material.GetTextureScale("transmissionTexture"); + set => _material.SetTextureScale("transmissionTexture", value); + } + + public int TransmissionTextureTexCoord + { + get => (int)_material.GetFloat("transmissionTextureTexCoord"); + set => _material.SetFloat("transmissionTextureTexCoord", (float) value); + } + + public double IOR + { + get => _material.GetFloat("ior"); + set => _material.SetFloat("ior", (float) value); + } + + public double IridescenceFactor + { + get => _material.GetFloat("iridescenceFactor"); + set => _material.SetFloat("iridescenceFactor", (float) value); + } + + public double IridescenceIor + { + get => _material.GetFloat("iridescenceIor"); + set => _material.SetFloat("iridescenceIor", (float) value); + } + + public double IridescenceThicknessMinimum + { + get => _material.GetFloat("iridescenceThicknessMinimum"); + set => _material.SetFloat("iridescenceThicknessMinimum", (float) value); + } + + public double IridescenceThicknessMaximum + { + get => _material.GetFloat("iridescenceThicknessMaximum"); + set => _material.SetFloat("iridescenceThicknessMaximum", (float) value); + } + + public Texture IridescenceTexture + { + get => _material.GetTexture("iridescenceTexture"); + set => _material.SetTexture("iridescenceTexture", value); + } + + public double IridescenceTextureRotation + { + get => _material.GetFloat("iridescenceTextureRotation"); + set => _material.SetFloat("iridescenceTextureRotation", (float) value); + } + + public Vector2 IridescenceTextureOffset + { + get => _material.GetTextureOffset("iridescenceTexture"); + set => _material.SetTextureOffset("iridescenceTexture", value); + } + + public Vector2 IridescenceTextureScale + { + get => _material.GetTextureScale("iridescenceTexture"); + set => _material.SetTextureScale("iridescenceTexture", value); + } + + public int IridescenceTextureTexCoord + { + get => (int)_material.GetFloat("iridescenceTextureTexCoord"); + set => _material.SetFloat("iridescenceTextureTexCoord", (float) value); + } + + public Texture IridescenceThicknessTexture + { + get => _material.GetTexture("iridescenceThicknessTexture"); + set => _material.SetTexture("iridescenceThicknessTexture", value); + } + + public double IridescenceThicknessTextureRotation + { + get => _material.GetFloat("iridescenceThicknessTextureRotation"); + set => _material.SetFloat("iridescenceThicknessTextureRotation", (float) value); + } + + public Vector2 IridescenceThicknessTextureOffset + { + get => _material.GetTextureOffset("iridescenceThicknessTexture"); + set => _material.SetTextureOffset("iridescenceThicknessTexture", value); + } + + public Vector2 IridescenceThicknessTextureScale + { + get => _material.GetTextureScale("iridescenceThicknessTexture"); + set => _material.SetTextureScale("iridescenceThicknessTexture", value); + } + + public int IridescenceThicknessTextureTexCoord + { + get => (int)_material.GetFloat("iridescenceThicknessTextureTexCoord"); + set => _material.SetFloat("iridescenceThicknessTextureTexCoord", (float) value); + } + + public double SpecularFactor + { + get => _material.GetFloat("specularFactor"); + set => _material.SetFloat("specularFactor", (float) value); + } + + public Texture SpecularTexture + { + get => _material.GetTexture("specularTexture"); + set=> _material.SetTexture("specularTexture", value); + } + + public double SpecularTextureRotation + { + get => _material.GetFloat("specularTextureRotation"); + set => _material.SetFloat("specularTextureRotation", (float) value); + } + + public Vector2 SpecularTextureOffset + { + get => _material.GetTextureOffset("specularTexture"); + set => _material.SetTextureOffset("specularTexture", value); + } + + public Vector2 SpecularTextureScale + { + get => _material.GetTextureScale("specularTexture"); + set => _material.SetTextureScale("specularTexture", value); + } + + public int SpecularTextureTexCoord + { + get => (int)_material.GetFloat("specularTextureTexCoord"); + set => _material.SetFloat("specularTextureTexCoord", (float) value); + } + + public Color SpecularColorFactor + { + get => _material.GetColor("specularColorFactor"); + set => _material.SetColor("specularColorFactor", value); + } + + public Texture SpecularColorTexture + { + get => _material.GetTexture("specularColorTexture"); + set => _material.SetTexture("specularColorTexture", value); + } + + public double SpecularColorTextureRotation + { + get => _material.GetFloat("specularColorTextureRotation"); + set => _material.SetFloat("specularColorTextureRotation", (float) value); + } + + public Vector2 SpecularColorTextureOffset + { + get => _material.GetTextureOffset("specularColorTexture"); + set => _material.SetTextureOffset("specularColorTexture", value); + } + + public Vector2 SpecularColorTextureScale + { + get => _material.GetTextureScale("specularColorTexture"); + set => _material.SetTextureScale("specularColorTexture", value); + } + + public int SpecularColorTextureTexCoord + { + get => (int)_material.GetFloat("specularColorTextureTexCoord"); + set => _material.SetFloat("specularColorTextureTexCoord", (float) value); + } + + public double ClearcoatFactor + { + get => _material.GetFloat("clearcoatFactor"); + set => _material.SetFloat("clearcoatFactor", (float) value); + } + + public Texture ClearcoatTexture + { + get => _material.GetTexture("clearcoatTexture"); + set => _material.SetTexture("clearcoatTexture", value); + } + + public double ClearcoatTextureRotation + { + get => _material.GetFloat("clearcoatTextureRotation"); + set => _material.SetFloat("clearcoatTextureRotation", (float) value); + } + + public Vector2 ClearcoatTextureOffset + { + get => _material.GetTextureOffset("clearcoatTexture"); + set => _material.SetTextureOffset("clearcoatTexture", value); + } + + public Vector2 ClearcoatTextureScale + { + get => _material.GetTextureScale("clearcoatTexture"); + set => _material.SetTextureScale("clearcoatTexture", value); + } + + public int ClearcoatTextureTexCoord + { + get => (int)_material.GetFloat("clearcoatTextureTexCoord"); + set => _material.SetFloat("clearcoatTextureTexCoord", (float) value); + } + + public double ClearcoatRoughnessFactor + { + get => _material.GetFloat("clearcoatRoughnessFactor"); + set => _material.SetFloat("clearcoatRoughnessFactor", (float) value); + } + + public Texture ClearcoatRoughnessTexture + { + get => _material.GetTexture("clearcoatRoughnessTexture"); + set => _material.SetTexture("clearcoatRoughnessTexture", value); + } + + public double ClearcoatRoughnessTextureRotation + { + get => _material.GetFloat("clearcoatRoughnessTextureRotation"); + set => _material.SetFloat("clearcoatRoughnessTextureRotation", (float) value); + } + + public Vector2 ClearcoatRoughnessTextureOffset + { + get => _material.GetTextureOffset("clearcoatRoughnessTexture"); + set => _material.SetTextureOffset("clearcoatRoughnessTexture", value); + } + + public Vector2 ClearcoatRoughnessTextureScale + { + get => _material.GetTextureScale("clearcoatRoughnessTexture"); + set => _material.SetTextureScale("clearcoatRoughnessTexture", value); + } + + public int ClearcoatRoughnessTextureTexCoord + { + get => (int)_material.GetFloat("clearcoatRoughnessTextureTexCoord"); + set => _material.SetFloat("clearcoatRoughnessTextureTexCoord", (float) value); + } + + /* Clearcoat Normal Texture currently not supported + public Texture ClearcoatNormalTexture + { + get => _material.GetTexture("clearcoatNormalTexture"); + set => _material.SetTexture("clearcoatNormalTexture", value); + } + + public double ClearcoatNormalTextureRotation + { + get => _material.GetFloat("clearcoatNormalTextureRotation"); + set => _material.SetFloat("clearcoatNormalTextureRotation", (float) value); + } + + public Vector2 ClearcoatNormalTextureOffset + { + get => _material.GetTextureOffset("clearcoatNormalTexture"); + set => _material.SetTextureOffset("clearcoatNormalTexture", value); + } + + public Vector2 ClearcoatNormalTextureScale + { + get => _material.GetTextureScale("clearcoatNormalTexture"); + set => _material.SetTextureScale("clearcoatNormalTexture", value); + } + + public int ClearcoatNormalTextureTexCoord + { + get => (int)_material.GetFloat("clearcoatNormalTextureTexCoord"); + set => _material.SetFloat("clearcoatNormalTextureTexCoord", (float) value); + } + */ + } +} diff --git a/Runtime/Scripts/UniformMaps/PBRGraphMap.cs.meta b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs.meta new file mode 100644 index 000000000..6bfd4b2c6 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/PBRGraphMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3702d621b762aa4081cbc83b8349d31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs b/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs similarity index 86% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs rename to Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs index 341d883c3..823373ae7 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs +++ b/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs @@ -7,8 +7,8 @@ public class SpecGloss2StandardMap : StandardMap, ISpecGlossUniformMap private Vector2 diffuseOffset = new Vector2(0, 0); private Vector2 specGlossOffset = new Vector2(0, 0); - public SpecGloss2StandardMap(int MaxLOD = 1000) : base("Standard (Specular setup)", MaxLOD) { } - protected SpecGloss2StandardMap(string shaderName, int MaxLOD = 1000) : base(shaderName, MaxLOD) { } + public SpecGloss2StandardMap(int MaxLOD = 1000) : base("Standard (Specular setup)", null, MaxLOD) { } + protected SpecGloss2StandardMap(string shaderName, string shaderGuid, int MaxLOD = 1000) : base(shaderName, shaderGuid, MaxLOD) { } protected SpecGloss2StandardMap(Material m, int MaxLOD = 1000) : base(m, MaxLOD) { } public virtual Texture DiffuseTexture @@ -30,8 +30,7 @@ public virtual Vector2 DiffuseXOffset set { diffuseOffset = value; - var unitySpaceVec = new Vector2(diffuseOffset.x, 1 - DiffuseXScale.y - diffuseOffset.y); - _material.SetTextureOffset("_MainTex", unitySpaceVec); + _material.SetTextureOffset("_MainTex", value); } } @@ -87,8 +86,7 @@ public virtual Vector2 SpecularGlossinessXOffset set { specGlossOffset = value; - var unitySpaceVec = new Vector2(specGlossOffset.x, 1 - SpecularGlossinessXScale.y - specGlossOffset.y); - _material.SetTextureOffset("_SpecGlossMap", unitySpaceVec); + _material.SetTextureOffset("_SpecGlossMap", value); } } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs.meta b/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs.meta rename to Runtime/Scripts/UniformMaps/SpecGloss2StandardMap.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGlossMap.cs b/Runtime/Scripts/UniformMaps/SpecGlossMap.cs similarity index 85% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGlossMap.cs rename to Runtime/Scripts/UniformMaps/SpecGlossMap.cs index 7d158c20c..fd2d8da58 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGlossMap.cs +++ b/Runtime/Scripts/UniformMaps/SpecGlossMap.cs @@ -1,12 +1,11 @@ -using System; -using UnityEngine; +using UnityEngine; namespace UnityGLTF { public class SpecGlossMap : SpecGloss2StandardMap { - public SpecGlossMap(int MaxLOD = 1000) : base("GLTF/PbrSpecularGlossiness", MaxLOD) { } - public SpecGlossMap(string shaderName, int MaxLOD = 1000) : base(shaderName, MaxLOD) { } + public SpecGlossMap(int MaxLOD = 1000) : base("GLTF/PbrSpecularGlossiness", "0ffe2976cdefd434c8fcd886ffa69322", MaxLOD) { } + public SpecGlossMap(string shaderName, int MaxLOD = 1000) : base(shaderName, "0ffe2976cdefd434c8fcd886ffa69322", MaxLOD) { } protected SpecGlossMap(Material m, int MaxLOD = 1000) : base(m, MaxLOD) { } public override int NormalTexCoord diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGlossMap.cs.meta b/Runtime/Scripts/UniformMaps/SpecGlossMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/SpecGlossMap.cs.meta rename to Runtime/Scripts/UniformMaps/SpecGlossMap.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/StandardMap.cs b/Runtime/Scripts/UniformMaps/StandardMap.cs similarity index 91% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/StandardMap.cs rename to Runtime/Scripts/UniformMaps/StandardMap.cs index 1dd605199..8323b2e9a 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/StandardMap.cs +++ b/Runtime/Scripts/UniformMaps/StandardMap.cs @@ -1,5 +1,4 @@ -using System; -using GLTF.Schema; +using GLTF.Schema; using UnityEngine; using UnityEngine.Rendering; using Material = UnityEngine.Material; @@ -7,7 +6,7 @@ namespace UnityGLTF { - public class StandardMap : IUniformMap + public class StandardMap : ILitMap { protected Material _material; private AlphaMode _alphaMode = AlphaMode.OPAQUE; @@ -17,9 +16,14 @@ public class StandardMap : IUniformMap private Vector2 occlusionOffset = new Vector2(0, 0); private Vector2 emissiveOffset = new Vector2(0, 0); - protected StandardMap(string shaderName, int MaxLOD = 1000) + protected StandardMap(string shaderName, string fallbackGuid, int MaxLOD = 1000) { var s = Shader.Find(shaderName); +#if UNITY_EDITOR + // workaround for first-import issues with Shader.Find and import order + if (!s && fallbackGuid != null) + s = UnityEditor.AssetDatabase.LoadAssetAtPath(UnityEditor.AssetDatabase.GUIDToAssetPath(fallbackGuid)); +#endif if (s == null) { throw new ShaderNotFoundException(shaderName + " not found. Did you forget to add it to the build?"); @@ -86,8 +90,7 @@ public virtual Vector2 NormalXOffset set { normalOffset = value; - var unitySpaceVec = new Vector2(normalOffset.x, 1 - NormalXScale.y - normalOffset.y); - _material.SetTextureOffset("_BumpMap", unitySpaceVec); + _material.SetTextureOffset("_BumpMap", value); } } @@ -157,8 +160,7 @@ public virtual Vector2 OcclusionXOffset set { occlusionOffset = value; - var unitySpaceVec = new Vector2(occlusionOffset.x, 1 - OcclusionXScale.y - occlusionOffset.y); - _material.SetTextureOffset("_OcclusionMap", unitySpaceVec); + _material.SetTextureOffset("_OcclusionMap", value); } } @@ -229,8 +231,7 @@ public virtual Vector2 EmissiveXOffset set { emissiveOffset = value; - var unitySpaceVec = new Vector2(emissiveOffset.x, 1 - EmissiveXScale.y - emissiveOffset.y); - _material.SetTextureOffset("_EmissionMap", unitySpaceVec); + _material.SetTextureOffset("_EmissionMap", value); } } @@ -263,10 +264,7 @@ public virtual Color EmissiveFactor if (_material.HasProperty("_EmissionColor")) { _material.SetColor("_EmissionColor", value); - } - else - { - Debug.LogWarning("Tried to set an emission factor to a material that does not support it."); + _material.EnableKeyword("_EMISSION"); } } } @@ -279,6 +277,7 @@ public virtual AlphaMode AlphaMode if (value == AlphaMode.MASK) { _material.SetOverrideTag("RenderType", "TransparentCutout"); + _material.SetFloat("_Mode", 1); _material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); _material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); _material.SetInt("_ZWrite", 1); @@ -294,6 +293,7 @@ public virtual AlphaMode AlphaMode else if (value == AlphaMode.BLEND) { _material.SetOverrideTag("RenderType", "Transparent"); + _material.SetFloat("_Mode", 2); _material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); _material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); _material.SetInt("_ZWrite", 0); @@ -305,6 +305,7 @@ public virtual AlphaMode AlphaMode else { _material.SetOverrideTag("RenderType", "Opaque"); + _material.SetFloat("_Mode", 0); _material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); _material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); _material.SetInt("_ZWrite", 1); @@ -363,7 +364,7 @@ public virtual IUniformMap Clone() return ret; } - protected virtual void Copy(IUniformMap o) + protected virtual void Copy(ILitMap o) { var other = (StandardMap)o; other._material = _material; diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/StandardMap.cs.meta b/Runtime/Scripts/UniformMaps/StandardMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/StandardMap.cs.meta rename to Runtime/Scripts/UniformMaps/StandardMap.cs.meta diff --git a/Runtime/Scripts/UniformMaps/UniformMap.cs b/Runtime/Scripts/UniformMaps/UniformMap.cs new file mode 100644 index 000000000..94a590629 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/UniformMap.cs @@ -0,0 +1,189 @@ +using UnityEngine; + +namespace UnityGLTF +{ + public interface IUniformMap + { + Material Material { get; } + + GLTF.Schema.AlphaMode AlphaMode { get; set; } + double AlphaCutoff { get; set; } + bool DoubleSided { get; set; } + bool VertexColorsEnabled { get; set; } + + IUniformMap Clone(); + } + + public interface ILitMap : IUniformMap + { + Texture NormalTexture { get; set; } + int NormalTexCoord { get; set; } + double NormalTexScale { get; set; } + Vector2 NormalXOffset { get; set; } + double NormalXRotation { get; set; } + Vector2 NormalXScale { get; set; } + int NormalXTexCoord { get; set; } + + Texture OcclusionTexture { get; set; } + int OcclusionTexCoord { get; set; } + double OcclusionTexStrength { get; set; } + Vector2 OcclusionXOffset { get; set; } + double OcclusionXRotation { get; set; } + Vector2 OcclusionXScale { get; set; } + int OcclusionXTexCoord { get; set; } + + Texture EmissiveTexture { get; set; } + int EmissiveTexCoord { get; set; } + Color EmissiveFactor { get; set; } + Vector2 EmissiveXOffset { get; set; } + double EmissiveXRotation { get; set; } + Vector2 EmissiveXScale { get; set; } + int EmissiveXTexCoord { get; set; } + } + + public interface IMetalRoughUniformMap : ILitMap + { + Texture BaseColorTexture { get; set; } + int BaseColorTexCoord { get; set; } + Vector2 BaseColorXOffset { get; set; } + double BaseColorXRotation { get; set; } + Vector2 BaseColorXScale { get; set; } + int BaseColorXTexCoord { get; set; } + + Color BaseColorFactor { get; set; } + + Texture MetallicRoughnessTexture { get; set; } + int MetallicRoughnessTexCoord { get; set; } + Vector2 MetallicRoughnessXOffset { get; set; } + double MetallicRoughnessXRotation { get; set; } + Vector2 MetallicRoughnessXScale { get; set; } + int MetallicRoughnessXTexCoord { get; set; } + + double MetallicFactor { get; set; } + double RoughnessFactor { get; set; } + } + + public interface IVolumeMap : IMetalRoughUniformMap + { + double ThicknessFactor { get; set; } + Texture ThicknessTexture { get; set; } + Vector2 ThicknessTextureOffset { get; set; } + double ThicknessTextureRotation { get; set; } + Vector2 ThicknessTextureScale { get; set; } + int ThicknessTextureTexCoord { get; set; } + double AttenuationDistance { get; set; } + Color AttenuationColor { get; set; } + } + + public interface ITransmissionMap : IMetalRoughUniformMap + { + double TransmissionFactor { get; set; } + Texture TransmissionTexture { get; set; } + Vector2 TransmissionTextureOffset { get; set; } + double TransmissionTextureRotation { get; set; } + Vector2 TransmissionTextureScale { get; set; } + int TransmissionTextureTexCoord { get; set; } + } + + public interface IIORMap : IMetalRoughUniformMap + { + double IOR { get; set; } + } + + public interface ISpecularMap : IMetalRoughUniformMap + { + double SpecularFactor { get; set; } + Texture SpecularTexture { get; set; } + Vector2 SpecularTextureOffset { get; set; } + double SpecularTextureRotation { get; set; } + Vector2 SpecularTextureScale { get; set; } + int SpecularTextureTexCoord { get; set; } + Color SpecularColorFactor { get; set; } + Texture SpecularColorTexture { get; set; } + Vector2 SpecularColorTextureOffset { get; set; } + double SpecularColorTextureRotation { get; set; } + Vector2 SpecularColorTextureScale { get; set; } + int SpecularColorTextureTexCoord { get; set; } + } + + public interface IIridescenceMap : IMetalRoughUniformMap + { + double IridescenceFactor { get; set; } + double IridescenceIor { get; set; } + double IridescenceThicknessMinimum { get; set; } + double IridescenceThicknessMaximum { get; set; } + Texture IridescenceTexture { get; set; } + Vector2 IridescenceTextureOffset { get; set; } + double IridescenceTextureRotation { get; set; } + Vector2 IridescenceTextureScale { get; set; } + int IridescenceTextureTexCoord { get; set; } + + Texture IridescenceThicknessTexture { get; set; } + Vector2 IridescenceThicknessTextureOffset { get; set; } + double IridescenceThicknessTextureRotation { get; set; } + Vector2 IridescenceThicknessTextureScale { get; set; } + int IridescenceThicknessTextureTexCoord { get; set; } + } + + public interface ISpecGlossUniformMap : ILitMap + { + Texture DiffuseTexture { get; set; } + int DiffuseTexCoord { get; set; } + Vector2 DiffuseXOffset { get; set; } + double DiffuseXRotation { get; set; } + Vector2 DiffuseXScale { get; set; } + int DiffuseXTexCoord { get; set; } + + Color DiffuseFactor { get; set; } + + Texture SpecularGlossinessTexture { get; set; } + int SpecularGlossinessTexCoord { get; set; } + Vector2 SpecularGlossinessXOffset { get; set; } + double SpecularGlossinessXRotation { get; set; } + Vector2 SpecularGlossinessXScale { get; set; } + int SpecularGlossinessXTexCoord { get; set; } + + Vector3 SpecularFactor { get; set; } + double GlossinessFactor { get; set; } + } + + public interface IClearcoatMap : IMetalRoughUniformMap + { + double ClearcoatFactor { get; set; } + + Texture ClearcoatTexture { get; set; } + Vector2 ClearcoatTextureOffset { get; set; } + double ClearcoatTextureRotation { get; set; } + Vector2 ClearcoatTextureScale { get; set; } + int ClearcoatTextureTexCoord { get; set; } + + double ClearcoatRoughnessFactor { get; set; } + + Texture ClearcoatRoughnessTexture { get; set; } + Vector2 ClearcoatRoughnessTextureOffset { get; set; } + double ClearcoatRoughnessTextureRotation { get; set; } + Vector2 ClearcoatRoughnessTextureScale { get; set; } + int ClearcoatRoughnessTextureTexCoord { get; set; } + } + + public interface IClearcoatNormalMap + { + Texture ClearcoatNormalTexture { get; set; } + Vector2 ClearcoatNormalTextureOffset { get; set; } + double ClearcoatNormalTextureRotation { get; set; } + Vector2 ClearcoatNormalTextureScale { get; set; } + int ClearcoatNormalTextureTexCoord { get; set; } + } + + public interface IUnlitUniformMap : IUniformMap + { + Texture BaseColorTexture { get; set; } + int BaseColorTexCoord { get; set; } + Vector2 BaseColorXOffset { get; set; } + double BaseColorXRotation { get; set; } + Vector2 BaseColorXScale { get; set; } + int BaseColorXTexCoord { get; set; } + + Color BaseColorFactor { get; set; } + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/UniformMap.cs.meta b/Runtime/Scripts/UniformMaps/UniformMap.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/UniformMap.cs.meta rename to Runtime/Scripts/UniformMaps/UniformMap.cs.meta diff --git a/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs new file mode 100644 index 000000000..d40440bd6 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace UnityGLTF +{ + public class UnlitGraphMap : BaseGraphMap, IUnlitUniformMap + { + private const string UnlitGraphGuid = "59541e6caf586ca4f96ccf48a4813a51"; + public UnlitGraphMap() : this("UnityGLTF/UnlitGraph") {} + +#if !UNITY_2021_1_OR_NEWER + private const string UnlitGraphTransparentGuid = "83f2caca07949794fb997734c4b0520f"; + private const string UnlitGraphTransparentDoubleGuid = "8a8841b4fb2f63644896f4e2b36bc06d"; + private const string UnlitGraphDoubleGuid = "33ee70a7f505ddb4e80d235c3d70766d"; + + public UnlitGraphMap(bool transparent, bool doubleSided) : base( + "UnityGLTF/UnlitGraph" + (transparent ? "-Transparent" : "") + (doubleSided ? "-Double" : ""), + (transparent && doubleSided ? UnlitGraphTransparentDoubleGuid : transparent ? UnlitGraphTransparentGuid : doubleSided ? UnlitGraphDoubleGuid : UnlitGraphGuid)) { } +#endif + + protected UnlitGraphMap(string shaderName) : base(shaderName, UnlitGraphGuid) { } + + public UnlitGraphMap(Material mat) : base(mat) { } + + public override IUniformMap Clone() + { + var clone = new UnlitGraphMap(new Material(_material)); + clone.Material.shaderKeywords = _material.shaderKeywords; + return clone; + } + } +} diff --git a/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs.meta b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs.meta new file mode 100644 index 000000000..27defa382 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/UnlitGraphMap.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a3f20bde7da344549f9b68b6cf264b36 +timeCreated: 1657891307 \ No newline at end of file diff --git a/Runtime/Scripts/UniformMaps/UnlitMap.cs b/Runtime/Scripts/UniformMaps/UnlitMap.cs new file mode 100644 index 000000000..802228da5 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/UnlitMap.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using Material = UnityEngine.Material; +using Texture = UnityEngine.Texture; + +namespace UnityGLTF +{ + public class UnlitMap : StandardMap, IUnlitUniformMap + { + private Vector2 baseColorOffset = new Vector2(0, 0); + + public UnlitMap(int MaxLOD = 1000) : base("GLTF/Unlit", "4d20effaf200f604db8b73f8e6a2e386", MaxLOD) { } + public UnlitMap(string shaderName, string shaderGuid, int MaxLOD = 1000) : base(shaderName, shaderGuid, MaxLOD) { } + public UnlitMap(Material m, int MaxLOD = 1000) : base(m, MaxLOD) { } + + public Texture BaseColorTexture + { + get { return _material.GetTexture("_MainTex"); } + set { _material.SetTexture("_MainTex", value); } + } + + public virtual int BaseColorTexCoord + { + get { return 0; } + set { return; } + } + + public virtual Vector2 BaseColorXOffset + { + get { return baseColorOffset; } + set { + _material.SetTextureOffset("_MainTex", value); + baseColorOffset = value; + } + } + + public virtual double BaseColorXRotation + { + get { return 0; } + set { return; } + } + + public virtual Vector2 BaseColorXScale + { + get { return _material.GetTextureScale("_MainTex"); } + set { + _material.SetTextureScale("_MainTex", value); + BaseColorXOffset = baseColorOffset; + } + } + + public virtual int BaseColorXTexCoord + { + get { return 0; } + set { return; } + } + + public virtual Color BaseColorFactor + { + get { return _material.GetColor("_Color"); } + set { _material.SetColor("_Color", value); } + } + } +} diff --git a/Runtime/Scripts/UniformMaps/UnlitMap.cs.meta b/Runtime/Scripts/UniformMaps/UnlitMap.cs.meta new file mode 100644 index 000000000..b26539eb0 --- /dev/null +++ b/Runtime/Scripts/UniformMaps/UnlitMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ab9be6bfd7090247a61992f7b8f8adb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders.meta b/Runtime/Shaders.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders.meta rename to Runtime/Shaders.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrMetallicRoughness.shader b/Runtime/Shaders/PbrMetallicRoughness.shader similarity index 85% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrMetallicRoughness.shader rename to Runtime/Shaders/PbrMetallicRoughness.shader index e2f9ed731..b62eefba9 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrMetallicRoughness.shader +++ b/Runtime/Shaders/PbrMetallicRoughness.shader @@ -31,6 +31,7 @@ Shader "GLTF/PbrMetallicRoughness" _OcclusionStrength("Occlusion Strength", Range(0.0, 1.0)) = 1.0 _OcclusionMap("Occlusion Texture", 2D) = "white" {} + [HDR] _EmissionColor("Emissive Factor", Color) = (0,0,0) _EmissionMap("Emissive Texture", 2D) = "white" {} @@ -73,11 +74,11 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature _EMISSION #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature ___ _DETAIL_MULX2 - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF - #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF - #pragma shader_feature _PARALLAXMAP + // #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF + // #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF + // #pragma shader_feature _PARALLAXMAP #pragma multi_compile_fwdbase #pragma multi_compile_fog @@ -110,10 +111,10 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _NORMALMAP #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF - #pragma shader_feature ___ _DETAIL_MULX2 - #pragma shader_feature _PARALLAXMAP + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF + // #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _PARALLAXMAP #pragma multi_compile_fwdadd_fullshadows #pragma multi_compile_fog @@ -141,7 +142,7 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _PARALLAXMAP + // #pragma shader_feature _PARALLAXMAP #pragma multi_compile_shadowcaster #pragma multi_compile_instancing @@ -170,17 +171,17 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature _EMISSION #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF - #pragma shader_feature ___ _DETAIL_MULX2 - #pragma shader_feature _PARALLAXMAP + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF + // #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _PARALLAXMAP #pragma multi_compile_prepassfinal #pragma multi_compile_instancing #pragma vertex vertDeferred #pragma fragment fragDeferred - + #include "UnityStandardInput.cginc" #include "UnityStandardCore.cginc" ENDCG @@ -202,8 +203,8 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _EMISSION #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature ___ _DETAIL_MULX2 #pragma shader_feature EDITOR_VISUALIZATION #include "UnityStandardMeta.cginc" @@ -231,11 +232,11 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _NORMALMAP #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON - #pragma shader_feature _EMISSION - #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF - #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF + #pragma shader_feature _EMISSION + #pragma shader_feature _METALLICGLOSSMAP + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF + // #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF // SM2.0: NOT SUPPORTED shader_feature ___ _DETAIL_MULX2 // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP @@ -268,9 +269,9 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _NORMALMAP #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF - #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF + // #pragma shader_feature ___ _DETAIL_MULX2 // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP #pragma skip_variants SHADOWS_SOFT @@ -324,8 +325,8 @@ Shader "GLTF/PbrMetallicRoughness" #pragma shader_feature _EMISSION #pragma shader_feature _METALLICGLOSSMAP - #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A - #pragma shader_feature ___ _DETAIL_MULX2 + // #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + // #pragma shader_feature ___ _DETAIL_MULX2 #pragma shader_feature EDITOR_VISUALIZATION #include "UnityStandardMeta.cginc" diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrMetallicRoughness.shader.meta b/Runtime/Shaders/PbrMetallicRoughness.shader.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrMetallicRoughness.shader.meta rename to Runtime/Shaders/PbrMetallicRoughness.shader.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader b/Runtime/Shaders/PbrSpecularGlossiness.shader similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader rename to Runtime/Shaders/PbrSpecularGlossiness.shader diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader.meta b/Runtime/Shaders/PbrSpecularGlossiness.shader.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader.meta rename to Runtime/Shaders/PbrSpecularGlossiness.shader.meta diff --git a/Runtime/Shaders/ShaderGraph.meta b/Runtime/Shaders/ShaderGraph.meta new file mode 100644 index 000000000..e698bc92d --- /dev/null +++ b/Runtime/Shaders/ShaderGraph.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e32829a2d4263447b87ba7c367e5410 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy.meta new file mode 100644 index 000000000..65954ce42 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 036670886f7d6664b84a5053642f0ad0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Double.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Double.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Double.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Double.override-graph.meta new file mode 100644 index 000000000..5e4e9ff1a --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Double.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 8bc739b14fe811644abb82057b363ba8 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 0 + forceDoublesided: 1 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent-Double.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent-Double.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent-Double.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent-Double.override-graph.meta new file mode 100644 index 000000000..806a26893 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent-Double.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 54352a53405971b41a6587615f947085 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 1 + forceDoublesided: 1 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent.override-graph.meta new file mode 100644 index 000000000..d0d2be05f --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/PBRGraph-Transparent.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 0a931320a74ca574b91d2d7d4557dcf1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 478ce3626be7a5f4ea58d6b13f05a2e4, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 1 + forceDoublesided: 0 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Double.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Double.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Double.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Double.override-graph.meta new file mode 100644 index 000000000..fa8b525fc --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Double.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 33ee70a7f505ddb4e80d235c3d70766d +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 0 + forceDoublesided: 1 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent-Double.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent-Double.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent-Double.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent-Double.override-graph.meta new file mode 100644 index 000000000..deaad8633 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent-Double.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 8a8841b4fb2f63644896f4e2b36bc06d +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 1 + forceDoublesided: 1 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent.override-graph b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent.override-graph new file mode 100644 index 000000000..e69de29bb diff --git a/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent.override-graph.meta b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent.override-graph.meta new file mode 100644 index 000000000..156e50ecd --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/2020-Legacy/UnlitGraph-Transparent.override-graph.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 83f2caca07949794fb997734c4b0520f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fe431e399c52971408121c6c40cde979, type: 3} + sourceShader: {fileID: -6465566751694194690, guid: 59541e6caf586ca4f96ccf48a4813a51, type: 3} + upgradeShader: {fileID: 4800000, guid: 86f94ec63222e22449b77b92fcf1edc8, type: 3} + forceTransparent: 1 + forceDoublesided: 0 + hideShader: 1 diff --git a/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph b/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph new file mode 100644 index 000000000..350894ded --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph @@ -0,0 +1,1665 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "c15f6a0c67ef432d9eb7ce4dcf60ed3c", + "m_Properties": [ + { + "m_Id": "d0766fbd7217441bae23a869c619e5ae" + }, + { + "m_Id": "9598881aa4be45278aa6fa528c80c2ce" + }, + { + "m_Id": "bae92ede0058467ab60ccd18cb160ddf" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "2a1a78b6172c4d1d8c8564ca16f7f040" + } + ], + "m_Nodes": [ + { + "m_Id": "7388837d194e4f4694bfc9fd7bb225b3" + }, + { + "m_Id": "4c11bdab24a642a5a7c265b23cec2db9" + }, + { + "m_Id": "525ad0abf5f74fe286005392a74dd909" + }, + { + "m_Id": "703e1e73e7e141b39a3b60455cca266c" + }, + { + "m_Id": "24f5da3ae04349f195fc6cf82047730d" + }, + { + "m_Id": "03e963f1b44b41c9aee2e79d2d56537d" + }, + { + "m_Id": "913241314ec940ec8091e2d4d9a26a8c" + }, + { + "m_Id": "557333e8155a4184b96319627d6b213b" + }, + { + "m_Id": "d969cfa645f34136937134592e0db49e" + }, + { + "m_Id": "b0aa4c6c7aa14df2adf790b78037dc64" + }, + { + "m_Id": "1e7a38aa6fa842acb3ca830a9097a825" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "03e963f1b44b41c9aee2e79d2d56537d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "24f5da3ae04349f195fc6cf82047730d" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "03e963f1b44b41c9aee2e79d2d56537d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "913241314ec940ec8091e2d4d9a26a8c" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1e7a38aa6fa842acb3ca830a9097a825" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "703e1e73e7e141b39a3b60455cca266c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "24f5da3ae04349f195fc6cf82047730d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "703e1e73e7e141b39a3b60455cca266c" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4c11bdab24a642a5a7c265b23cec2db9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "24f5da3ae04349f195fc6cf82047730d" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4c11bdab24a642a5a7c265b23cec2db9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "913241314ec940ec8091e2d4d9a26a8c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "525ad0abf5f74fe286005392a74dd909" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "703e1e73e7e141b39a3b60455cca266c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "557333e8155a4184b96319627d6b213b" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d969cfa645f34136937134592e0db49e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "557333e8155a4184b96319627d6b213b" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d969cfa645f34136937134592e0db49e" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "557333e8155a4184b96319627d6b213b" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d969cfa645f34136937134592e0db49e" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "703e1e73e7e141b39a3b60455cca266c" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7388837d194e4f4694bfc9fd7bb225b3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "913241314ec940ec8091e2d4d9a26a8c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "557333e8155a4184b96319627d6b213b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b0aa4c6c7aa14df2adf790b78037dc64" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1e7a38aa6fa842acb3ca830a9097a825" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d969cfa645f34136937134592e0db49e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b0aa4c6c7aa14df2adf790b78037dc64" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "7388837d194e4f4694bfc9fd7bb225b3" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "03e963f1b44b41c9aee2e79d2d56537d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -813.9999389648438, + "y": -289.0, + "width": 92.99993896484375, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "b4a7a16c635c459aa6ba9a7af8bf343c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "bae92ede0058467ab60ccd18cb160ddf" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "08cb3bf461a9432ba147673af4ff7ee1", + "m_Id": 1, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0f9e3f472ed74d94bef2549c65cc13f8", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "10d535f8a4e04b588a83f2268a1d5631", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "13ea16dde7f146cdb9e4d2ae90da60e1", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "1bb829f72c1c4c82b306e3a0376b1249", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubtractNode", + "m_ObjectId": "1e7a38aa6fa842acb3ca830a9097a825", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Subtract", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 174.0, + "y": -435.0000305175781, + "width": 208.00003051757813, + "height": 302.0000305175781 + } + }, + "m_Slots": [ + { + "m_Id": "d2bce08a875d4587a80d6855c2834f96" + }, + { + "m_Id": "ff671b3f341e478285999ee659c75197" + }, + { + "m_Id": "6876800b62c04fcc8a626a146798a80e" + } + ], + "synonyms": [ + "subtraction", + "remove", + "minus", + "take away" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "21a7c88da21d4056833d46f0cdc1b1d7", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "24f5da3ae04349f195fc6cf82047730d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -581.9999389648438, + "y": -210.0, + "width": 183.0, + "height": 251.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "256599350ece49ca938120e10a955312" + }, + { + "m_Id": "a03de65262b841d8b316de860c0fa754" + }, + { + "m_Id": "89d0036c3f5545d385d35d5ba5741f91" + }, + { + "m_Id": "356dfca602dd4780962fa396110a1286" + }, + { + "m_Id": "ae985f64b97546299a80d27d52b73b11" + }, + { + "m_Id": "85f5483f7dd14c8dae5ab64580bb31cf" + }, + { + "m_Id": "41e7578128fa4ef5bdd1ab32dd834f6c" + }, + { + "m_Id": "bd497e42e81a42ff85aa393bbe7cdac9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "256599350ece49ca938120e10a955312", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "2a1a78b6172c4d1d8c8564ca16f7f040", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "d0766fbd7217441bae23a869c619e5ae" + }, + { + "m_Id": "9598881aa4be45278aa6fa528c80c2ce" + }, + { + "m_Id": "bae92ede0058467ab60ccd18cb160ddf" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3190d073608f485c9f99ab48a97e4999", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "356dfca602dd4780962fa396110a1286", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "41e7578128fa4ef5bdd1ab32dd834f6c", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "4280342f18fb420ba8837bbb645a6c5d", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "42c35a0df6984590ba89c712b48f003e", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "4335933eb58c498aa0adbbafc8cb4202", + "m_Id": 0, + "m_DisplayName": "RuntimeCreatedNormal", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "4c11bdab24a642a5a7c265b23cec2db9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -836.9999389648438, + "y": -361.0, + "width": 124.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "77b9203b94384f88843eeb13d29e5d91" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d0766fbd7217441bae23a869c619e5ae" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "525ad0abf5f74fe286005392a74dd909", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 374.0, + "y": -469.0, + "width": 199.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "4335933eb58c498aa0adbbafc8cb4202" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9598881aa4be45278aa6fa528c80c2ce" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "557333e8155a4184b96319627d6b213b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -364.4500427246094, + "y": -503.45001220703127, + "width": 120.0, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "bc076fbabffd41a2b7ef016a1d4a3295" + }, + { + "m_Id": "ccc0390e745b4c05888bc42ea661b7b4" + }, + { + "m_Id": "c6fd4ddbb6bc4ffb9e182d28e21b5630" + }, + { + "m_Id": "7b0b288cd213410c92d4ec79ec24aa40" + }, + { + "m_Id": "21a7c88da21d4056833d46f0cdc1b1d7" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5cc5a2434b5e4ee797622a9e5af00d2d", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6876800b62c04fcc8a626a146798a80e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "703e1e73e7e141b39a3b60455cca266c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 622.0, + "y": -312.0, + "width": 208.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "f5e6a85a2dde4848a3d9bf275d0266c6" + }, + { + "m_Id": "c9e1c13eca9e49ffa77458b058b69914" + }, + { + "m_Id": "bbcea64a9ad448f3a9b240b8fefe9fa4" + }, + { + "m_Id": "b04eb337886440939cd4340fc6865183" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "7388837d194e4f4694bfc9fd7bb225b3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 930.0, + "y": -312.0, + "width": 93.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "08cb3bf461a9432ba147673af4ff7ee1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "77b9203b94384f88843eeb13d29e5d91", + "m_Id": 0, + "m_DisplayName": "Texture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7b0b288cd213410c92d4ec79ec24aa40", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7fa42d8fc86041ffb0befc436427010f", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "85f5483f7dd14c8dae5ab64580bb31cf", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "8912beca3edb443295f10e74b5a6fd2a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "89d0036c3f5545d385d35d5ba5741f91", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9059b5885aef4c3794713d6c13269673", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "913241314ec940ec8091e2d4d9a26a8c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -582.0000610351563, + "y": -523.0000610351563, + "width": 183.00003051757813, + "height": 251.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "9dfc87f047c74e6b9304165445e9bed7" + }, + { + "m_Id": "a9b00a75d17e418ca32d81494ee62041" + }, + { + "m_Id": "0f9e3f472ed74d94bef2549c65cc13f8" + }, + { + "m_Id": "7fa42d8fc86041ffb0befc436427010f" + }, + { + "m_Id": "10d535f8a4e04b588a83f2268a1d5631" + }, + { + "m_Id": "1bb829f72c1c4c82b306e3a0376b1249" + }, + { + "m_Id": "42c35a0df6984590ba89c712b48f003e" + }, + { + "m_Id": "8912beca3edb443295f10e74b5a6fd2a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "9598881aa4be45278aa6fa528c80c2ce", + "m_Guid": { + "m_GuidSerialized": "6b1a9297-d3d6-4ef1-a7c3-8f9db968882f" + }, + "m_Name": "RuntimeCreatedNormal", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "RuntimeCreatedNormal", + "m_DefaultReferenceName": "_RuntimeCreatedNormal", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "9dfc87f047c74e6b9304165445e9bed7", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a03de65262b841d8b316de860c0fa754", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a9b00a75d17e418ca32d81494ee62041", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ae985f64b97546299a80d27d52b73b11", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b04eb337886440939cd4340fc6865183", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "b0aa4c6c7aa14df2adf790b78037dc64", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -72.0, + "y": -435.00006103515627, + "width": 129.99998474121095, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "13ea16dde7f146cdb9e4d2ae90da60e1" + }, + { + "m_Id": "9059b5885aef4c3794713d6c13269673" + }, + { + "m_Id": "dc8d154e7918417d887d6521bb6ad1c2" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "b4a7a16c635c459aa6ba9a7af8bf343c", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "bae92ede0058467ab60ccd18cb160ddf", + "m_Guid": { + "m_GuidSerialized": "cc8dbd39-e387-4cc1-8419-ce41b58c11cb" + }, + "m_Name": "UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "UV", + "m_DefaultReferenceName": "_UV", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bbcea64a9ad448f3a9b240b8fefe9fa4", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bc076fbabffd41a2b7ef016a1d4a3295", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "bd497e42e81a42ff85aa393bbe7cdac9", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c6fd4ddbb6bc4ffb9e182d28e21b5630", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c9e1c13eca9e49ffa77458b058b69914", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ccc0390e745b4c05888bc42ea661b7b4", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "d0766fbd7217441bae23a869c619e5ae", + "m_Guid": { + "m_GuidSerialized": "bbb3a35a-b994-4c4a-9e1e-f9007ce2c380" + }, + "m_Name": "Texture", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Texture", + "m_DefaultReferenceName": "_Texture", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d0f2e1fef8f14a09a95fc35b83aca2c6", + "m_Id": 3, + "m_DisplayName": "Z", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Z", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d2bce08a875d4587a80d6855c2834f96", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3Node", + "m_ObjectId": "d969cfa645f34136937134592e0db49e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vector 3", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -237.00009155273438, + "y": -503.0000305175781, + "width": 128.00006103515626, + "height": 125.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "5cc5a2434b5e4ee797622a9e5af00d2d" + }, + { + "m_Id": "3190d073608f485c9f99ab48a97e4999" + }, + { + "m_Id": "d0f2e1fef8f14a09a95fc35b83aca2c6" + }, + { + "m_Id": "4280342f18fb420ba8837bbb645a6c5d" + } + ], + "synonyms": [ + "3", + "v3", + "vec3", + "float3" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "dc8d154e7918417d887d6521bb6ad1c2", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "f5e6a85a2dde4848a3d9bf275d0266c6", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ff671b3f341e478285999ee659c75197", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + diff --git a/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph.meta b/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph.meta new file mode 100644 index 000000000..5b2e6910d --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/CustomSampleNormalMap.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e3a9c28adc9ece042a6141bad8ecc47c +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph new file mode 100644 index 000000000..c60882345 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph @@ -0,0 +1,30041 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "91e2a81f19de4249bc97ceec39ed3170", + "m_Properties": [ + { + "m_Id": "62341c2af4b04863803ba8369da7ee0b" + }, + { + "m_Id": "851b64cc55064cc591c263711144feca" + }, + { + "m_Id": "ff11e8a641984c798698ae35ab35028d" + }, + { + "m_Id": "dfd1443566c54067a2abb81aaa116653" + }, + { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + }, + { + "m_Id": "2b0a026cebb0460a83c4e4d6e29e6e36" + }, + { + "m_Id": "25aa3027d13042ddb02054db5def12d2" + }, + { + "m_Id": "3c72208ecc9f4632b650d1c06ac9c4d2" + }, + { + "m_Id": "c5bd9f7925ac49c8913a839e2c3077a7" + }, + { + "m_Id": "492d5d149f4c4a7ca0c26f791e6704e6" + }, + { + "m_Id": "d0fed3c5fc0f40768ab7ac9ec518b18d" + }, + { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + }, + { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + }, + { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + }, + { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + }, + { + "m_Id": "f22bfbc247554808a3b34bf10161a0ca" + }, + { + "m_Id": "0e4935a9458a40e18f35ecbf7419a2b9" + }, + { + "m_Id": "ae75beb2c1494f609bb76fbc141d12c8" + }, + { + "m_Id": "417bfe74fb994ff8b15125f41148d8c6" + }, + { + "m_Id": "02ea37d7654b45adb4b6519d05132bf0" + }, + { + "m_Id": "3ee3385ae855473aaaf56fea09cc4360" + }, + { + "m_Id": "dca2cfed99924dcda4d95ce6319909a4" + }, + { + "m_Id": "cf6b395662864978a19f9c4ad3b5a685" + }, + { + "m_Id": "b4d8cf566d7d4d0d8a49901c25e25950" + }, + { + "m_Id": "4f6277e06f1e4006baf370c15741a704" + }, + { + "m_Id": "980c8b8a564144b793271871d59b19e7" + }, + { + "m_Id": "6bb85556adb54ba195b23a5f797152fb" + }, + { + "m_Id": "80069515911646338233075f20ccb366" + }, + { + "m_Id": "0ca6948bbb5d4e47ad215994019d2c5c" + }, + { + "m_Id": "6d6db3c04e41461f81564fae265af536" + }, + { + "m_Id": "1e49e8f84d654c64af4ae30f35a7f733" + }, + { + "m_Id": "043dbc7e1661471eaeccef62e594a7b3" + }, + { + "m_Id": "3ce6d25358cc421582e9a91b41d39fdf" + }, + { + "m_Id": "3e15ef7468514f0caceb0461ac3a3d53" + }, + { + "m_Id": "c52451fda82b4ca7909b11b10b2a9e09" + }, + { + "m_Id": "6dcd6559ce1c4522be780f0ace587147" + }, + { + "m_Id": "8a0fadc477234cbe95efb02754f32e2d" + }, + { + "m_Id": "7e5abe31e1414a91911f76fbf9030e2c" + }, + { + "m_Id": "1bd126bc26d14fa9b0bd88cffc73922b" + }, + { + "m_Id": "105a2c9d68ae4193ab40386151992454" + }, + { + "m_Id": "d4bf44ad812142cf81dd4619dbce963f" + }, + { + "m_Id": "5004252d15d04c2ea74cd947ee1f3b4f" + }, + { + "m_Id": "58d29ed6f30d4885996b1c2b1d967e6b" + }, + { + "m_Id": "50998a16883841b483e4d4e9aa26ce91" + }, + { + "m_Id": "42d01612a467484494e13af04de1b143" + }, + { + "m_Id": "6d2dcf695f684b3d85b3bdc6615713d3" + }, + { + "m_Id": "a88f553fcc0246a2bc8a573e921ce351" + }, + { + "m_Id": "0ba2ac3a5b6a4aa8add2b7bfa647a320" + }, + { + "m_Id": "98bfc82acd6e48bcb86c8cb2524113ce" + }, + { + "m_Id": "3e441c009906463b89aceae672c7f8aa" + }, + { + "m_Id": "f7ae0094c08445398a6c676150aed9e8" + }, + { + "m_Id": "1a5d204b45a44b6bac695a4ee5fa47c8" + }, + { + "m_Id": "31516f3b61504a6080a15b03bfc5b3fa" + }, + { + "m_Id": "148b5c05a260452aa2e1ab778a38b697" + }, + { + "m_Id": "4c1ca34c9be14b66b960ca5ff430acd0" + }, + { + "m_Id": "49b1570f6c2040dfa64a34f18ba7bc52" + }, + { + "m_Id": "d05eebe6687b47d7a9c6d0625eb59c8b" + }, + { + "m_Id": "8b08f9f87c4d417ea72f69104abe93df" + }, + { + "m_Id": "0a2f011385a949b5a6ec4a0ade8346ba" + }, + { + "m_Id": "e5df02ace51547ed8d346586a45dd86b" + }, + { + "m_Id": "b82b2aa938924570aae5927593eaed76" + }, + { + "m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32" + }, + { + "m_Id": "30f244a575e2416da21dc7749cedfa02" + }, + { + "m_Id": "e83261a59420447f8f06521807515547" + }, + { + "m_Id": "1bd532bd2011412a8eed2621e08e3222" + }, + { + "m_Id": "57b184f48a8b498c8e2cbaaa5aed5243" + }, + { + "m_Id": "19060202407d4ef49a49c2ec295ffed2" + }, + { + "m_Id": "a50370cc3ee24456919ee633ea0803d2" + }, + { + "m_Id": "5d010844a57e4032848b95235697f621" + }, + { + "m_Id": "a28c1bc72c564a4fbe11ea22bb853717" + }, + { + "m_Id": "b79ad7d70d9e4cc5bcd5c8a18caa7d86" + }, + { + "m_Id": "46e1e39c81414ae58142acbe94c617a3" + }, + { + "m_Id": "14ec0a08cca146a98862d31183f587f4" + }, + { + "m_Id": "5959c998527d4aaf8a3653895a8d1279" + }, + { + "m_Id": "20d582c282a9450484c2d45dada8e8a9" + } + ], + "m_Keywords": [ + { + "m_Id": "302d94653f844799b5f7e93c4d06ed3d" + }, + { + "m_Id": "7e862501058a45c9ad78e01eefa90605" + }, + { + "m_Id": "87b808f5412f4fc3a450ebecdf23d83e" + }, + { + "m_Id": "87f49076b11a43f2bc2c05c9154c93d4" + }, + { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + }, + { + "m_Id": "14eb9f49890e4fdf8e6c058bfe728c2c" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f062397f3b2d40ceaf0c1f3246b5bcb0" + } + ], + "m_Nodes": [ + { + "m_Id": "d62362e7b1db41b5b2850ca4f7727193" + }, + { + "m_Id": "84d55ba92e74430996e3472b42307dbe" + }, + { + "m_Id": "f99c7d64d64e494f9fa89870d003303e" + }, + { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + { + "m_Id": "6396afda9540464580bb27eab9db11a2" + }, + { + "m_Id": "91c58898c6bb409395192a9efe525485" + }, + { + "m_Id": "e0d099b286e74cdd8eef478c2ba6a46d" + }, + { + "m_Id": "2da8f941d9cf4a7797b3a250c322261d" + }, + { + "m_Id": "e12c5f6ea3ba4826bbd98bdadd9fdd60" + }, + { + "m_Id": "67cd62080df840ec941b6cf2653b199f" + }, + { + "m_Id": "325e14ba71ba4c1ab846128cc0cb3655" + }, + { + "m_Id": "a84bc040b0ab456e92b7dfd5d9a636a4" + }, + { + "m_Id": "77fa18f03d944a35b1e7817552c8dd4a" + }, + { + "m_Id": "b448a23f9f09460994f0296f1f58a2b0" + }, + { + "m_Id": "ecb3cc7643b545c3b78349bdcae92f63" + }, + { + "m_Id": "57f34c151af34548b981f67f69fb01bb" + }, + { + "m_Id": "b133d79ba4bc41af8ed5110288bf16ff" + }, + { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + { + "m_Id": "2c96c5f6712447e58eda432b764d07ce" + }, + { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + { + "m_Id": "dfa2b3edff80416fa8545965c3c47d3d" + }, + { + "m_Id": "771f758c8e0a4c748ab647b72a32c4a7" + }, + { + "m_Id": "636eb21b6031474cad03acd4b63413f7" + }, + { + "m_Id": "8757abe351fc4351abd6115a14dba130" + }, + { + "m_Id": "03edec114129436fb01015f07ff7f10a" + }, + { + "m_Id": "eb913c79adc9470ebeaf8aa017b929c9" + }, + { + "m_Id": "610f0dc568cd4d1fa7ea371be712a923" + }, + { + "m_Id": "db3ecb1c0e884596b20f467abfe7a56f" + }, + { + "m_Id": "a267acde60024329b4e0936179de7717" + }, + { + "m_Id": "ba9a2ca04ce041e38e549ca34918e30c" + }, + { + "m_Id": "11f64b30d68944d484c6e3b1280bff61" + }, + { + "m_Id": "e8ce99114fb74093bd17f882bd54ab1a" + }, + { + "m_Id": "0d8c3a1c09f24db4a28644998f76c89c" + }, + { + "m_Id": "1c5c2d9dd3c94f899456f0e784281ca4" + }, + { + "m_Id": "54048a36c65a48d08ec402c82a41df42" + }, + { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + }, + { + "m_Id": "68eaf5df825b4d698f15a6b079db429a" + }, + { + "m_Id": "6ce2ce6219d94187b54d78ffcef3de1b" + }, + { + "m_Id": "16d1bef854c747fe9cdfd2a58fc23658" + }, + { + "m_Id": "24040992221045bb9d22da9a78437197" + }, + { + "m_Id": "e83457a070b141b5b171a895bf0d6389" + }, + { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + { + "m_Id": "581bb0c3846648a68b3050d26967d45f" + }, + { + "m_Id": "2d0bbca38ec145e2a4b4886f01ab4c47" + }, + { + "m_Id": "035426df75f84f88aca26e0e30c92b50" + }, + { + "m_Id": "a8f71db37bcf409dafa6c9b01bb96169" + }, + { + "m_Id": "e2923f4949d54387b5b24c430a889827" + }, + { + "m_Id": "cb66babc65414b46b1a10ba32a89a0d1" + }, + { + "m_Id": "b6468f11990d4fc29393e12aac937398" + }, + { + "m_Id": "d33a9109fde648d3b070274381ab59db" + }, + { + "m_Id": "e8d324bebd9f46c381e4e35fd38365a8" + }, + { + "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + }, + { + "m_Id": "bb7674282a934e3b9bfb057277071aa7" + }, + { + "m_Id": "9900fba29f7c4a8e9ef63caa3cdecb4a" + }, + { + "m_Id": "9d897128ed844e848e23acd66dcf0292" + }, + { + "m_Id": "0672160770494af3894dcee104613b09" + }, + { + "m_Id": "b95fc0c69dfd41f4b2aa0d3dd326f562" + }, + { + "m_Id": "c586ec91ca9043a99c6359e8137eea8f" + }, + { + "m_Id": "d4ff3f6694b74efeafa02a530afce2cb" + }, + { + "m_Id": "bd06c49ec440472da7f53fde41efa972" + }, + { + "m_Id": "809df95983ad4f6a9b642ce84a9e74a7" + }, + { + "m_Id": "5d141c63b25f4a7a99aaffe9c41c7764" + }, + { + "m_Id": "293e9cc943084a00acd57b6d72c2f5d4" + }, + { + "m_Id": "114e1cd7bdae4a49874cda3f289705fa" + }, + { + "m_Id": "06db988d9f42411085151074e35e62d5" + }, + { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + { + "m_Id": "a5c994c3937e4e72b2438108ca0aad92" + }, + { + "m_Id": "d7de083c00574d7ea0b9e8975d5884a2" + }, + { + "m_Id": "152dd0d71e5a424f905fbeab3716865d" + }, + { + "m_Id": "9be492b061b948c8bf9969a7a476da96" + }, + { + "m_Id": "cd561be7e62240d38868b7451e936e0d" + }, + { + "m_Id": "df4ccb6d2f8546a1bdbc71c6c1056889" + }, + { + "m_Id": "d6bc16c340e9496cb653d57ae3dc4bc8" + }, + { + "m_Id": "2dc0377e855949349c7a1052f7e3ff6c" + }, + { + "m_Id": "988c622f16f64a9898a8f3b255c84e8c" + }, + { + "m_Id": "cc2850d6d22e4a27a1bfbab840ba8ee2" + }, + { + "m_Id": "a31359da93cd43489c8a0ddc522c1e34" + }, + { + "m_Id": "5260828f1a9340bba0850b529eab555e" + }, + { + "m_Id": "50f7611ca222462baa2a9012071e7778" + }, + { + "m_Id": "731dfbff54a24314bd72456fc99c3562" + }, + { + "m_Id": "4298618b682246f99867908047bc271b" + }, + { + "m_Id": "33043e5554f244929df218ab57af3cfc" + }, + { + "m_Id": "e8d3757d40534b0d9cfdd2b8b5a4cf83" + }, + { + "m_Id": "52c19609cc8a4131bcbf17dda5e26142" + }, + { + "m_Id": "2194115e286743ada70d9049f07ad41d" + }, + { + "m_Id": "1d8e668bfc6c4ea18688cd09eab94678" + }, + { + "m_Id": "3cb17257805c480796eb3ceff99ed6a4" + }, + { + "m_Id": "54e30d3dc23846a28a0785e6e37720bc" + }, + { + "m_Id": "1f5759f25d314870a5cb410b559352d5" + }, + { + "m_Id": "466e79255cd74b99b006246159b7b833" + }, + { + "m_Id": "91ac88e441ea4086b40ddd4e5ed59c4b" + }, + { + "m_Id": "d37bee9cd4134c5ca141c7f949fc58a6" + }, + { + "m_Id": "18e91d5645e54d158188690d59870efa" + }, + { + "m_Id": "5b26a590f6aa45b99a84a717567a74b0" + }, + { + "m_Id": "5d86eb16a23243f39224b9973e3615ec" + }, + { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + { + "m_Id": "398e5b93f4414662bb436629815c19ea" + }, + { + "m_Id": "f04debede3c04da5aed9738b7794df17" + }, + { + "m_Id": "d4286b4dc1df42dc979af37ce8aef9ca" + }, + { + "m_Id": "53c9b32bb86548ceab5b2f2560048435" + }, + { + "m_Id": "338235ab890b4109bbe2f473272220c6" + }, + { + "m_Id": "c29b0cea9eb84998b2acfd23fd90641f" + }, + { + "m_Id": "c610a3df043749feab182161248812e2" + }, + { + "m_Id": "c803ee7f88a642ffbed90a2fd404725d" + }, + { + "m_Id": "df8c993165174790994c76c5dca0f8d9" + }, + { + "m_Id": "7355ce0418844781b97d72f5fed7f562" + }, + { + "m_Id": "cedd32ee0b4a419c939d17bacfb00ddd" + }, + { + "m_Id": "8047ad5c75004738994941835120ea73" + }, + { + "m_Id": "97e8a63e6ff046e687f550cc272c90d5" + }, + { + "m_Id": "a7c7c5e2c93045f9a142370141145621" + }, + { + "m_Id": "f4c239ca699c45978efc6a982f332c0f" + }, + { + "m_Id": "9c03ea90ae63433ca68e8b90c41e67c2" + }, + { + "m_Id": "759c527e9c344f7a95d77bbc7ed03237" + }, + { + "m_Id": "ba7ecde994b4474184c1c30ed4439bb3" + }, + { + "m_Id": "9ecb55f770a6449c8eaa8094328a5b01" + }, + { + "m_Id": "5da67c276d8a460a841c0a5d31161498" + }, + { + "m_Id": "caacc7bfacaa462cb79b1ca76d8eb93c" + }, + { + "m_Id": "c4c0321734e54e6a933fc90e3ce39e4f" + }, + { + "m_Id": "05fef445d84f45099a37dc423d62c85c" + }, + { + "m_Id": "b973ca0e4efb4dc2a0a905de3b1e5122" + }, + { + "m_Id": "86714225715947dd992fa9d9be01d513" + }, + { + "m_Id": "ca921050c00748e698611b527784ba96" + }, + { + "m_Id": "76520b7680d54ea7a3c2403da786ac5f" + }, + { + "m_Id": "9f2c61fddaff41df8764adeb9008f2fa" + }, + { + "m_Id": "93b4253497d147e8a714cf655533b4af" + }, + { + "m_Id": "19c06bb6934942279021be4aad3bc800" + }, + { + "m_Id": "9df7360a64294d7fb33e4bb464809bcc" + }, + { + "m_Id": "0ef1cc6563684f1fa5db8e87d52f8242" + }, + { + "m_Id": "fa5a99d79ecc4d7b88b9216911a4bf65" + }, + { + "m_Id": "f457d96fdf854621bcb3f3c9e069a416" + }, + { + "m_Id": "df859d80fdd14c57a04ec5a5108850a4" + }, + { + "m_Id": "a8ffdecf1edb4fbaa321c4099d17ea2e" + }, + { + "m_Id": "32267f216a9b418a9ef8e39620e4cd64" + }, + { + "m_Id": "a1d1982804614a6897989321f580888e" + }, + { + "m_Id": "c607f6a6bc884e7eb0be0be94eb1f485" + }, + { + "m_Id": "7f4c33107f064c7da4d5577b6541188d" + }, + { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + { + "m_Id": "c86c6b544c324d2a8d95e0f1dfd9b04d" + }, + { + "m_Id": "f952e2fe6b574b30b3434961f7285c33" + }, + { + "m_Id": "f83296f7700c4b0fa56a9338aa03745c" + }, + { + "m_Id": "7e67cced55a64807a6feaeb890265768" + }, + { + "m_Id": "62fa6369499147408c57f36563e87f9b" + }, + { + "m_Id": "0c624a0937e3404cbc1703c449651c0b" + }, + { + "m_Id": "318498c50d1d4e88b71c684d578ac0ca" + }, + { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + { + "m_Id": "7ffcf46e2d4c484d8296f6511a9c96d6" + }, + { + "m_Id": "081b33fe14b24902a4ac42e2316af506" + }, + { + "m_Id": "dbf32d2b6dbf4d619266bf52e18df460" + }, + { + "m_Id": "1c74b97048a049e79c38adc0357e2e1a" + }, + { + "m_Id": "f36b4e9d8dff4b5f88080db09748b890" + }, + { + "m_Id": "9104f2d7ad4e471b8749ef629ed1088e" + }, + { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + { + "m_Id": "febc32f50e9745a794212c04541033c3" + }, + { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + { + "m_Id": "bfbacbfd6c6949fdad622227b8cb79d5" + }, + { + "m_Id": "cfe6ffa13ac44ec4adfc8ed3f865384c" + }, + { + "m_Id": "92a44c53f868404b9129d791d8f34404" + }, + { + "m_Id": "11732bb4207c4a17b58e5e5d34692f53" + }, + { + "m_Id": "04c233b8a56947ea97945e19370b1e21" + }, + { + "m_Id": "fc8699054b8d4ad4a170916b1db66f03" + }, + { + "m_Id": "fe4bb614fd7c4baf92759c4dcff54fc7" + }, + { + "m_Id": "0d5728746d9343e89247e2deccc57aa6" + }, + { + "m_Id": "78d30d0064d943acaa6963fab3a547f3" + }, + { + "m_Id": "6eba1c74339f4cd09cd1c5bbedc62d03" + }, + { + "m_Id": "8041700c702e4c639fc882b2c52c4d26" + }, + { + "m_Id": "9e3ebfe6060d407daada184eb3ed1b49" + }, + { + "m_Id": "917a3ac38dc74e0d86dcf3da09dd1a08" + }, + { + "m_Id": "32654feef18049e38ff4ae23533a8fc3" + }, + { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + { + "m_Id": "ea75abbf60a849019be7b0578453b720" + }, + { + "m_Id": "79f72a6ab2b24b19b379ea4538b3cea8" + }, + { + "m_Id": "93dc68e07bea4d88969cb8497aedb688" + }, + { + "m_Id": "225386d2c73247e0941a2756841a3510" + }, + { + "m_Id": "0ddf05eb832e4b689a033ed79eba4e57" + }, + { + "m_Id": "8aac51266ea54d3ca1b6d3c1e5df8cd1" + }, + { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + { + "m_Id": "18b82113309c4b8d9852f9fa1b0df59f" + }, + { + "m_Id": "be921ee031a9481bad2a75cc630e1c9c" + }, + { + "m_Id": "43925d85409c4c568deb5cab95ce196d" + }, + { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + { + "m_Id": "a5fd999d5a6f4cdbb28c90889d5151f9" + }, + { + "m_Id": "e610b6fa1c2e46bdaee8787719758a44" + }, + { + "m_Id": "ef19751d18a54b44840b2e8621cbe7e9" + }, + { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + { + "m_Id": "4d2fea2542684f2ca4b9e01aa4089ee1" + }, + { + "m_Id": "f434504cbd524517a9ce629c1a616f31" + }, + { + "m_Id": "3236c43de3bb4ea6a4d47529faf6287c" + }, + { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + { + "m_Id": "73a7e4c60ff040faa214d0e65e5077ce" + }, + { + "m_Id": "894265a6ff2b40d69e1df86185463048" + }, + { + "m_Id": "3aaf880ebb944cb2aac5ac8ea8e40300" + }, + { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + { + "m_Id": "de080844b3d14cd29445e46afc25ff16" + }, + { + "m_Id": "41a2ad33393f414eb907db196f390401" + }, + { + "m_Id": "69f2785998b842928fedd49dc353949a" + }, + { + "m_Id": "b40ffc3bc7f241f9bb4466a341075eec" + }, + { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + { + "m_Id": "563a5800a14c441aae4434176405e7c8" + }, + { + "m_Id": "2da1ace99bda4281ac059a7943a83707" + }, + { + "m_Id": "58e72a495b564301a820b43db912df3d" + }, + { + "m_Id": "85919bf0fb954ea5bbd85aee75548671" + }, + { + "m_Id": "8b7ba9cd31bf4837a428f3d49be77d89" + }, + { + "m_Id": "5ac32d0ee6a14944916aac3136a270f3" + }, + { + "m_Id": "07ccd31e8ff64082998e9b75d29e6040" + }, + { + "m_Id": "7f827a3cdae746509e0dbcbc94884489" + }, + { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + { + "m_Id": "c31677d0c32944c2acf28849ca70d784" + }, + { + "m_Id": "8c31d441f8de455da2b16221183f6747" + }, + { + "m_Id": "bfd54a576925456e853aa8845eaf0d2a" + }, + { + "m_Id": "c1dc90083616463ebeda582a5612aaaf" + }, + { + "m_Id": "49563560b66b4be2b9b20bec37b37229" + } + ], + "m_GroupDatas": [ + { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + } + ], + "m_StickyNoteDatas": [ + { + "m_Id": "0a8f4c0a31d8483a8f9725a7b2572428" + }, + { + "m_Id": "01c67512dfaf4dae8794fa0297a97629" + }, + { + "m_Id": "87e965ed28a34e348c8ab3c9e0287604" + }, + { + "m_Id": "741ca17a7fa54a4aba2b338e42afbcef" + }, + { + "m_Id": "4d7fdfabdc4e43b8b1b65c4e1f9104e3" + }, + { + "m_Id": "9182a16e88c8434eb35ff1f63bb49e8b" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "035426df75f84f88aca26e0e30c92b50" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a8f71db37bcf409dafa6c9b01bb96169" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "03edec114129436fb01015f07ff7f10a" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba9a2ca04ce041e38e549ca34918e30c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "04c233b8a56947ea97945e19370b1e21" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11732bb4207c4a17b58e5e5d34692f53" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "05fef445d84f45099a37dc423d62c85c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "54e30d3dc23846a28a0785e6e37720bc" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0672160770494af3894dcee104613b09" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bd06c49ec440472da7f53fde41efa972" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "06db988d9f42411085151074e35e62d5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "07ccd31e8ff64082998e9b75d29e6040" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "081b33fe14b24902a4ac42e2316af506" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0c624a0937e3404cbc1703c449651c0b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "62fa6369499147408c57f36563e87f9b" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0d5728746d9343e89247e2deccc57aa6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0d8c3a1c09f24db4a28644998f76c89c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1c5c2d9dd3c94f899456f0e784281ca4" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0ddf05eb832e4b689a033ed79eba4e57" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0ef1cc6563684f1fa5db8e87d52f8242" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "df859d80fdd14c57a04ec5a5108850a4" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "11732bb4207c4a17b58e5e5d34692f53" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "11f64b30d68944d484c6e3b1280bff61" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8ce99114fb74093bd17f882bd54ab1a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9be492b061b948c8bf9969a7a476da96" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9be492b061b948c8bf9969a7a476da96" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "152dd0d71e5a424f905fbeab3716865d" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f36b4e9d8dff4b5f88080db09748b890" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "16d1bef854c747fe9cdfd2a58fc23658" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "731dfbff54a24314bd72456fc99c3562" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "18b82113309c4b8d9852f9fa1b0df59f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "18e91d5645e54d158188690d59870efa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "19c06bb6934942279021be4aad3bc800" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c5c2d9dd3c94f899456f0e784281ca4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "318498c50d1d4e88b71c684d578ac0ca" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c5c2d9dd3c94f899456f0e784281ca4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "eb913c79adc9470ebeaf8aa017b929c9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c74b97048a049e79c38adc0357e2e1a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2da8f941d9cf4a7797b3a250c322261d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1d8e668bfc6c4ea18688cd09eab94678" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3cb17257805c480796eb3ceff99ed6a4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5ac32d0ee6a14944916aac3136a270f3" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5ac32d0ee6a14944916aac3136a270f3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1f5759f25d314870a5cb410b559352d5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "05fef445d84f45099a37dc423d62c85c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "33043e5554f244929df218ab57af3cfc" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4298618b682246f99867908047bc271b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8ce99114fb74093bd17f882bd54ab1a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2194115e286743ada70d9049f07ad41d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3cb17257805c480796eb3ceff99ed6a4" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "225386d2c73247e0941a2756841a3510" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "24040992221045bb9d22da9a78437197" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "581bb0c3846648a68b3050d26967d45f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "24040992221045bb9d22da9a78437197" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "293e9cc943084a00acd57b6d72c2f5d4" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5d141c63b25f4a7a99aaffe9c41c7764" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5b26a590f6aa45b99a84a717567a74b0" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5b26a590f6aa45b99a84a717567a74b0" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2c96c5f6712447e58eda432b764d07ce" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a84bc040b0ab456e92b7dfd5d9a636a4" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2d0bbca38ec145e2a4b4886f01ab4c47" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2da1ace99bda4281ac059a7943a83707" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2dc0377e855949349c7a1052f7e3ff6c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6396afda9540464580bb27eab9db11a2" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "32267f216a9b418a9ef8e39620e4cd64" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c607f6a6bc884e7eb0be0be94eb1f485" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3236c43de3bb4ea6a4d47529faf6287c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "325e14ba71ba4c1ab846128cc0cb3655" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a84bc040b0ab456e92b7dfd5d9a636a4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "32654feef18049e38ff4ae23533a8fc3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33043e5554f244929df218ab57af3cfc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "91ac88e441ea4086b40ddd4e5ed59c4b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33043e5554f244929df218ab57af3cfc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba7ecde994b4474184c1c30ed4439bb3" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "338235ab890b4109bbe2f473272220c6" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "91ac88e441ea4086b40ddd4e5ed59c4b" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "398e5b93f4414662bb436629815c19ea" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3aaf880ebb944cb2aac5ac8ea8e40300" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3cb17257805c480796eb3ceff99ed6a4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d4286b4dc1df42dc979af37ce8aef9ca" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "41a2ad33393f414eb907db196f390401" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4298618b682246f99867908047bc271b" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43925d85409c4c568deb5cab95ce196d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "466e79255cd74b99b006246159b7b833" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a7c7c5e2c93045f9a142370141145621" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1c74b97048a049e79c38adc0357e2e1a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "48e1f0f7e59646d1a499fe64fa9ee1f5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bfbacbfd6c6949fdad622227b8cb79d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "49563560b66b4be2b9b20bec37b37229" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dc0377e855949349c7a1052f7e3ff6c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4d2fea2542684f2ca4b9e01aa4089ee1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "50f7611ca222462baa2a9012071e7778" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfa2b3edff80416fa8545965c3c47d3d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5260828f1a9340bba0850b529eab555e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "52c19609cc8a4131bcbf17dda5e26142" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a31359da93cd43489c8a0ddc522c1e34" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "53c9b32bb86548ceab5b2f2560048435" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ca921050c00748e698611b527784ba96" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "53c9b32bb86548ceab5b2f2560048435" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d4286b4dc1df42dc979af37ce8aef9ca" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "54e30d3dc23846a28a0785e6e37720bc" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "86714225715947dd992fa9d9be01d513" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "563a5800a14c441aae4434176405e7c8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9df7360a64294d7fb33e4bb464809bcc" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9df7360a64294d7fb33e4bb464809bcc" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "57f34c151af34548b981f67f69fb01bb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ecb3cc7643b545c3b78349bdcae92f63" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "581bb0c3846648a68b3050d26967d45f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "636eb21b6031474cad03acd4b63413f7" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "581bb0c3846648a68b3050d26967d45f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "db3ecb1c0e884596b20f467abfe7a56f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "58e72a495b564301a820b43db912df3d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49563560b66b4be2b9b20bec37b37229" + }, + "m_SlotId": 177458063 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49563560b66b4be2b9b20bec37b37229" + }, + "m_SlotId": 2009327148 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5ac32d0ee6a14944916aac3136a270f3" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7f827a3cdae746509e0dbcbc94884489" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b26a590f6aa45b99a84a717567a74b0" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5d86eb16a23243f39224b9973e3615ec" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5d141c63b25f4a7a99aaffe9c41c7764" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b133d79ba4bc41af8ed5110288bf16ff" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5d86eb16a23243f39224b9973e3615ec" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a7c7c5e2c93045f9a142370141145621" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5da67c276d8a460a841c0a5d31161498" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "466e79255cd74b99b006246159b7b833" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "610f0dc568cd4d1fa7ea371be712a923" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "febc32f50e9745a794212c04541033c3" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b973ca0e4efb4dc2a0a905de3b1e5122" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c29b0cea9eb84998b2acfd23fd90641f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c610a3df043749feab182161248812e2" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c803ee7f88a642ffbed90a2fd404725d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "62fa6369499147408c57f36563e87f9b" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7e67cced55a64807a6feaeb890265768" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "636eb21b6031474cad03acd4b63413f7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c03ea90ae63433ca68e8b90c41e67c2" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "636eb21b6031474cad03acd4b63413f7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e0d099b286e74cdd8eef478c2ba6a46d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "035426df75f84f88aca26e0e30c92b50" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "035426df75f84f88aca26e0e30c92b50" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "67cd62080df840ec941b6cf2653b199f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a84bc040b0ab456e92b7dfd5d9a636a4" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "68eaf5df825b4d698f15a6b079db429a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8b7ba9cd31bf4837a428f3d49be77d89" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "69f2785998b842928fedd49dc353949a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6ce2ce6219d94187b54d78ffcef3de1b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7f827a3cdae746509e0dbcbc94884489" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6eba1c74339f4cd09cd1c5bbedc62d03" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "731dfbff54a24314bd72456fc99c3562" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "54048a36c65a48d08ec402c82a41df42" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7355ce0418844781b97d72f5fed7f562" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8047ad5c75004738994941835120ea73" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "73a7e4c60ff040faa214d0e65e5077ce" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "76520b7680d54ea7a3c2403da786ac5f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "338235ab890b4109bbe2f473272220c6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "76520b7680d54ea7a3c2403da786ac5f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "86714225715947dd992fa9d9be01d513" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "771f758c8e0a4c748ab647b72a32c4a7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "581bb0c3846648a68b3050d26967d45f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "77fa18f03d944a35b1e7817552c8dd4a" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57f34c151af34548b981f67f69fb01bb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "78d30d0064d943acaa6963fab3a547f3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "79f72a6ab2b24b19b379ea4538b3cea8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "52c19609cc8a4131bcbf17dda5e26142" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "52c19609cc8a4131bcbf17dda5e26142" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7e67cced55a64807a6feaeb890265768" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f952e2fe6b574b30b3434961f7285c33" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7e67cced55a64807a6feaeb890265768" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f952e2fe6b574b30b3434961f7285c33" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7e67cced55a64807a6feaeb890265768" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f83296f7700c4b0fa56a9338aa03745c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7f4c33107f064c7da4d5577b6541188d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7f827a3cdae746509e0dbcbc94884489" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "16d1bef854c747fe9cdfd2a58fc23658" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7ffcf46e2d4c484d8296f6511a9c96d6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8041700c702e4c639fc882b2c52c4d26" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8047ad5c75004738994941835120ea73" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "97e8a63e6ff046e687f550cc272c90d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "809df95983ad4f6a9b642ce84a9e74a7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57f34c151af34548b981f67f69fb01bb" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "85919bf0fb954ea5bbd85aee75548671" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8b7ba9cd31bf4837a428f3d49be77d89" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "86714225715947dd992fa9d9be01d513" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "338235ab890b4109bbe2f473272220c6" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8757abe351fc4351abd6115a14dba130" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a8f71db37bcf409dafa6c9b01bb96169" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "894265a6ff2b40d69e1df86185463048" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "29db6004890e4f13917ddc8ceaae2ebe" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8aac51266ea54d3ca1b6d3c1e5df8cd1" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8b7ba9cd31bf4837a428f3d49be77d89" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "50f7611ca222462baa2a9012071e7778" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8c31d441f8de455da2b16221183f6747" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9104f2d7ad4e471b8749ef629ed1088e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1c74b97048a049e79c38adc0357e2e1a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "917a3ac38dc74e0d86dcf3da09dd1a08" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "91ac88e441ea4086b40ddd4e5ed59c4b" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba7ecde994b4474184c1c30ed4439bb3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "92a44c53f868404b9129d791d8f34404" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0672160770494af3894dcee104613b09" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "92a44c53f868404b9129d791d8f34404" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ecb3cc7643b545c3b78349bdcae92f63" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "93b4253497d147e8a714cf655533b4af" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a8ffdecf1edb4fbaa321c4099d17ea2e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "93dc68e07bea4d88969cb8497aedb688" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "97e8a63e6ff046e687f550cc272c90d5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "76520b7680d54ea7a3c2403da786ac5f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "988c622f16f64a9898a8f3b255c84e8c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2dc0377e855949349c7a1052f7e3ff6c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9900fba29f7c4a8e9ef63caa3cdecb4a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c586ec91ca9043a99c6359e8137eea8f" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cb66babc65414b46b1a10ba32a89a0d1" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cb66babc65414b46b1a10ba32a89a0d1" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11f64b30d68944d484c6e3b1280bff61" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9be492b061b948c8bf9969a7a476da96" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "152dd0d71e5a424f905fbeab3716865d" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9c03ea90ae63433ca68e8b90c41e67c2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "759c527e9c344f7a95d77bbc7ed03237" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9c03ea90ae63433ca68e8b90c41e67c2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "759c527e9c344f7a95d77bbc7ed03237" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9c03ea90ae63433ca68e8b90c41e67c2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f4c239ca699c45978efc6a982f332c0f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9d897128ed844e848e23acd66dcf0292" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b6468f11990d4fc29393e12aac937398" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9df7360a64294d7fb33e4bb464809bcc" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a8ffdecf1edb4fbaa321c4099d17ea2e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9e3ebfe6060d407daada184eb3ed1b49" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "570399c39d8548039e687c459a900bfe" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9ecb55f770a6449c8eaa8094328a5b01" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11f64b30d68944d484c6e3b1280bff61" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9f2c61fddaff41df8764adeb9008f2fa" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "76520b7680d54ea7a3c2403da786ac5f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a1d1982804614a6897989321f580888e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "32267f216a9b418a9ef8e39620e4cd64" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a1d1982804614a6897989321f580888e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c607f6a6bc884e7eb0be0be94eb1f485" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a267acde60024329b4e0936179de7717" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a31359da93cd43489c8a0ddc522c1e34" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "df4ccb6d2f8546a1bdbc71c6c1056889" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f457d96fdf854621bcb3f3c9e069a416" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f457d96fdf854621bcb3f3c9e069a416" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a5c994c3937e4e72b2438108ca0aad92" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "152dd0d71e5a424f905fbeab3716865d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a5fd999d5a6f4cdbb28c90889d5151f9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a7c7c5e2c93045f9a142370141145621" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f4c239ca699c45978efc6a982f332c0f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a84bc040b0ab456e92b7dfd5d9a636a4" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "77fa18f03d944a35b1e7817552c8dd4a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a8f71db37bcf409dafa6c9b01bb96169" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "03edec114129436fb01015f07ff7f10a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a8ffdecf1edb4fbaa321c4099d17ea2e" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "32267f216a9b418a9ef8e39620e4cd64" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b133d79ba4bc41af8ed5110288bf16ff" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1c5c2d9dd3c94f899456f0e784281ca4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5da67c276d8a460a841c0a5d31161498" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "91c58898c6bb409395192a9efe525485" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b39562c3120349b784d90f66734f0158" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ba9a2ca04ce041e38e549ca34918e30c" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b40ffc3bc7f241f9bb4466a341075eec" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b448a23f9f09460994f0296f1f58a2b0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9d897128ed844e848e23acd66dcf0292" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b6468f11990d4fc29393e12aac937398" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "92a44c53f868404b9129d791d8f34404" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b95fc0c69dfd41f4b2aa0d3dd326f562" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9900fba29f7c4a8e9ef63caa3cdecb4a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b973ca0e4efb4dc2a0a905de3b1e5122" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "05fef445d84f45099a37dc423d62c85c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f04debede3c04da5aed9738b7794df17" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f04debede3c04da5aed9738b7794df17" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ba7ecde994b4474184c1c30ed4439bb3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ba9a2ca04ce041e38e549ca34918e30c" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11f64b30d68944d484c6e3b1280bff61" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bb7674282a934e3b9bfb057277071aa7" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "62fa6369499147408c57f36563e87f9b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bd06c49ec440472da7f53fde41efa972" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11732bb4207c4a17b58e5e5d34692f53" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "be921ee031a9481bad2a75cc630e1c9c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "65a3cec9a68746b6a7deba04e5812570" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bfbacbfd6c6949fdad622227b8cb79d5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "febc32f50e9745a794212c04541033c3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bfd54a576925456e853aa8845eaf0d2a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c1dc90083616463ebeda582a5612aaaf" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "49563560b66b4be2b9b20bec37b37229" + }, + "m_SlotId": -1746081185 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c29b0cea9eb84998b2acfd23fd90641f" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "df8c993165174790994c76c5dca0f8d9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c31677d0c32944c2acf28849ca70d784" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1ec4b442871840d384da7ea6066789d6" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c4c0321734e54e6a933fc90e3ce39e4f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c586ec91ca9043a99c6359e8137eea8f" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0672160770494af3894dcee104613b09" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c607f6a6bc884e7eb0be0be94eb1f485" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "114e1cd7bdae4a49874cda3f289705fa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c610a3df043749feab182161248812e2" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7355ce0418844781b97d72f5fed7f562" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c803ee7f88a642ffbed90a2fd404725d" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedd32ee0b4a419c939d17bacfb00ddd" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ca921050c00748e698611b527784ba96" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9f2c61fddaff41df8764adeb9008f2fa" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "caacc7bfacaa462cb79b1ca76d8eb93c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cb66babc65414b46b1a10ba32a89a0d1" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b6468f11990d4fc29393e12aac937398" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cc2850d6d22e4a27a1bfbab840ba8ee2" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e12c5f6ea3ba4826bbd98bdadd9fdd60" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cd561be7e62240d38868b7451e936e0d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "df4ccb6d2f8546a1bdbc71c6c1056889" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cedd32ee0b4a419c939d17bacfb00ddd" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "97e8a63e6ff046e687f550cc272c90d5" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cfe6ffa13ac44ec4adfc8ed3f865384c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "11732bb4207c4a17b58e5e5d34692f53" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cfe6ffa13ac44ec4adfc8ed3f865384c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "92a44c53f868404b9129d791d8f34404" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d33a9109fde648d3b070274381ab59db" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b95fc0c69dfd41f4b2aa0d3dd326f562" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d37bee9cd4134c5ca141c7f949fc58a6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5d86eb16a23243f39224b9973e3615ec" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4286b4dc1df42dc979af37ce8aef9ca" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f5759f25d314870a5cb410b559352d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4ff3f6694b74efeafa02a530afce2cb" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0672160770494af3894dcee104613b09" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d4ff3f6694b74efeafa02a530afce2cb" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c586ec91ca9043a99c6359e8137eea8f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d6bc16c340e9496cb653d57ae3dc4bc8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d7de083c00574d7ea0b9e8975d5884a2" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "133ea222657e40e884b5ddfbb3456b1c" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "db3ecb1c0e884596b20f467abfe7a56f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "610f0dc568cd4d1fa7ea371be712a923" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dbf32d2b6dbf4d619266bf52e18df460" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "de080844b3d14cd29445e46afc25ff16" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b99740d7a5944affaaaec293c4154484" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "df4ccb6d2f8546a1bdbc71c6c1056889" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cc2850d6d22e4a27a1bfbab840ba8ee2" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "df859d80fdd14c57a04ec5a5108850a4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "32267f216a9b418a9ef8e39620e4cd64" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "df8c993165174790994c76c5dca0f8d9" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8047ad5c75004738994941835120ea73" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "24040992221045bb9d22da9a78437197" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "24040992221045bb9d22da9a78437197" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e2923f4949d54387b5b24c430a889827" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e610b6fa1c2e46bdaee8787719758a44" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e83457a070b141b5b171a895bf0d6389" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e000f96cd8fb42e19ec0e9b69facf6dc" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "85919bf0fb954ea5bbd85aee75548671" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8b7075311884a71a2798a0654cd2953" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "85919bf0fb954ea5bbd85aee75548671" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8ce99114fb74093bd17f882bd54ab1a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "33043e5554f244929df218ab57af3cfc" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8d324bebd9f46c381e4e35fd38365a8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c586ec91ca9043a99c6359e8137eea8f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8d3757d40534b0d9cfdd2b8b5a4cf83" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7cff04c6100a49b6b46466becdc0bc2e" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ea75abbf60a849019be7b0578453b720" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "eb913c79adc9470ebeaf8aa017b929c9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9b2840bea8984c22acc50b45cb5c235e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ecb3cc7643b545c3b78349bdcae92f63" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5d141c63b25f4a7a99aaffe9c41c7764" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ef19751d18a54b44840b2e8621cbe7e9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a81b1d7b1ca4a299b94c7be610dc8fd" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f04debede3c04da5aed9738b7794df17" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "61caa07ef72e430399ce13dc525088ed" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f36b4e9d8dff4b5f88080db09748b890" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9104f2d7ad4e471b8749ef629ed1088e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f36b4e9d8dff4b5f88080db09748b890" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9104f2d7ad4e471b8749ef629ed1088e" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f36b4e9d8dff4b5f88080db09748b890" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9104f2d7ad4e471b8749ef629ed1088e" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f434504cbd524517a9ce629c1a616f31" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5a92d6910d794e8b9385d55130d52ad7" + }, + "m_SlotId": 1309511136 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f457d96fdf854621bcb3f3c9e069a416" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "df859d80fdd14c57a04ec5a5108850a4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f4c239ca699c45978efc6a982f332c0f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "91ac88e441ea4086b40ddd4e5ed59c4b" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f83296f7700c4b0fa56a9338aa03745c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9900fba29f7c4a8e9ef63caa3cdecb4a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f952e2fe6b574b30b3434961f7285c33" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f83296f7700c4b0fa56a9338aa03745c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "fa5a99d79ecc4d7b88b9216911a4bf65" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a3dde4ad5e2a411a9ed65b4482699baf" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "fc8699054b8d4ad4a170916b1db66f03" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "fe4bb614fd7c4baf92759c4dcff54fc7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "febc32f50e9745a794212c04541033c3" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "eb913c79adc9470ebeaf8aa017b929c9" + }, + "m_SlotId": 2 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 3087.0, + "y": 321.0 + }, + "m_Blocks": [ + { + "m_Id": "d62362e7b1db41b5b2850ca4f7727193" + }, + { + "m_Id": "84d55ba92e74430996e3472b42307dbe" + }, + { + "m_Id": "f99c7d64d64e494f9fa89870d003303e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 3087.000244140625, + "y": 610.0 + }, + "m_Blocks": [ + { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + { + "m_Id": "6396afda9540464580bb27eab9db11a2" + }, + { + "m_Id": "91c58898c6bb409395192a9efe525485" + }, + { + "m_Id": "e0d099b286e74cdd8eef478c2ba6a46d" + }, + { + "m_Id": "2da8f941d9cf4a7797b3a250c322261d" + }, + { + "m_Id": "e12c5f6ea3ba4826bbd98bdadd9fdd60" + }, + { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + { + "m_Id": "dfa2b3edff80416fa8545965c3c47d3d" + }, + { + "m_Id": "54048a36c65a48d08ec402c82a41df42" + }, + { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + }, + { + "m_Id": "114e1cd7bdae4a49874cda3f289705fa" + }, + { + "m_Id": "c86c6b544c324d2a8d95e0f1dfd9b04d" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "UnityGLTF", + "m_GraphPrecision": 0, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "de2d39e22ef549f58ed7b2a1f989a770" + }, + { + "m_Id": "2adddb3fba4f472caec286b8688d99fe" + }, + { + "m_Id": "d1ea4f0250a34d99863ee930d384b759" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0013a756c5cc437a94860bae95387f34", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "003765826ac04595817a5e52f84f6b1f", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "00951ddb04f34565a8d8c74808992db5", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "015d9ea60aeb4c768b0337edce093524", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "01c648129a4849bab3a46e612a514bc0", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "01c67512dfaf4dae8794fa0297a97629", + "m_Title": "TODO Eyeballed value", + "m_Content": "to match other viewer's refraction behaviour. Need to figure out proper IOR math.", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -957.0, + "y": 340.0, + "width": 199.0, + "height": 100.0 + }, + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "020c5dc5e3174c27b7073ade9f5c58ca", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "029e4d09db314fe8b33f71a5152aeed3", + "m_Id": 0, + "m_DisplayName": "Specular Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "02ea37d7654b45adb4b6519d05132bf0", + "m_Guid": { + "m_GuidSerialized": "f525b073-6205-4e1e-b42c-c0de11b433a2" + }, + "m_Name": "Transmission Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Transmission_Map", + "m_OverrideReferenceName": "transmissionTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "03393b3bd7734b3fbfa803c2d160bccb", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "035426df75f84f88aca26e0e30c92b50", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1180.000244140625, + "y": 1432.000244140625, + "width": 182.99993896484376, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "6c8a437fd25b4f4081338f7eb41d4ea1" + }, + { + "m_Id": "ca1885fb0716432896b8315c89080433" + }, + { + "m_Id": "98cbaa17fc8b45cf9f425f6652e5db9c" + }, + { + "m_Id": "b483df628a7f4bd6830039508e1b6acf" + }, + { + "m_Id": "a6724ad4ae9e48d69a2d176e04851177" + }, + { + "m_Id": "af3117c8564c4293acd58e3b5cbf06cf" + }, + { + "m_Id": "1ac470cc22754cd9b15cd56f4c25921a" + }, + { + "m_Id": "52cba1718ced4455b5e42a41b2d8d60b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "03cb444c984d4bec878f4b3441c27421", + "m_Id": 0, + "m_DisplayName": "Iridescence Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "03edec114129436fb01015f07ff7f10a", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -779.0001220703125, + "y": 1532.000244140625, + "width": 127.9998779296875, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "6dff5c5b0ba849b9bcfc2d3655edaab2" + }, + { + "m_Id": "063a4b41272d4df28a662aecc8da4296" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "043dbc7e1661471eaeccef62e594a7b3", + "m_Guid": { + "m_GuidSerialized": "db02ae8d-61fe-4d8c-9280-7d7da614e01e" + }, + "m_Name": "Emissive Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_043dbc7e1661471eaeccef62e594a7b3", + "m_OverrideReferenceName": "emissiveTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "04566dece18d4711bfc06aa4518e36ca", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "04c233b8a56947ea97945e19370b1e21", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -873.9999389648438, + "y": 762.0000610351563, + "width": 126.0, + "height": 76.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "c77833c1b72b4333b74989301fd1dabf" + }, + { + "m_Id": "dc0acde1526a451182f632f96ca2646d" + } + ], + "synonyms": [ + "Vector 1", + "1", + "v1", + "vec1", + "scalar" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "05fef445d84f45099a37dc423d62c85c", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 197.99990844726563, + "y": -1090.9998779296875, + "width": 125.99996948242188, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f18908317d754608806e71de985248b9" + }, + { + "m_Id": "c323a744d86d4d769d160712a9158dd2" + }, + { + "m_Id": "4bc66ccd038c44a5839aae3660fe2fa4" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "063a4b41272d4df28a662aecc8da4296", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "06436a6d60c047628fcffb972f451909", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0663969fd47346fabe593928bb40b508", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "0672160770494af3894dcee104613b09", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1053.0, + "y": 620.0000610351563, + "width": 129.99993896484376, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "358ab8c582a3446b8cdff5b42cc19b9e" + }, + { + "m_Id": "c05a67cff38b47e6a88db1388f2cfa69" + }, + { + "m_Id": "84b3e8fddeff40c299ca38a8358ee503" + }, + { + "m_Id": "d2335d7b864d436dad76102ef56d2f08" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "06db988d9f42411085151074e35e62d5", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1098.0001220703125, + "y": -345.0000305175781, + "width": 165.9998779296875, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "5d74d6d78db64d4e9925acfe54a292ac" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "06f5499a20744baaaaaf8a9d5cfdb5d9", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "07ccd31e8ff64082998e9b75d29e6040", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1179.0001220703125, + "y": 1257.0001220703125, + "width": 220.9998779296875, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "67d4d737b1ae48cf9728e71ea7087f90" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a28c1bc72c564a4fbe11ea22bb853717" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "07d462669af14bb6967792667a6b3e52", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "081b33fe14b24902a4ac42e2316af506", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1691.0, + "y": 2099.0, + "width": 199.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "53584f7d765e4dd4a2ec8102a0c56f9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d4bf44ad812142cf81dd4619dbce963f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "08508de7d4e94721a9b57624e0465c79", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "089c287022154caab52b6f24775cd9d5", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "08ceaef13e204b93b4c2c05c8109c018", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0904160ed2aa4a2c89fcf793b0a0b80c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "091394b326f2467186083da0c670f363", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0918c40cbbb440ad9c220aeeec8be904", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09a523a3cc884f78b5114f79c5d82f87", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "0a2f011385a949b5a6ec4a0ade8346ba", + "m_Guid": { + "m_GuidSerialized": "b9252e74-2941-477b-a9dd-506df95c16ed" + }, + "m_Name": "Specular Color Map TIling/Scale", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_0a2f011385a949b5a6ec4a0ade8346ba", + "m_OverrideReferenceName": "specularColorTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0a5247beaa3f49cd947b1eed8824cb22", + "m_Id": 0, + "m_DisplayName": "Roughness-Metallic Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "0a8f4c0a31d8483a8f9725a7b2572428", + "m_Title": "TODO Roughness Mipmap Selection", + "m_Content": "Replace with proper logic- see https://github.com/mrdoob/three.js/blob/860af3c012915be534f8a5c37d745e2dff339e04/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js#L56", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -296.0, + "y": 130.0, + "width": 200.0, + "height": 160.0 + }, + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0ae4bad09e0d40d58dacba0ec3ee265b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0ba1ce8088b04d97a412bc5a934a6921", + "m_Id": 0, + "m_DisplayName": "Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0ba2ac3a5b6a4aa8add2b7bfa647a320", + "m_Guid": { + "m_GuidSerialized": "dcae7d13-3912-429a-94ee-a0dd4478d35a" + }, + "m_Name": "Iridescence Thickness Max", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence_Thickness_Max", + "m_OverrideReferenceName": "iridescenceThicknessMaximum", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 400.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0be390806eb9441592efb0e38b1c1d16", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0c027a63f6ee4a1f8744a43d2893937f", + "m_Id": 1, + "m_DisplayName": "Min", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Min", + "m_StageCapability": 3, + "m_Value": { + "x": 0.00009999999747378752, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "0c3ba79f7ecf4c888ad6f6816416b0fd", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "0c624a0937e3404cbc1703c449651c0b", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2341.0, + "y": 1112.0, + "width": 126.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "27a3f1d4e36d4c39b848b75e145ae907" + }, + { + "m_Id": "3756d174a86140e58bb5a7b83fdf57af" + } + ], + "synonyms": [ + "Vector 1", + "1", + "v1", + "vec1", + "scalar" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "0ca6948bbb5d4e47ad215994019d2c5c", + "m_Guid": { + "m_GuidSerialized": "737adc16-d348-4672-8ab9-ba2814a9c925" + }, + "m_Name": "Emissive Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Emissive_Map", + "m_OverrideReferenceName": "emissiveTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 2, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0cdfa53d80ba4f22858aedf3a1e41997", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0d495fd34a134a8885f72fea88aaeec4", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0d5728746d9343e89247e2deccc57aa6", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1037.0, + "y": -242.0000457763672, + "width": 227.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "b5bdc559d71140e69cab0fdc0e5dca05" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ScreenPositionNode", + "m_ObjectId": "0d8c3a1c09f24db4a28644998f76c89c", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Screen Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -516.0001220703125, + "y": -318.9999694824219, + "width": 145.00006103515626, + "height": 129.0 + } + }, + "m_Slots": [ + { + "m_Id": "e72ba189d0084f4599f95f4eab7675e2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_ScreenSpaceType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0d9e08b324f540949fde247bf1d88329", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0ddf05eb832e4b689a033ed79eba4e57", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1699.0, + "y": 2454.000244140625, + "width": 251.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "0a5247beaa3f49cd947b1eed8824cb22" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ae75beb2c1494f609bb76fbc141d12c8" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "0e4935a9458a40e18f35ecbf7419a2b9", + "m_Guid": { + "m_GuidSerialized": "4f66ed61-dcb3-4528-8af0-a3638955c3cb" + }, + "m_Name": "Roughness-Metallic Map Tilling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_0e4935a9458a40e18f35ecbf7419a2b9", + "m_OverrideReferenceName": "metallicRoughnessTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "0e4d2483a8b64fb7a756cb6a0f4419c4", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0e9d77e393a94a7d99c112df9659e1d9", + "m_Id": 0, + "m_DisplayName": "Clearcoat Roughness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0eb965d69ea74e7e9a1e21cf876897a3", + "m_Id": 0, + "m_DisplayName": "Clearcoat Mask Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0ef1cc6563684f1fa5db8e87d52f8242", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1662.0, + "y": 2321.0, + "width": 154.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "37283e18690e47c7ad820955a219d2d6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "31516f3b61504a6080a15b03bfc5b3fa" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0f0e66f956ae4391a5f9bdb15ea601ed", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0f51b843930a4f59bfa3a1b833a7a1c1", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "105a2c9d68ae4193ab40386151992454", + "m_Guid": { + "m_GuidSerialized": "7098c3c4-0621-43d8-b732-bef9cf52321f" + }, + "m_Name": "Occlusion Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Occlusion_Map_Tiling_Offset", + "m_OverrideReferenceName": "occlusionTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "10f0184310fa4952841d0a6e18a4f5a4", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "114e1cd7bdae4a49874cda3f289705fa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e8f9eb2ade9a48349179367ad11f0312" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Specular" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "11732bb4207c4a17b58e5e5d34692f53", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -659.9999389648438, + "y": 643.0, + "width": 171.99990844726563, + "height": 142.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "6a6c473e8f964a69b518df249f7f016f" + }, + { + "m_Id": "9f3aec08fb344aff8341297b4a7afcc1" + }, + { + "m_Id": "07d462669af14bb6967792667a6b3e52" + }, + { + "m_Id": "b455ebafa50b46fd8e2abd989d6e5096" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "117540daa4384de2800aa3d63387d273", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "11a6dfa971e2491b858e58a132539cbd", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "11f64b30d68944d484c6e3b1280bff61", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 666.0, + "y": 81.99998474121094, + "width": 130.0, + "height": 142.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "bd9da3a1b4354ba1b5d286ce6a887c0d" + }, + { + "m_Id": "7f3028a1768849919bc6d07042e472e1" + }, + { + "m_Id": "529dc0cf581b453599ec7393abe160ac" + }, + { + "m_Id": "c87d0fdf8b4148e395babe82e14c2b23" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "127cd56294514017bef8652af1bf619f", + "m_Id": 1, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "129d3f0a44a042bdb79469ac71d7954e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "132fdf99c1d44ac8b323108136986ad5", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "133ea222657e40e884b5ddfbb3456b1c", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1320.0, + "y": 552.0, + "width": 251.0, + "height": 166.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "b5399eefb27f48b08503213d511c389e" + }, + { + "m_Id": "7940a2c35a6f451fbb1c7b9a1e6ee3c3" + }, + { + "m_Id": "8e42e5d757ae4d9e8fbcacfb9b205f12" + }, + { + "m_Id": "1bf2d22b36764ccdb4b99c7fb9e29838" + }, + { + "m_Id": "50d1728de38b4355b295d3a96f1c07f2" + }, + { + "m_Id": "d7bd8c290807474e92e099e90263d28c" + }, + { + "m_Id": "10f0184310fa4952841d0a6e18a4f5a4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "148b5c05a260452aa2e1ab778a38b697", + "m_Guid": { + "m_GuidSerialized": "0d75e076-39d4-41d0-945f-1bbd6610160f" + }, + "m_Name": "Specular Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Specular_Map", + "m_OverrideReferenceName": "specularTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "14c36ee1905d45bea204fee0d7ad5b56", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "14eb9f49890e4fdf8e6c058bfe728c2c", + "m_Guid": { + "m_GuidSerialized": "18d2d4e9-c6dd-42bf-93c8-949b286e09f8" + }, + "m_Name": "Enable Texture Transforms", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_TEXTURE_TRANSFORMS", + "m_OverrideReferenceName": "_TEXTURE_TRANSFORM_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "14ec0a08cca146a98862d31183f587f4", + "m_Guid": { + "m_GuidSerialized": "8d87d941-2373-4cea-9fce-94433e101312" + }, + "m_Name": "Clearcoat Roughness Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Roughness Map UV", + "m_DefaultReferenceName": "_Clearcoat_Roughness_Map_UV", + "m_OverrideReferenceName": "clearcoatRoughnessTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "152dd0d71e5a424f905fbeab3716865d", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1806.000244140625, + "y": 467.9999694824219, + "width": 129.9998779296875, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "a8c88eada3b147bb99a0e6d8c31b4d32" + }, + { + "m_Id": "bbcc7b25c5024b5a99a8d3635b345c9a" + }, + { + "m_Id": "1a2b98c1a77048b2ac106c559926b880" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "15542953c5da44938d1b2d164ee23d21", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "157938a58a294edf9235f315d02de558", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "16128b0e399944f593436a891d7c4268", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "16d1bef854c747fe9cdfd2a58fc23658", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2092.0, + "y": 1037.9998779296875, + "width": 128.0, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "15542953c5da44938d1b2d164ee23d21" + }, + { + "m_Id": "e85a349c4838415bb2bc248b71851b9e" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "16d9d5e8056544c480d8706a27f3408d", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "186af275bd5e4705b7452f33b7ac33c9", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "18b82113309c4b8d9852f9fa1b0df59f", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1771.0, + "y": 1557.0, + "width": 240.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "7563ce9e24cc41d990573e34d6442e36" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3ee3385ae855473aaaf56fea09cc4360" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "18e91d5645e54d158188690d59870efa", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -891.0001220703125, + "y": -1700.0001220703125, + "width": 170.00006103515626, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "bf6e751348af40b09ab1beefc3e198a3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "50998a16883841b483e4d4e9aa26ce91" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "19017d898d6846509114fe12c75fef90", + "m_Id": 0, + "m_DisplayName": "Base Color Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "19060202407d4ef49a49c2ec295ffed2", + "m_Guid": { + "m_GuidSerialized": "fd047c9c-d23a-4081-9118-def317266497" + }, + "m_Name": "Clearcoat Mask Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Mask Map Rotation", + "m_DefaultReferenceName": "_Clearcoat_Mask_Map_Rotation", + "m_OverrideReferenceName": "clearcoatTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "192a2fa94873447f8287e671a84cfef5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "6c366b0d6ec545c3832add909e3d1e89" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1989f19083984f9482326d807005e07f", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "19ba635ae6f84c5db5f7d3388cc81a0c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "19c06bb6934942279021be4aad3bc800", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1135.0, + "y": 2048.0, + "width": 156.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "20b4c4a9ae9c4eb7b8b4aa1241c1ed88" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "148b5c05a260452aa2e1ab778a38b697" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1a2b98c1a77048b2ac106c559926b880", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1a5d204b45a44b6bac695a4ee5fa47c8", + "m_Guid": { + "m_GuidSerialized": "1cb1e4b5-a591-4a19-8fbf-37b1c7854c16" + }, + "m_Name": "Specular", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Specular", + "m_OverrideReferenceName": "specularFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1abd847191e84fa496a6007bd82bce71", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "1ac470cc22754cd9b15cd56f4c25921a", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1bd126bc26d14fa9b0bd88cffc73922b", + "m_Guid": { + "m_GuidSerialized": "256454be-0a94-46d6-bcfd-213278456f0f" + }, + "m_Name": "Occlusion Strength", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Occlusion_Strength", + "m_OverrideReferenceName": "occlusionStrength", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1bd532bd2011412a8eed2621e08e3222", + "m_Guid": { + "m_GuidSerialized": "49d40df6-78ed-46ff-8f58-05eef26bd42b" + }, + "m_Name": "Iridescence Thickness Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Iridescence Thickness Map UV", + "m_DefaultReferenceName": "_Iridescence_Thickness_Map_UV", + "m_OverrideReferenceName": "iridescenceThicknessTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1bf2d22b36764ccdb4b99c7fb9e29838", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1c118ceca899417281996660dba51179", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "1c5c2d9dd3c94f899456f0e784281ca4", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -200.00009155273438, + "y": -318.9999694824219, + "width": 130.00003051757813, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "0ae4bad09e0d40d58dacba0ec3ee265b" + }, + { + "m_Id": "f06d1da8895d4d14a112cfd10a98f5b9" + }, + { + "m_Id": "51ca380064384ca48295c59412763c9b" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "1c74b97048a049e79c38adc0357e2e1a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2504.0, + "y": 526.0, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "d65c7f3ce06c46209d297e6f47331440" + }, + { + "m_Id": "b1bf60579c8945c38bb11404fd2cbeaf" + }, + { + "m_Id": "9b37501fa48e46a9ae606c9b1ede4351" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1c85cc7a118048f08e2c25657db45472", + "m_Id": 0, + "m_DisplayName": "Occlusion Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1d6ef732e65245ee8396edf71d70ea2a", + "m_Id": 0, + "m_DisplayName": "Coat Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CoatSmoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1d7eb089df4748b89fc6c3d83bed8b76", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "1d8e668bfc6c4ea18688cd09eab94678", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -691.0001220703125, + "y": -930.0, + "width": 206.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "f38b5f84784a44bba8b095f119f5b817" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "1d9f8f8a5bfa494aa851ce0f098b4f26", + "m_Id": -1746081185, + "m_DisplayName": "RuntimeCreatedNormal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_RuntimeCreatedNormal", + "m_StageCapability": 2, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1e49e8f84d654c64af4ae30f35a7f733", + "m_Guid": { + "m_GuidSerialized": "68058dbe-f7da-4b80-ada3-3f616fac3bd3" + }, + "m_Name": "Emissive Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_1e49e8f84d654c64af4ae30f35a7f733", + "m_OverrideReferenceName": "emissiveTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1ec0d606202248be832212c48d8345db", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "1ec4b442871840d384da7ea6066789d6", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1446.0001220703125, + "y": 1247.0, + "width": 251.0, + "height": 166.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "2467a187ad844d9bb1eed7c23ef259c9" + }, + { + "m_Id": "a270ed360fa64c4998fae05b7789245c" + }, + { + "m_Id": "cb067f2269ca41d9804da04dc63c6dc9" + }, + { + "m_Id": "e56eb8bcb6164877bffc004883caa11b" + }, + { + "m_Id": "60e333f1a8584429bfe5130e8fd1db9f" + }, + { + "m_Id": "74131b61272b412cbf935c0a38793217" + }, + { + "m_Id": "bf3887a58a0f4be99954701cfd4944cf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1ec9000d27f6401e9f8c6c476ac034ab", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "1f0278f5e89c42f09d2980d99158f6d8", + "m_Id": 0, + "m_DisplayName": "Bent Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BentNormal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "1f5759f25d314870a5cb410b559352d5", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -30.000030517578126, + "y": -1006.9999389648438, + "width": 185.99986267089845, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "3b8629432b0f46f88edf17b50cbc680a" + }, + { + "m_Id": "c3cbdfdb3bf7447ca35d4c9edcecebcc" + }, + { + "m_Id": "2a92a3c85aff416185d3183c4b7c3855" + }, + { + "m_Id": "e29d4765172340899774cd4b6096c21e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "1fd92dcb775e44539582c91fa2d715ee", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1815.0001220703125, + "y": -259.0, + "width": 130.0, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "3b8f80eed15d468c858c1bb729f68b4b" + }, + { + "m_Id": "9966b44de47f44c09134230701fc17cc" + }, + { + "m_Id": "508110704c634983a721fe742b0dcafd" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "1fe354914fbb4f87b63d5007f8d90e59", + "m_Id": 0, + "m_DisplayName": "Clearcoat Mask Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "2090fe25b14c4580b73042885a983527", + "m_Id": 0, + "m_DisplayName": "Override Normal Map is XYZ", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "20b14d2ae2434cf38a81633609bf5f43", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "20b4c4a9ae9c4eb7b8b4aa1241c1ed88", + "m_Id": 0, + "m_DisplayName": "Specular Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "20d582c282a9450484c2d45dada8e8a9", + "m_Guid": { + "m_GuidSerialized": "8caf300e-d530-4793-835f-30b40abbc6f2" + }, + "m_Name": "Override Normal Map is XYZ", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Override Normal Map is XYZ", + "m_DefaultReferenceName": "_Override_Normal_Map_is_XYZ", + "m_OverrideReferenceName": "_NormalMapFormatXYZ", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "21805134879849a892ae13b1af742efb", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalVectorNode", + "m_ObjectId": "2194115e286743ada70d9049f07ad41d", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Normal Vector", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -691.0001220703125, + "y": -1066.9998779296875, + "width": 206.0, + "height": 130.99993896484376 + } + }, + "m_Slots": [ + { + "m_Id": "70d61a3f3082405191f5df2390764af9" + } + ], + "synonyms": [ + "surface direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "225386d2c73247e0941a2756841a3510", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1724.0, + "y": 2537.000244140625, + "width": 276.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "b0ad30c223b44622b63210e61c600fa7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0e4935a9458a40e18f35ecbf7419a2b9" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "2281665015fe4c11919ecd881ab1983a", + "m_Id": 0, + "m_DisplayName": "Enable Volume", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "22e2594d57b343e289589b707d5b84b7", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "23efdb16a1b54d0893e5663038644a17", + "m_Id": 0, + "m_DisplayName": "Thickness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "24040992221045bb9d22da9a78437197", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1110.000244140625, + "y": 2399.000244140625, + "width": 182.9998779296875, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "f3a31bd864f24872bf8c137be5fae97b" + }, + { + "m_Id": "117540daa4384de2800aa3d63387d273" + }, + { + "m_Id": "8df7078bc2fe4b6f83ab4f8336aedcd9" + }, + { + "m_Id": "79cad36a2c4f4ef7b7b192caa5beea63" + }, + { + "m_Id": "7666c8d311ce42aeb7f67d1bf144b414" + }, + { + "m_Id": "c933cc851230433082c21bc81c69c766" + }, + { + "m_Id": "3894dcd80333404ea1aef6e3db100f89" + }, + { + "m_Id": "efad1b6a6a3f4570b83fb671df65e2dd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2467a187ad844d9bb1eed7c23ef259c9", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "24e2f46f6c574f538800b38b4ba356e2", + "m_Id": 0, + "m_DisplayName": "Occlusion Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "25aa3027d13042ddb02054db5def12d2", + "m_Guid": { + "m_GuidSerialized": "e251df02-ca79-4099-9ca5-d871b4ede296" + }, + "m_Name": "Clearcoat", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Clearcoat", + "m_OverrideReferenceName": "clearcoatFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "260067b95be947d0bbbdd5d672ea1f8b", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2655fa13ba834d68b54c52b61ac6fa0f", + "m_Id": 0, + "m_DisplayName": "Base Color Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "2669daf3314b4ba38d4ba53a7c10490e", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "274467a610184193b2536afea65a7547", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "278c577d57bd42a39c88e75dbfab541a", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "2796de049db74614be6bfe0317d3403f", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Enable Vertex Colors", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1703.0, + "y": -66.00000762939453, + "width": 166.0001220703125, + "height": 117.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "5d7fea3e25aa4c32aa1b8057007a7cea" + }, + { + "m_Id": "eef506e16f0d4e7fabba8e363f9f7b5b" + }, + { + "m_Id": "0663969fd47346fabe593928bb40b508" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "27a3f1d4e36d4c39b848b75e145ae907", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.375, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "27be125aeff84fe2a6e34aae2b187134", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "27d7082e2df947fda1e760b5a4fc10a0", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "28460ebe420e4639aff4032fd33b191e", + "m_Id": 0, + "m_DisplayName": "Specular Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "28634075b89e40ac96b72fd014371ef8", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2896420937a94ab89b246fb3155919dc", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1Node", + "m_ObjectId": "293e9cc943084a00acd57b6d72c2f5d4", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Float", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -897.0000610351563, + "y": 249.0000457763672, + "width": 126.0, + "height": 77.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "73e62a443d0f46488055a595f92f9809" + }, + { + "m_Id": "22e2594d57b343e289589b707d5b84b7" + } + ], + "synonyms": [ + "Vector 1", + "1", + "v1", + "vec1", + "scalar" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": 0.0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "29699c2a90c3455eaabef74da1f7bb75", + "m_Id": 0, + "m_DisplayName": "Attenuation Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "29db6004890e4f13917ddc8ceaae2ebe", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -691.0000610351563, + "y": -1683.0, + "width": 256.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "9ee7ffdaf0634f4caa173c61895f5ab5" + }, + { + "m_Id": "49c0d0457ce84534b487d08245981329" + }, + { + "m_Id": "36136d9043cc4dd0b11b8bb0fc509d9e" + }, + { + "m_Id": "278c577d57bd42a39c88e75dbfab541a" + }, + { + "m_Id": "2f1ef2ac960a4a7495e20979ea91656d" + }, + { + "m_Id": "2ad2f84b94fd45d988ec5c65b4e4de60" + }, + { + "m_Id": "88ca303ae5ce40be811c06466d6e943d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2a92a3c85aff416185d3183c4b7c3855", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 400.0, + "y": 700.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2ad2f84b94fd45d988ec5c65b4e4de60", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "2adddb3fba4f472caec286b8688d99fe", + "m_ActiveSubTarget": { + "m_Id": "ec903d4fe369487a99f1706f50daa8d5" + }, + "m_Datas": [ + { + "m_Id": "40f2bfb8172f4025bc600b8b6c4a9677" + }, + { + "m_Id": "c2bea0a6923d40e88c022e279ce22602" + }, + { + "m_Id": "c01b5bb817134989a3ddb326b67996b3" + }, + { + "m_Id": "56b8cfcfbe7e4700a8ee6c8920825400" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2b0a026cebb0460a83c4e4d6e29e6e36", + "m_Guid": { + "m_GuidSerialized": "586ff43e-93b4-4b65-be46-570ccf4c4274" + }, + "m_Name": "Metallic", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Metallic", + "m_OverrideReferenceName": "metallicFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2b0fc694fb3743c0b9cc31c21bba5714", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2b443f0dc6564eaeb251851c92c4a83e", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2b965b0789be43df916141ecf106ead7", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "2be05efd171444038a2e4b7115af59e6", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2c79750601184e18985cd440c80897ae", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2c80a510767845fb86931353c34b6956", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2c96c5f6712447e58eda432b764d07ce", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1722.0001220703125, + "y": 40.0, + "width": 174.0, + "height": 34.00005340576172 + } + }, + "m_Slots": [ + { + "m_Id": "d87019dd0da84e03b03fc2582ccc036c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ff11e8a641984c798698ae35ab35028d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2d0bbca38ec145e2a4b4886f01ab4c47", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1710.0, + "y": 1422.0, + "width": 179.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "4d72a699610344de8f2c0353eec46538" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "02ea37d7654b45adb4b6519d05132bf0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2d11904296214e0482528ef79596b2e3", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 8.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2da1ace99bda4281ac059a7943a83707", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1169.0, + "y": 1068.0, + "width": 201.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "762c959d28c349a183bc791f40aaf39a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a50370cc3ee24456919ee633ea0803d2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2da8f941d9cf4a7797b3a250c322261d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -213.0, + "y": -90.0, + "width": 200.0, + "height": 41.0 + } + }, + "m_Slots": [ + { + "m_Id": "67a1696f35a4427bb6b7e3d7abcb235b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalStrengthNode", + "m_ObjectId": "2dc0377e855949349c7a1052f7e3ff6c", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Normal Strength", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1982.0, + "y": 105.0, + "width": 166.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "f28fc0029f4b4f5a86aec6dcf12e3235" + }, + { + "m_Id": "127cd56294514017bef8652af1bf619f" + }, + { + "m_Id": "635584693fd64b7ab2ffe34dfa7c4d05" + } + ], + "synonyms": [ + "intensity" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2dc945c7f366495292394c4dc6f8d2ee", + "m_Id": 0, + "m_DisplayName": "Emissive Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2ead1b4a4aae4e1c9590868fb8276143", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "2ef8958a8ad04fc48a4990966c393b9a", + "m_Guid": { + "m_GuidSerialized": "42989d8e-f01d-4e05-bab8-5af5397c1e84" + }, + "m_Name": "Base Color Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Map_Tiling_Offset", + "m_OverrideReferenceName": "baseColorTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 2, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2f0e378fd69242419e896216a2e6b9e6", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2f1ef2ac960a4a7495e20979ea91656d", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2f5958af84214a2a9295cb6bcdcdce59", + "m_Id": 2, + "m_DisplayName": "Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Max", + "m_StageCapability": 3, + "m_Value": { + "x": 100000.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2f9e57151472466f97a76a28a5e644c1", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3022d91828194f10a5b0b6cbaa4eeb86", + "m_Id": 0, + "m_DisplayName": "v", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "v", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "302d94653f844799b5f7e93c4d06ed3d", + "m_Guid": { + "m_GuidSerialized": "5b68bec3-f5ba-42d8-a542-6cb4184b3974" + }, + "m_Name": "Enable Transmission", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_TRANSMISSION", + "m_OverrideReferenceName": "_VOLUME_TRANSMISSION_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "309b1a22566d417d9cd49277b012681d", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "30f244a575e2416da21dc7749cedfa02", + "m_Guid": { + "m_GuidSerialized": "a9afe191-a285-49e5-8d55-d5fe6cf86c3f" + }, + "m_Name": "Iridescence Thickness Map Tiling/Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Iridescence Thickness Map Tiling/Offset", + "m_DefaultReferenceName": "_Iridescence_Thickness_Map_Tiling_Offset", + "m_OverrideReferenceName": "iridescenceThicknessTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3141c7e396c740b2a7bfd349dbf69ee7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "31516f3b61504a6080a15b03bfc5b3fa", + "m_Guid": { + "m_GuidSerialized": "1944b66e-a094-4260-a469-a59fd1ebd7fd" + }, + "m_Name": "Specular Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Specular_Color", + "m_OverrideReferenceName": "specularColorFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SceneColorNode", + "m_ObjectId": "318498c50d1d4e88b71c684d578ac0ca", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Scene Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 57.99995422363281, + "y": -311.0, + "width": 138.0000762939453, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "930533d9deee4c08a24d6384302978e6" + }, + { + "m_Id": "28634075b89e40ac96b72fd014371ef8" + } + ], + "synonyms": [ + "screen buffer" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "32267f216a9b418a9ef8e39620e4cd64", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2299.0, + "y": 1971.0001220703125, + "width": 130.000244140625, + "height": 141.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "723ae2bbeeb04f64b6ac0220ddc23e42" + }, + { + "m_Id": "600416b79758427ba1cb38653adb94a4" + }, + { + "m_Id": "b99e94611bed4ed58bcc7a9c30d2772e" + }, + { + "m_Id": "633d1fe2ecbc4c87960ecd546f93a09f" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3236c43de3bb4ea6a4d47529faf6287c", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1124.0, + "y": 188.99998474121095, + "width": 157.0, + "height": 34.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "c644dbe307e447aa868c1453991143b6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6dcd6559ce1c4522be780f0ace587147" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalVectorNode", + "m_ObjectId": "325e14ba71ba4c1ab846128cc0cb3655", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Normal Vector", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1754.0001220703125, + "y": -110.99996948242188, + "width": 206.0, + "height": 130.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "e20db26f346a4bb099ddc66aeb89e2c9" + } + ], + "synonyms": [ + "surface direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "32654feef18049e38ff4ae23533a8fc3", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1125.0, + "y": 2124.0, + "width": 166.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "28460ebe420e4639aff4032fd33b191e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d05eebe6687b47d7a9c6d0625eb59c8b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "33043e5554f244929df218ab57af3cfc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Enable Transmission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2272.000244140625, + "y": -339.9999694824219, + "width": 209.999755859375, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "410fc9a66a3549da94914682cf00b21c" + }, + { + "m_Id": "f88c0608ebf34378b1b47854228e5c5f" + }, + { + "m_Id": "a713df93e6de4d2a8f9e725c6608431d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "302d94653f844799b5f7e93c4d06ed3d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "33246ca622234bb39f7877b44232c6fc", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "336a92c84db74612b3919f23baa246ab", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturationNode", + "m_ObjectId": "338235ab890b4109bbe2f473272220c6", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Saturation", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1392.0, + "y": -1350.0, + "width": 174.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "3415bbe6c0a64acd9bcc17eaddaf7f56" + }, + { + "m_Id": "e5ee984eddac42b1bd84a7086c09cd78" + }, + { + "m_Id": "bd16ba2efda642b9a1a4840ef69cefba" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "33b1cd1ec949420c9e2a20d559161330", + "m_Id": 0, + "m_DisplayName": "Occlusion Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3413eb1f30734715b9b6fb7d98127f43", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3415bbe6c0a64acd9bcc17eaddaf7f56", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "3508add16f0344e48e568d30a22c17da", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "358ab8c582a3446b8cdff5b42cc19b9e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "36136d9043cc4dd0b11b8bb0fc509d9e", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "367da5658c43450db5033436a7fe86c6", + "m_Id": 0, + "m_DisplayName": "Clearcoat Mask Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "36887d6354ed43dc806ee5f97f6da52d", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "371e4a8bf3324d5795dbdcea706c56e5", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Metallic", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "37283e18690e47c7ad820955a219d2d6", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3756d174a86140e58bb5a7b83fdf57af", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "384aa946f7444341988f848a3c93d646", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "3894dcd80333404ea1aef6e3db100f89", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3914f91323f8463689f89651916dff4a", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "398e5b93f4414662bb436629815c19ea", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -997.0, + "y": -1274.0, + "width": 226.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "dcf55ee7a8a14405a1a6103001d64e2f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6d2dcf695f684b3d85b3bdc6615713d3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3a190e9fe175446388ce351f08beb58f", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3a23356b624540d9b7a1590a8d2b102e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "3aaf880ebb944cb2aac5ac8ea8e40300", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -900.9999389648438, + "y": -1610.0, + "width": 180.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "50717469c61342e6a43dd1afa32d4024" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f7ae0094c08445398a6c676150aed9e8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3ab0e1c0910a4589a2f567ca5702e122", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3ae5a9539a1a41dea40a61cd2e6dde6e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3b013a1bf52b42fe8baee66c25bb2126", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3b36955447fd4def9a5a554266d5536b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3b8629432b0f46f88edf17b50cbc680a", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3b8f80eed15d468c858c1bb729f68b4b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3bd9733b454645739a3da280f6f12204", + "m_Id": 0, + "m_DisplayName": "Clearcoat Roughness Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3c2f517f48b4488a9fe0bdba6b60a134", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "3c5ebaf4daab488c97714a0c655cbe48", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "3c72208ecc9f4632b650d1c06ac9c4d2", + "m_Guid": { + "m_GuidSerialized": "4f4e37c3-9500-4ab9-8923-0baecd2c44d3" + }, + "m_Name": "Transmission", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Transmission", + "m_OverrideReferenceName": "transmissionFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DotProductNode", + "m_ObjectId": "3cb17257805c480796eb3ceff99ed6a4", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Dot Product", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -459.0000305175781, + "y": -1007.9999389648438, + "width": 128.00003051757813, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "70115868dbf8439b82df3c5025cd877c" + }, + { + "m_Id": "b612580ec76540688e6c548f7e50e022" + }, + { + "m_Id": "ae993503b9444c58869120f95f7394d5" + } + ], + "synonyms": [ + "scalar product" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3cd8d66635a942e290d51e6c8d1a7872", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3ce4018f12df4041820551e785dfd5e1", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "3ce6d25358cc421582e9a91b41d39fdf", + "m_Guid": { + "m_GuidSerialized": "fcfe6ce1-7d71-4f24-92cd-cd28aef76d92" + }, + "m_Name": "Normal Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Normal_Map", + "m_OverrideReferenceName": "normalTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 2, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3d351435bd3043d49b62bdc87cb4c6cc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "3e15ef7468514f0caceb0461ac3a3d53", + "m_Guid": { + "m_GuidSerialized": "1cba2555-bcf9-409f-a690-c3c9fcdf274f" + }, + "m_Name": "Normal Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_3e15ef7468514f0caceb0461ac3a3d53", + "m_OverrideReferenceName": "normalTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "3e441c009906463b89aceae672c7f8aa", + "m_Guid": { + "m_GuidSerialized": "84e58502-f181-4451-858e-cb1e882d90b3" + }, + "m_Name": "Iridescence Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_3e441c009906463b89aceae672c7f8aa", + "m_OverrideReferenceName": "iridescenceTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3ebd437ef6e34d89802a54c5ed7590db", + "m_Id": 0, + "m_DisplayName": "Attenuation Distance", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "3ee3385ae855473aaaf56fea09cc4360", + "m_Guid": { + "m_GuidSerialized": "4747c7fc-2305-4d0d-9a29-aae0126ba7ac" + }, + "m_Name": "Transmission Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_3ee3385ae855473aaaf56fea09cc4360", + "m_OverrideReferenceName": "transmissionTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3f4ae4edfaa34f4c8531bd854abd844a", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3f959f9091ae44568d0f6ca68fa7ea56", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "40800dab9a0943108e25b3afdfbea00a", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDLitData", + "m_ObjectId": "40f2bfb8172f4025bc600b8b6c4a9677", + "m_RayTracing": false, + "m_MaterialType": 0, + "m_RefractionModel": 0, + "m_SSSTransmission": true, + "m_EnergyConservingSpecular": true, + "m_ClearCoat": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "410fc9a66a3549da94914682cf00b21c", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "417bfe74fb994ff8b15125f41148d8c6", + "m_Guid": { + "m_GuidSerialized": "a51009f9-2ffb-4057-b0ff-67c07e5ac78b" + }, + "m_Name": "Roughness-Metallic Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_417bfe74fb994ff8b15125f41148d8c6", + "m_OverrideReferenceName": "metallicRoughnessTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "41a2ad33393f414eb907db196f390401", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1063.0, + "y": -1169.0, + "width": 287.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "d7b151a688e74d6792327a69567cb921" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "30f244a575e2416da21dc7749cedfa02" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "41d7bbb28c084adea8a2c007184d3e38", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "420a0ae4dcdc4fa6a59f6ea13dbbe035", + "m_Id": 2, + "m_DisplayName": "Power", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Power", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "4298618b682246f99867908047bc271b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2099.000244140625, + "y": -190.99996948242188, + "width": 119.999755859375, + "height": 149.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "954c85b2964d43ca90e1a13747a3eef1" + }, + { + "m_Id": "d48ccf4b057d459ea93e84d0e6d43e43" + }, + { + "m_Id": "54f1cc14614d4472912dcff46abb0198" + }, + { + "m_Id": "6c2acb01264e42bb889e20d3f76c9684" + }, + { + "m_Id": "58e4f80242c54853a51fb8f46c891318" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "42a32381d42e41b6a2b038d2d681eba2", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "42d01612a467484494e13af04de1b143", + "m_Guid": { + "m_GuidSerialized": "3afcd02f-1fd3-4930-aea6-93e3c8a08c5f" + }, + "m_Name": "Iridescence IOR", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence_IOR", + "m_OverrideReferenceName": "iridescenceIor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.2999999523162842, + "m_FloatType": 1, + "m_RangeValues": { + "x": 1.0, + "y": 2.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "436c97ee0270458384ce4631bac29eb6", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "43910aac923a4623bc7dce0d97b5ac39", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "43925d85409c4c568deb5cab95ce196d", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1720.0, + "y": 1517.0, + "width": 189.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "d971459491e54c629cea549c7775108b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "cf6b395662864978a19f9c4ad3b5a685" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4395008567d747fcb4ebaf7c7470fba3", + "m_Id": 0, + "m_DisplayName": "Specular Color Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "44819891fa5e4f05b89905255e52a361", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "45f08d4b02ab4efbb72633cafcfaa131", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.FresnelNode", + "m_ObjectId": "466e79255cd74b99b006246159b7b833", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Fresnel Effect", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 705.9998779296875, + "y": -870.0, + "width": 163.99993896484376, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "d439e7ac4eed401ab19a5db9740d11dd" + }, + { + "m_Id": "97ed6c1db4b94972a42fe1e7e24bcf68" + }, + { + "m_Id": "420a0ae4dcdc4fa6a59f6ea13dbbe035" + }, + { + "m_Id": "85a22e74dd8044e9b51c32fb182e3f1a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "46e1e39c81414ae58142acbe94c617a3", + "m_Guid": { + "m_GuidSerialized": "3d68a1fc-aa8d-413f-872c-8ac2ec634cda" + }, + "m_Name": "Clearcoat Roughness Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Roughness Map Rotation", + "m_DefaultReferenceName": "_Clearcoat_Roughness_Map_Rotation", + "m_OverrideReferenceName": "clearcoatRoughnessTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "472d45ed364f4a5987da3b1210416eae", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "478df15ef57d4a3187fe3424c761f0c7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "4849b3a5f68e4bafa37b69999d921afd", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "485418fad1b24848b06ea90dc61e428c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "48a77b32052846f09c49744640f1c4e9", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "48ae037d1cdf40a79177e5e96ce6fb3d", + "m_Title": "Specular", + "m_Position": { + "x": 578.0, + "y": 1667.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "48b85ee5e3874844bda0d352d462e17c", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "48be69e53316496281a1da786b9815df", + "m_Id": 0, + "m_DisplayName": "Clearcoat Roughness Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "48e1f0f7e59646d1a499fe64fa9ee1f5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2270.000244140625, + "y": 28.000001907348634, + "width": 56.0, + "height": 23.999998092651368 + } + }, + "m_Slots": [ + { + "m_Id": "e90b82a061ba4892aefecb61a281d723" + }, + { + "m_Id": "5d492c5d0c4c4acb93eda416e5f9a694" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "48eac560f7a6421e9903059e33662055", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "492d5d149f4c4a7ca0c26f791e6704e6", + "m_Guid": { + "m_GuidSerialized": "130cd097-328c-42d7-9975-522653a599f1" + }, + "m_Name": "Attenuation Distance", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Attenuation_Distance", + "m_OverrideReferenceName": "attenuationDistance", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0010000000474974514, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "49563560b66b4be2b9b20bec37b37229", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "CustomSampleNormalMap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1590.0, + "y": 90.0, + "width": 304.0, + "height": 143.0 + } + }, + "m_Slots": [ + { + "m_Id": "af8a13a8abdb4e9db334b025b41195d8" + }, + { + "m_Id": "1d9f8f8a5bfa494aa851ce0f098b4f26" + }, + { + "m_Id": "9097022b6cc04ed094b5566d24212d9e" + }, + { + "m_Id": "a4f668fc6a574c77acbe44ce0e39ac43" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"e3a9c28adc9ece042a6141bad8ecc47c\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "bbb3a35a-b994-4c4a-9e1e-f9007ce2c380", + "6b1a9297-d3d6-4ef1-a7c3-8f9db968882f", + "cc8dbd39-e387-4cc1-8419-ce41b58c11cb" + ], + "m_PropertyIds": [ + 2009327148, + -1746081185, + 177458063 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "497b3a5aa243456e94dd3bb8cf15917b", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "49b1570f6c2040dfa64a34f18ba7bc52", + "m_Guid": { + "m_GuidSerialized": "ed11f74d-404c-4f82-ae9b-ff9b11fd3fd3" + }, + "m_Name": "Specular Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_49b1570f6c2040dfa64a34f18ba7bc52", + "m_OverrideReferenceName": "specularTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "49c0d0457ce84534b487d08245981329", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "4bc66ccd038c44a5839aae3660fe2fa4", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "4c1ca34c9be14b66b960ca5ff430acd0", + "m_Guid": { + "m_GuidSerialized": "84f6e00d-a8df-4bbc-ba71-38cd7406bdc2" + }, + "m_Name": "Specular Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_4c1ca34c9be14b66b960ca5ff430acd0", + "m_OverrideReferenceName": "specularTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "4c8200d1e5f240aea818cc6ab001d632", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "4d2fea2542684f2ca4b9e01aa4089ee1", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1096.0, + "y": 154.99998474121095, + "width": 185.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "fffce7464ea04c1bae114777f849c4a4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "c52451fda82b4ca7909b11b10b2a9e09" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4d3bb73e2b634b8b821eb74686beccd4", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "4d72a699610344de8f2c0353eec46538", + "m_Id": 0, + "m_DisplayName": "Transmission Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "4d7fdfabdc4e43b8b1b65c4e1f9104e3", + "m_Title": "Broken Texture Transform in SG", + "m_Content": "Turns out that _BaseMap_ST does not work in SG anymore UNLESS the texture explicitly has that toggle on, and then the transform can be reused for other textures...", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": 831.0, + "y": -499.0, + "width": 200.0, + "height": 160.0 + }, + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "4d928a9a13bf4961af6d0b56cd16641f", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "4e455d381d794048bb64b988cef2e24a", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "4f10c66a3e6d41fa9c17259b0da33edf", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "4f6277e06f1e4006baf370c15741a704", + "m_Guid": { + "m_GuidSerialized": "6bfd48a4-0075-4755-9ad5-2849c2ed708a" + }, + "m_Name": "Thickness Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_4f6277e06f1e4006baf370c15741a704", + "m_OverrideReferenceName": "thicknessTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4fe47b47e7d04a41a055f4d66dddcd63", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "5004252d15d04c2ea74cd947ee1f3b4f", + "m_Guid": { + "m_GuidSerialized": "811b80e4-c54d-417d-8dc6-8abb48a7fbc5" + }, + "m_Name": "Occlusion Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Occlusion_Map_UV", + "m_OverrideReferenceName": "occlusionTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "503eff2ab474419ab3e996e64e411b69", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "506bf201fc4142d480a46dd5f44c5884", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "50717469c61342e6a43dd1afa32d4024", + "m_Id": 0, + "m_DisplayName": "Iridescence Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "508110704c634983a721fe742b0dcafd", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "50998a16883841b483e4d4e9aa26ce91", + "m_Guid": { + "m_GuidSerialized": "384fe643-fdaa-450d-8c3e-250263ae23f6" + }, + "m_Name": "Iridescence Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence_Map", + "m_OverrideReferenceName": "iridescenceTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "50d1728de38b4355b295d3a96f1c07f2", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "50f7611ca222462baa2a9012071e7778", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Enable Clearcoat", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2203.0, + "y": 900.0, + "width": 143.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "45f08d4b02ab4efbb72633cafcfaa131" + }, + { + "m_Id": "5d4c6343b05d418bbc32a7f37c3f26ed" + }, + { + "m_Id": "2f9e57151472466f97a76a28a5e644c1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "7e862501058a45c9ad78e01eefa90605" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "515f346aa3af468c8996e1e0c3b1b02f", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "516df774111e40bea29ef1f9f567f13c", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "51ca380064384ca48295c59412763c9b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5260828f1a9340bba0850b529eab555e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2821.00048828125, + "y": 1040.0001220703125, + "width": 140.99951171875, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "b91488151b004cd2aa2ba7923db0e152" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "851b64cc55064cc591c263711144feca" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "529dc0cf581b453599ec7393abe160ac", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "52ad86c239f740608a41d0cf1d4aab20", + "m_Title": "Transmission", + "m_Position": { + "x": -2061.0, + "y": 1372.9998779296875 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "52c19609cc8a4131bcbf17dda5e26142", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1173.0003662109375, + "y": 2069.000244140625, + "width": 183.00018310546876, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "c22bbf41264143e690d1c9eea357c483" + }, + { + "m_Id": "d38f08916af4479ba71a15c0a309c43d" + }, + { + "m_Id": "6f8871c409c74f1bb3f183727640b6e8" + }, + { + "m_Id": "06436a6d60c047628fcffb972f451909" + }, + { + "m_Id": "9a3bb394d6ec4891a9cba4d5cde5a220" + }, + { + "m_Id": "8acbbab8c4a24947ab8ac6205571c94a" + }, + { + "m_Id": "974a5648658142479dd293dbc303a122" + }, + { + "m_Id": "5a278fd6f9504a91be41b1c288f4f702" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "52cba1718ced4455b5e42a41b2d8d60b", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "53584f7d765e4dd4a2ec8102a0c56f9e", + "m_Id": 0, + "m_DisplayName": "Occlusion Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "539b06cf9457481282d249d654eb8740", + "m_Id": 0, + "m_DisplayName": "Iridescence", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "53c9b32bb86548ceab5b2f2560048435", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -690.0000610351563, + "y": -720.0, + "width": 156.99993896484376, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "887246a84e814042ba21984b7c5c1123" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "42d01612a467484494e13af04de1b143" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "53cfede5b4934d888883d61e9e49c628", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "53e6e4fd5b7040cc8ca17980f41e3df4", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "54048a36c65a48d08ec402c82a41df42", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CoatSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1d6ef732e65245ee8396edf71d70ea2a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CoatSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "540fbe60da724a25863c84a28a7b19de", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "54272dba60bb489b8c64b04e510560cc", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "547571dcbd2140a0bee62584e58884ae", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "54e30d3dc23846a28a0785e6e37720bc", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Spectral (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 372.9999084472656, + "y": -1090.9998779296875, + "width": 208.00003051757813, + "height": 277.99993896484377 + } + }, + "m_Slots": [ + { + "m_Id": "cf3f322e39934fdbaa66e219748a2b1b" + }, + { + "m_Id": "999b803d7ace4709a4dc31d05c9e0f25" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "Spectral", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "Enter function body here..." +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "54f1cc14614d4472912dcff46abb0198", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "563a5800a14c441aae4434176405e7c8", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1118.0, + "y": 1102.0, + "width": 252.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "0eb965d69ea74e7e9a1e21cf876897a3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5d010844a57e4032848b95235697f621" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "56b8cfcfbe7e4700a8ee6c8920825400", + "m_MaterialNeedsUpdateHash": 529, + "m_SurfaceType": 1, +"m_TwoSided": true, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_CustomVelocity": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "570399c39d8548039e687c459a900bfe", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1333.0, + "y": 2057.0, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "00951ddb04f34565a8d8c74808992db5" + }, + { + "m_Id": "744c71552f4445f391290f5b54393d90" + }, + { + "m_Id": "af3246aa49ad4e3d88751a67fbdab23f" + }, + { + "m_Id": "a9074d1fefec4f208bd83fa2f5db0581" + }, + { + "m_Id": "8ec42f4990b242bb935d34204c3b753f" + }, + { + "m_Id": "72b04037b839437bbbc16292583a5387" + }, + { + "m_Id": "e987395d771e4c12aac837c56e6eec65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "57b184f48a8b498c8e2cbaaa5aed5243", + "m_Guid": { + "m_GuidSerialized": "f5e55848-ed27-4579-8ea1-32e0f3b6d1d2" + }, + "m_Name": "Clearcoat Mask Map", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Mask Map", + "m_DefaultReferenceName": "_Clearcoat_Mask_Map", + "m_OverrideReferenceName": "clearcoatTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "57f34c151af34548b981f67f69fb01bb", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1058.0, + "y": -92.99996185302735, + "width": 129.9998779296875, + "height": 117.99995422363281 + } + }, + "m_Slots": [ + { + "m_Id": "765c7dcbc3194092a0b6d17d3b0cc191" + }, + { + "m_Id": "a7ada2aa2ece41108c144d2baa843400" + }, + { + "m_Id": "478df15ef57d4a3187fe3424c761f0c7" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "581bb0c3846648a68b3050d26967d45f", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -717.0001220703125, + "y": 2529.0, + "width": 125.99993896484375, + "height": 118.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "8e5b3b953d0944d784b2f73adaf55428" + }, + { + "m_Id": "ebcb432791e545e3b5cdb618a6f98580" + }, + { + "m_Id": "c0b800a8b577453182963e3cc1fc7a12" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5832c178721b456596b0b98e27bf7edb", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "58a85f0a5d444b0c878b97c684eb7676", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "58d29ed6f30d4885996b1c2b1d967e6b", + "m_Guid": { + "m_GuidSerialized": "5e2f8016-c462-481e-87bc-4185285f1460" + }, + "m_Name": "Iridescence", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence", + "m_OverrideReferenceName": "iridescenceFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58e4f80242c54853a51fb8f46c891318", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "58e72a495b564301a820b43db912df3d", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1141.0, + "y": 1031.0, + "width": 229.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "367da5658c43450db5033436a7fe86c6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "19060202407d4ef49a49c2ec295ffed2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "58fcef95064d43539481018c3b71e3e1", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5931680f7ccf49c4bb700855be684150", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "594b54dda80f484f85784c252143d680", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "5959c998527d4aaf8a3653895a8d1279", + "m_Guid": { + "m_GuidSerialized": "dab1ea9d-9855-4409-ae49-b4a26815c9f9" + }, + "m_Name": "Override Surface Type and Queue", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Override Surface Type and Queue", + "m_DefaultReferenceName": "_Override_Surface_Type_and_Queue", + "m_OverrideReferenceName": "_OverrideSurfaceMode", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 2, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "59b8a05662ac4fc6aeb5b1647d80080a", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "5a278fd6f9504a91be41b1c288f4f702", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5a7f05fcf70e484d97982030a390cb3e", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "5a92d6910d794e8b9385d55130d52ad7", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1293.0, + "y": 90.0, + "width": 251.0, + "height": 167.0 + } + }, + "m_Slots": [ + { + "m_Id": "7e519b872b4044c29e64dbd5b6cae572" + }, + { + "m_Id": "cce8c5ae0aed42ed9c57a112fb3046c3" + }, + { + "m_Id": "1ec0d606202248be832212c48d8345db" + }, + { + "m_Id": "3f959f9091ae44568d0f6ca68fa7ea56" + }, + { + "m_Id": "43910aac923a4623bc7dce0d97b5ac39" + }, + { + "m_Id": "f654ba7941f74eca9d80c5f37151e340" + }, + { + "m_Id": "3508add16f0344e48e568d30a22c17da" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5ac32d0ee6a14944916aac3136a270f3", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1734.0, + "y": 1247.0, + "width": 183.0, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "db20f76945f84ccba7124126a40d4e76" + }, + { + "m_Id": "e73f01d6c53b408bb28fe66c4b162599" + }, + { + "m_Id": "2f0e378fd69242419e896216a2e6b9e6" + }, + { + "m_Id": "f0d2628718c74315921b9d0b0f09b991" + }, + { + "m_Id": "132fdf99c1d44ac8b323108136986ad5" + }, + { + "m_Id": "b93e92df8d3b43209ba092f9789cdd20" + }, + { + "m_Id": "603833f2140b4597932e250fb5700476" + }, + { + "m_Id": "ceeeb31de4c245bfb1cf9f0628be9000" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "5b26a590f6aa45b99a84a717567a74b0", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -400.00018310546877, + "y": -1747.0, + "width": 183.00001525878907, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "aa2e642ca1cc4cb1b48566ecb6dc4a0f" + }, + { + "m_Id": "a57f6047cc4e4232a376e5c19a09c7aa" + }, + { + "m_Id": "b5ce0ae9ec7e427cbf911d5c0e9e812e" + }, + { + "m_Id": "42a32381d42e41b6a2b038d2d681eba2" + }, + { + "m_Id": "930a53d67a5848df90387a45b712875e" + }, + { + "m_Id": "472d45ed364f4a5987da3b1210416eae" + }, + { + "m_Id": "83d6e951e04a4db281ed0b7899e7f481" + }, + { + "m_Id": "4c8200d1e5f240aea818cc6ab001d632" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "5b6271d840fa47afba5623a8cce74940", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5b68c11c07d547ed9dcfaac2cc046c44", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5c387032398b47d0b442326a29f497ce", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5ca8bbeec7774b4fb0301196692f327f", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5cae5ffa9e5a400e8b9c21166c4e4257", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "5d010844a57e4032848b95235697f621", + "m_Guid": { + "m_GuidSerialized": "b834117a-97c7-4793-a253-73af37152ce5" + }, + "m_Name": "Clearcoat Mask Map Tiling/Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Mask Map Tiling/Offset", + "m_DefaultReferenceName": "_Clearcoat_Mask_Map_Tiling_Offset", + "m_OverrideReferenceName": "clearcoatTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "5d141c63b25f4a7a99aaffe9c41c7764", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -728.0000610351563, + "y": 116.0, + "width": 129.99993896484376, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "0f0e66f956ae4391a5f9bdb15ea601ed" + }, + { + "m_Id": "c118ae28deb94b2c9087cd33707ee34b" + }, + { + "m_Id": "3b36955447fd4def9a5a554266d5536b" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5d492c5d0c4c4acb93eda416e5f9a694", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5d4c6343b05d418bbc32a7f37c3f26ed", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "5d74d6d78db64d4e9925acfe54a292ac", + "m_Id": 0, + "m_DisplayName": "Base Color Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5d7fea3e25aa4c32aa1b8057007a7cea", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "5d86eb16a23243f39224b9973e3615ec", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -162.00018310546876, + "y": -1836.9998779296875, + "width": 126.00021362304688, + "height": 117.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "73595ed5587d4aacb975c3f0674961bb" + }, + { + "m_Id": "5c387032398b47d0b442326a29f497ce" + }, + { + "m_Id": "e3ae8cad9f8d4be8906c50ecd8601d5c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5d89c1f5111447cc976117bf944fa2f3", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5d9c257d0755494d9de2f7be32aa020d", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubtractNode", + "m_ObjectId": "5da67c276d8a460a841c0a5d31161498", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Subtract", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 455.0, + "y": -644.0, + "width": 125.99993896484375, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "ca225faed728415d9517bb9e4a48c033" + }, + { + "m_Id": "b874136726cd40e8b6d2d98f625bab7e" + }, + { + "m_Id": "f6374e2356694f79a2ae4649a524f463" + } + ], + "synonyms": [ + "subtraction", + "remove", + "minus", + "take away" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "5eff4b6a6c9b419c8eaa49bb7efccb1e", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "6003b098c771400f96a76b0827b24a13", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "600416b79758427ba1cb38653adb94a4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "603833f2140b4597932e250fb5700476", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "6082fea42d754443ae37cb0cecb9a02f", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "60e333f1a8584429bfe5130e8fd1db9f", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "610f0dc568cd4d1fa7ea371be712a923", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -150.0, + "y": 2.0000009536743166, + "width": 125.99992370605469, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "aa737ed29b1b48c9835f8beff57a8aec" + }, + { + "m_Id": "2d11904296214e0482528ef79596b2e3" + }, + { + "m_Id": "b5fdfd81a2464e01916672bfcb723de8" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "614b5b4a067946ceaed9319789d80138", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 1.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "61939b9cd2a3410eb6e379048eae761c", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "61caa07ef72e430399ce13dc525088ed", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -156.0, + "y": -1470.0, + "width": 125.99996948242188, + "height": 142.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "68bc0219d63647f38da1124460292866" + }, + { + "m_Id": "4f10c66a3e6d41fa9c17259b0da33edf" + }, + { + "m_Id": "d2e54a101690459cb6f817a1835e8560" + }, + { + "m_Id": "cd7f2005366b49b49d812fc510316f20" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "62341c2af4b04863803ba8369da7ee0b", + "m_Guid": { + "m_GuidSerialized": "d63eaa7d-8a91-4235-b12d-4fb7dd889934" + }, + "m_Name": "Thickness", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Thickness", + "m_OverrideReferenceName": "thicknessFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 10000.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "62695fc5dc364bf785f684a561a3ddca", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "62e9d751103b4c5589e69eebf69bbf2a", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "62fa6369499147408c57f36563e87f9b", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2173.0, + "y": 1049.0, + "width": 129.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "9ae243c87a164179871b9ffb282cf23e" + }, + { + "m_Id": "48a77b32052846f09c49744640f1c4e9" + }, + { + "m_Id": "bc40f37950614be8999aea81198fa25c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "633d1fe2ecbc4c87960ecd546f93a09f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "634a1285adea4cb7817514fae82f8b4f", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "635584693fd64b7ab2ffe34dfa7c4d05", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "636eb21b6031474cad03acd4b63413f7", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -539.0001220703125, + "y": 2529.0, + "width": 127.99984741210938, + "height": 94.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "04566dece18d4711bfc06aa4518e36ca" + }, + { + "m_Id": "aaa0a3a6b1f24183a1ad486843ee5d76" + } + ], + "synonyms": [ + "complement", + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "6396afda9540464580bb27eab9db11a2", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d4fb0b6904a34956a14ccb954a3cf564" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "65a3cec9a68746b6a7deba04e5812570", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1483.0, + "y": 1432.0, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "b267ff17ca774906976833c5f5b485e4" + }, + { + "m_Id": "e98620d346ed40278feffba19083a866" + }, + { + "m_Id": "c4a8931d83dc40f8ae8e1680cba9f430" + }, + { + "m_Id": "2c80a510767845fb86931353c34b6956" + }, + { + "m_Id": "af7e9ab896eb4e43a765444223111e34" + }, + { + "m_Id": "fb61da740b674686a66f4b7b07a18fca" + }, + { + "m_Id": "003765826ac04595817a5e52f84f6b1f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "65ab868df408437cafc09b4f8a7cd998", + "m_Id": 0, + "m_DisplayName": "Roughness-Metallic Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "66316640b65d45119a1adff13227d187", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "66c071ff61cf45a99aef6f0d55507801", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "67101a4947c443f986e2d87db446bcce", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "67a1696f35a4427bb6b7e3d7abcb235b", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "67c63c974a924e8eb80fe71272c38db5", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionNode", + "m_ObjectId": "67cd62080df840ec941b6cf2653b199f", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "View Direction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1754.0001220703125, + "y": -248.99998474121095, + "width": 206.0, + "height": 131.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "a2e5e4acd661494eace0ff5e08dd639d" + } + ], + "synonyms": [ + "eye direction" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "67d4d737b1ae48cf9728e71ea7087f90", + "m_Id": 0, + "m_DisplayName": "Clearcoat Roughness Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "687e654c3f724ff986c6806df23ad6c7", + "m_Id": 0, + "m_DisplayName": "color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "color", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "68bc0219d63647f38da1124460292866", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "68eaf5df825b4d698f15a6b079db429a", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1856.9998779296875, + "y": 892.9999389648438, + "width": 126.0001220703125, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "d9ae07569f7b48debc16effc8d24fd71" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "25aa3027d13042ddb02054db5def12d2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "69da7e2093d14bd582c3ea7e7f3be09d", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "69f2785998b842928fedd49dc353949a", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1012.0, + "y": -1203.0, + "width": 236.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "f3dbe4ba41fd4208a14c8339bb38bf61" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1bd532bd2011412a8eed2621e08e3222" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "6a6c473e8f964a69b518df249f7f016f", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6a90c03346f74863b69dbf16495a3dd5", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6b41807fd9ec4ea3998966d6ad43532d", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6bb85556adb54ba195b23a5f797152fb", + "m_Guid": { + "m_GuidSerialized": "646f1a9d-9648-4dad-8409-a796e632ea4e" + }, + "m_Name": "Thickness Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_6bb85556adb54ba195b23a5f797152fb", + "m_OverrideReferenceName": "thicknessTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6c2acb01264e42bb889e20d3f76c9684", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "6c366b0d6ec545c3832add909e3d1e89", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "6c8a437fd25b4f4081338f7eb41d4ea1", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "6ce2ce6219d94187b54d78ffcef3de1b", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1734.0, + "y": 1186.0, + "width": 185.9998779296875, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "0e9d77e393a94a7d99c112df9659e1d9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "c5bd9f7925ac49c8913a839e2c3077a7" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "6d2dcf695f684b3d85b3bdc6615713d3", + "m_Guid": { + "m_GuidSerialized": "5d20de67-3dd7-4298-b698-e43727dfbaff" + }, + "m_Name": "Iridescence Thickness Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence_Thickness_Map", + "m_OverrideReferenceName": "iridescenceThicknessTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "6d6db3c04e41461f81564fae265af536", + "m_Guid": { + "m_GuidSerialized": "497b13e2-982d-40c6-a007-62a3eb5b58f0" + }, + "m_Name": "Emissive Map Tiling/Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_6d6db3c04e41461f81564fae265af536", + "m_OverrideReferenceName": "emissiveTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "6d75cac715d1458fa26ab6c2ccd852dd", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 750.0, + "y": 1500.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6dcd6559ce1c4522be780f0ace587147", + "m_Guid": { + "m_GuidSerialized": "ca84c778-8e87-47fc-a03d-63092cf1b18f" + }, + "m_Name": "Normal Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_6dcd6559ce1c4522be780f0ace587147", + "m_OverrideReferenceName": "normalTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6dff5c5b0ba849b9bcfc2d3655edaab2", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "6eba1c74339f4cd09cd1c5bbedc62d03", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1067.0, + "y": 586.0000610351563, + "width": 193.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "8030bf18e6964dd6b45d83716b664b8f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1e49e8f84d654c64af4ae30f35a7f733" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6f8871c409c74f1bb3f183727640b6e8", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "6fc4bc9235584b14a6a30b611e70d7d8", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "70115868dbf8439b82df3c5025cd877c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "703e7657af254c9eacd1e0e3524b7c6e", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "70d61a3f3082405191f5df2390764af9", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "723ae2bbeeb04f64b6ac0220ddc23e42", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "726e546eb2f4477e9d2b4551aadb854b", + "m_Id": 0, + "m_DisplayName": "Thickness Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "72b04037b839437bbbc16292583a5387", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "72d0cdcf81384bcf8ed160aaeaf9c35c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "731dfbff54a24314bd72456fc99c3562", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Enable Clearcoat", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2238.0, + "y": 1026.0, + "width": 143.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "ccff5dbcc0c0429a8411f01d1ed6df75" + }, + { + "m_Id": "8423b5cfbdfc427fa8ca7b71bafd1227" + }, + { + "m_Id": "e2bb25c172f141fe8a8d5691791d1692" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "7e862501058a45c9ad78e01eefa90605" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturateNode", + "m_ObjectId": "7355ce0418844781b97d72f5fed7f562", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Saturate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 372.9999084472656, + "y": -1641.0, + "width": 128.00003051757813, + "height": 94.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "274467a610184193b2536afea65a7547" + }, + { + "m_Id": "27d7082e2df947fda1e760b5a4fc10a0" + } + ], + "synonyms": [ + "clamp" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "73595ed5587d4aacb975c3f0674961bb", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "73a7e4c60ff040faa214d0e65e5077ce", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -952.0000610351563, + "y": -1564.0001220703125, + "width": 231.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "c6275b6388e84664b4ea287e2d54dffc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "98bfc82acd6e48bcb86c8cb2524113ce" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "73e62a443d0f46488055a595f92f9809", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.25, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "74131b61272b412cbf935c0a38793217", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "741ca17a7fa54a4aba2b338e42afbcef", + "m_Title": "TODO", + "m_Content": "Another empirically determined value, tested against different sample models...", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -2317.0, + "y": 1181.0, + "width": 200.0, + "height": 160.0 + }, + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "744c71552f4445f391290f5b54393d90", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7469b59cafd741a68dd83cf2eb8b3f4b", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "746aab84a778449da4525f1d4c819ec7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "74f230d072d44be694f768997578c434", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7502a9caa98e45729c5647277396dbf5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "75219a095c6d49a99ef383e4d4710281", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7563ce9e24cc41d990573e34d6442e36", + "m_Id": 0, + "m_DisplayName": "Transmission Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7582f079745745b9ae774f979b507822", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7594756c6c0646608f479d09e217198f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "759c527e9c344f7a95d77bbc7ed03237", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 895.9998779296875, + "y": -702.9999389648438, + "width": 130.0001220703125, + "height": 118.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "3ae5a9539a1a41dea40a61cd2e6dde6e" + }, + { + "m_Id": "5a7f05fcf70e484d97982030a390cb3e" + }, + { + "m_Id": "82a4cf80ced24dab9e710bc42acaf689" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "75c93adcbeb6416eb3e773e44d900d4b", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 1.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "75e8d24724bd456e919aa87268c591df", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "760282c93700475d93b783b72005f9f6", + "m_Title": "Iridescence", + "m_Position": { + "x": -1360.0, + "y": -1896.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7622a71dcc594adf9ecb71d4c65f6d1c", + "m_Id": 0, + "m_DisplayName": "Roughness-Metallic Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "762c959d28c349a183bc791f40aaf39a", + "m_Id": 0, + "m_DisplayName": "Clearcoat Mask Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "76520b7680d54ea7a3c2403da786ac5f", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 992.9999389648438, + "y": -1516.0, + "width": 125.99993896484375, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "48eac560f7a6421e9903059e33662055" + }, + { + "m_Id": "df0d11b3d5474b678f83c2e36318c262" + }, + { + "m_Id": "2b0fc694fb3743c0b9cc31c21bba5714" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7655f9ea6a4d4b42bc8b1fdac118dcce", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "765c7dcbc3194092a0b6d17d3b0cc191", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7666c8d311ce42aeb7f67d1bf144b414", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7703801ed1ce4ac38240b01b97a89d59", + "m_Id": 0, + "m_DisplayName": "Coat Mask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CoatMask", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "771f758c8e0a4c748ab647b72a32c4a7", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -883.000244140625, + "y": 2623.000244140625, + "width": 133.00006103515626, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "0ba1ce8088b04d97a412bc5a934a6921" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "dfd1443566c54067a2abb81aaa116653" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalizeNode", + "m_ObjectId": "77fa18f03d944a35b1e7817552c8dd4a", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Normalize", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1232.0001220703125, + "y": -139.99996948242188, + "width": 132.0, + "height": 94.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "d8b1a8ce81bc4f338fcee6de7ff97897" + }, + { + "m_Id": "089c287022154caab52b6f24775cd9d5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "78d30d0064d943acaa6963fab3a547f3", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1033.0001220703125, + "y": 657.0000610351563, + "width": 227.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "eb564df3da5b42b3a6d22f7925dce032" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6d6db3c04e41461f81564fae265af536" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "78d659d364a24b7ba6879080658e4ac7", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "792f7431361a41c3a492a3061eb0f246", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7940a2c35a6f451fbb1c7b9a1e6ee3c3", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "79cad36a2c4f4ef7b7b192caa5beea63", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "79ea9af1b216403aac9bde06d636ff66", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "79f72a6ab2b24b19b379ea4538b3cea8", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1075.0, + "y": 2405.0, + "width": 224.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "88b0a17c869c4814b8378c2e45f7809f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e5df02ace51547ed8d346586a45dd86b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "7bb3ca3024ad410f8014cc5f609eb114", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1989f19083984f9482326d807005e07f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDUnlitData", + "m_ObjectId": "7c6ec251c77e49c4a4887cf647d1f80e", + "m_EnableShadowMatte": false, + "m_DistortionOnly": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "7cff04c6100a49b6b46466becdc0bc2e", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1462.0, + "y": 2069.0, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "81fe883f7f3a462d93b22917182b212a" + }, + { + "m_Id": "fb3537da18fa458885a082198a3f8a8f" + }, + { + "m_Id": "6b41807fd9ec4ea3998966d6ad43532d" + }, + { + "m_Id": "b96ad6014ae14e7ba3f484c27e16382c" + }, + { + "m_Id": "a691d9b4045f414cb3cf5f4954e98c6f" + }, + { + "m_Id": "9c6d8f01e50a49769acea34edff42dc5" + }, + { + "m_Id": "ec0f2b64045146dab36560c6f181ee8d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "7d0f12322640404fabc3a8d92d461290", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1589.0, + "y": -372.9999084472656, + "width": 184.0, + "height": 253.0 + } + }, + "m_Slots": [ + { + "m_Id": "2896420937a94ab89b246fb3155919dc" + }, + { + "m_Id": "20b14d2ae2434cf38a81633609bf5f43" + }, + { + "m_Id": "06f5499a20744baaaaaf8a9d5cfdb5d9" + }, + { + "m_Id": "85ec0cef04ec49ee885d4a3f4b44efa9" + }, + { + "m_Id": "9e3aebb69ef04f038b0047212dee79aa" + }, + { + "m_Id": "edee52016d324d04b248f4f255882edb" + }, + { + "m_Id": "afc7970b28824f77bf1194792fc8fa04" + }, + { + "m_Id": "7fcb59f8468e4ca8b44fa2a6355eb44a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "7d1a86132c7e4142bc72cfe87dcc59b6", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "7d54abc6a7ee4cc6a41cc270bf43ae06", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7d936c8d597d47068058b1f217a97848", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7e1ec34d620c4cfdab4e87bb4d732943", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "7e519b872b4044c29e64dbd5b6cae572", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "7e5abe31e1414a91911f76fbf9030e2c", + "m_Guid": { + "m_GuidSerialized": "beb46b6b-8d2c-4b7e-a60d-24fc97c96263" + }, + "m_Name": "Occlusion Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Occlusion_Map", + "m_OverrideReferenceName": "occlusionTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "7e67cced55a64807a6feaeb890265768", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2043.0001220703125, + "y": 1150.0, + "width": 120.0, + "height": 149.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "b642383ab30a4f728987830028ba8631" + }, + { + "m_Id": "7469b59cafd741a68dd83cf2eb8b3f4b" + }, + { + "m_Id": "959b780135da40b5aa93a3adbb8f0e3c" + }, + { + "m_Id": "384aa946f7444341988f848a3c93d646" + }, + { + "m_Id": "d6632ead518946c9a75250a42948db28" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "7e862501058a45c9ad78e01eefa90605", + "m_Guid": { + "m_GuidSerialized": "9472ed92-8e71-43da-8db1-7313be8b1f40" + }, + "m_Name": "Enable Clearcoat", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_CLEARCOAT", + "m_OverrideReferenceName": "_CLEARCOAT_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "7ee5fe24f6f44ce6bfb3745d56aaf7e4", + "m_Id": 0, + "m_DisplayName": "Normal Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7f3028a1768849919bc6d07042e472e1", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.VertexColorNode", + "m_ObjectId": "7f4c33107f064c7da4d5577b6541188d", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Vertex Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1394.0, + "y": -42.000003814697269, + "width": 118.0001220703125, + "height": 93.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "7e1ec34d620c4cfdab4e87bb4d732943" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "7f827a3cdae746509e0dbcbc94884489", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1981.5499267578125, + "y": 1070.5499267578125, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "eb4ef4ab99d84f25b1632be81ff73700" + }, + { + "m_Id": "3d351435bd3043d49b62bdc87cb4c6cc" + }, + { + "m_Id": "01c648129a4849bab3a46e612a514bc0" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7fcb59f8468e4ca8b44fa2a6355eb44a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7ffcf46e2d4c484d8296f6511a9c96d6", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1714.0, + "y": 2182.0, + "width": 222.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "33b1cd1ec949420c9e2a20d559161330" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "105a2c9d68ae4193ab40386151992454" + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "80069515911646338233075f20ccb366", + "m_Guid": { + "m_GuidSerialized": "208be461-109f-4dea-8a16-883af1eb10da" + }, + "m_Name": "Emissive", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Emissive", + "m_OverrideReferenceName": "emissiveFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8030bf18e6964dd6b45d83716b664b8f", + "m_Id": 0, + "m_DisplayName": "Emissive Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8041700c702e4c639fc882b2c52c4d26", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1095.0001220703125, + "y": 620.0000610351563, + "width": 165.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "2dc945c7f366495292394c4dc6f8d2ee" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "043dbc7e1661471eaeccef62e594a7b3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "8047ad5c75004738994941835120ea73", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 535.9998168945313, + "y": -1719.0, + "width": 126.00018310546875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "e429afe93157489aa90e469a9f25cc4e" + }, + { + "m_Id": "091394b326f2467186083da0c670f363" + }, + { + "m_Id": "19ba635ae6f84c5db5f7d3388cc81a0c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "80793d67625149c2bd02e6569ae356ad", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "80999d8d0212495380df897d34ef682d", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ObjectNode", + "m_ObjectId": "809df95983ad4f6a9b642ce84a9e74a7", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Object", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1197.0001220703125, + "y": -26.99999237060547, + "width": 97.0, + "height": 101.00004577636719 + } + }, + "m_Slots": [ + { + "m_Id": "75e8d24724bd456e919aa87268c591df" + }, + { + "m_Id": "a0d0ad8e4fbe41f790330d57bf793124" + } + ], + "synonyms": [ + "position", + "scale" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "81fe883f7f3a462d93b22917182b212a", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "82833388b8084a96a48b982674499f0a", + "m_Id": 2, + "m_DisplayName": "ior", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "ior", + "m_StageCapability": 3, + "m_Value": 1.5, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "82a4cf80ced24dab9e710bc42acaf689", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "83d6e951e04a4db281ed0b7899e7f481", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "83e25615846341f88aaeac2226fe9fe7", + "m_Id": 3, + "m_DisplayName": "Z", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Z", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Z" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "83edcce6ad6e4149b9a51fa889324672", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8423b5cfbdfc427fa8ca7b71bafd1227", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8425b86d08614804b2191796e4d8b823", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8481c3c11f9a4e85acbcb4048e0d708b", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "84b3e8fddeff40c299ca38a8358ee503", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "84d55ba92e74430996e3472b42307dbe", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "2be05efd171444038a2e4b7115af59e6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "84e0b5a2ae6a46a785e5f8a97117454f", + "m_Title": "Volume", + "m_Position": { + "x": -2919.0, + "y": -378.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "84e2db014c35493eb0bf3d5ef8777478", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ecde0983554943cd81a917127fad3655" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "851b64cc55064cc591c263711144feca", + "m_Guid": { + "m_GuidSerialized": "bb5d1f8d-d033-480f-b48e-bc5fd655a7d7" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Alpha_Cutoff", + "m_OverrideReferenceName": "alphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "85919bf0fb954ea5bbd85aee75548671", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1688.0, + "y": 927.0, + "width": 183.0, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "ff80ada2b36245f59823964fce98cf3f" + }, + { + "m_Id": "c18175a2be194493b259762085e46b71" + }, + { + "m_Id": "9be7671be88b4766abebd27bcdae6674" + }, + { + "m_Id": "61939b9cd2a3410eb6e379048eae761c" + }, + { + "m_Id": "3914f91323f8463689f89651916dff4a" + }, + { + "m_Id": "3c5ebaf4daab488c97714a0c655cbe48" + }, + { + "m_Id": "d2cd4dff4e184092b3b8a5f61657b5c1" + }, + { + "m_Id": "0be390806eb9441592efb0e38b1c1d16" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85a22e74dd8044e9b51c32fb182e3f1a", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "85b9b98e0f974e0a9bac2d650ca54568", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85ec0cef04ec49ee885d4a3f4b44efa9", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "860451bbde6d43ccab5afa88d7bf27e3", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8622eda33b9a4421b54673eee6f28857", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "86351816717b466c977fecf4d84eb6a2", + "m_Guid": { + "m_GuidSerialized": "29a3b28d-65b6-4f84-938e-3006058d602b" + }, + "m_Name": "Base Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Base_Color", + "m_OverrideReferenceName": "baseColorFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "86714225715947dd992fa9d9be01d513", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1202.0, + "y": -1350.0, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "f877dd882881459c9b9d7cc67e249fe3" + }, + { + "m_Id": "14c36ee1905d45bea204fee0d7ad5b56" + }, + { + "m_Id": "69da7e2093d14bd582c3ea7e7f3be09d" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8757abe351fc4351abd6115a14dba130", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1141.0, + "y": 1687.0, + "width": 144.00006103515626, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "8ff6ff1f11de4a6295096bcc4f38a9b3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3c72208ecc9f4632b650d1c06ac9c4d2" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "87b808f5412f4fc3a450ebecdf23d83e", + "m_Guid": { + "m_GuidSerialized": "3bd62a69-6f74-4b38-b815-22f0301e3448" + }, + "m_Name": "Enable Iridescence", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_IRIDESCENCE", + "m_OverrideReferenceName": "_IRIDESCENCE_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "87e965ed28a34e348c8ab3c9e0287604", + "m_Title": "Doesn't seem to work in URP?", + "m_Content": "Not sure why SG has the Specular Color node...", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": 1417.0, + "y": 1743.0, + "width": 200.0, + "height": 160.0 + }, + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "87f49076b11a43f2bc2c05c9154c93d4", + "m_Guid": { + "m_GuidSerialized": "76031980-aa6c-44a5-ab6c-9b17352aab62" + }, + "m_Name": "Enable Specular", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_SPECULAR", + "m_OverrideReferenceName": "_SPECULAR_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "887246a84e814042ba21984b7c5c1123", + "m_Id": 0, + "m_DisplayName": "Iridescence IOR", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "88b0a17c869c4814b8378c2e45f7809f", + "m_Id": 0, + "m_DisplayName": "Specular Color Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "88ca303ae5ce40be811c06466d6e943d", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "88d293953f5048d79b620a70693b4764", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "88f2199c2da1413db8e5facdfb4e87b6", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "894265a6ff2b40d69e1df86185463048", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -929.0000610351563, + "y": -1658.0001220703125, + "width": 208.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "03cb444c984d4bec878f4b3441c27421" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3e441c009906463b89aceae672c7f8aa" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "8a0fadc477234cbe95efb02754f32e2d", + "m_Guid": { + "m_GuidSerialized": "07b3bc00-bf3a-4796-9231-7483d18d3ccf" + }, + "m_Name": "Normal Scale", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Normal_Scale", + "m_OverrideReferenceName": "normalScale", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "8a2675ba63f74138bbef91565890f1d4", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8a976fb16ee8409bbe842fcdc6e529cf", + "m_Id": 0, + "m_DisplayName": "Normal Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8aac51266ea54d3ca1b6d3c1e5df8cd1", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1671.0, + "y": 2493.000244140625, + "width": 223.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "7622a71dcc594adf9ecb71d4c65f6d1c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "417bfe74fb994ff8b15125f41148d8c6" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "8acbbab8c4a24947ab8ac6205571c94a", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "8b08f9f87c4d417ea72f69104abe93df", + "m_Guid": { + "m_GuidSerialized": "5f842ae2-6d61-4225-a336-68360c9de206" + }, + "m_Name": "Specular Color Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Specular_Color_Map", + "m_OverrideReferenceName": "specularColorTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "8b7ba9cd31bf4837a428f3d49be77d89", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2006.0, + "y": 900.0, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "a00ac96d03f84e99832f03c8462d30a3" + }, + { + "m_Id": "5cae5ffa9e5a400e8b9c21166c4e4257" + }, + { + "m_Id": "3ce4018f12df4041820551e785dfd5e1" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8be5a7ef65294aec8c30a70c6f79f2a0", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8c31d441f8de455da2b16221183f6747", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1170.0001220703125, + "y": 1325.0001220703125, + "width": 231.0, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "bb890d625cd148d28c8bbc95c2de7d51" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "14ec0a08cca146a98862d31183f587f4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8df7078bc2fe4b6f83ab4f8336aedcd9", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8e42e5d757ae4d9e8fbcacfb9b205f12", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "8e5b3b953d0944d784b2f73adaf55428", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "8e6414766bc746bb8d1741abe87343b7", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 100.0, + "y": 380.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8ea578918f054289b89ef073ad29fade", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "8ec42f4990b242bb935d34204c3b753f", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "8f17eb0f05754354824d445078b4a261", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDUnlitSubTarget", + "m_ObjectId": "8f7106cb155b403ea6a8022400235d95" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8f75a22252ee427181198b520a65e118", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8ff6ff1f11de4a6295096bcc4f38a9b3", + "m_Id": 0, + "m_DisplayName": "Transmission", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "9097022b6cc04ed094b5566d24212d9e", + "m_Id": 177458063, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "90e0e7e9f75044ad959e408da384de44", + "m_Guid": { + "m_GuidSerialized": "0d93659e-0928-436e-9073-e756de46db7d" + }, + "m_Name": "Base Color Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Base_Color_Map", + "m_OverrideReferenceName": "baseColorTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3Node", + "m_ObjectId": "9104f2d7ad4e471b8749ef629ed1088e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vector 3", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2244.000244140625, + "y": 552.0000610351563, + "width": 127.999755859375, + "height": 124.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "be1e2461293748debcf328040ee8512a" + }, + { + "m_Id": "8ea578918f054289b89ef073ad29fade" + }, + { + "m_Id": "83e25615846341f88aaeac2226fe9fe7" + }, + { + "m_Id": "dfbd446e99f747c4937503d7e0fe34d7" + } + ], + "synonyms": [ + "3", + "v3", + "vec3", + "float3" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "917a3ac38dc74e0d86dcf3da09dd1a08", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1098.0, + "y": 2090.0, + "width": 193.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "e522b97cee2f4ff4808f4eda62fa4d1a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "49b1570f6c2040dfa64a34f18ba7bc52" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "9182a16e88c8434eb35ff1f63bb49e8b", + "m_Title": "Only modify the graph in 2021.3", + "m_Content": "Because of the workaround with texture tiling/offset. When modify this graph in 2020, the tiling/offset will no longer work in 2021.3+.\nToggle for Textures \"Use Tiling and Offset\" need to be set (which does'nt exist in 2020)", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -149.0, + "y": -2382.0, + "width": 1149.5550537109375, + "height": 187.7724609375 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "91933686a113451b885a437cae1ee455", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "91ac88e441ea4086b40ddd4e5ed59c4b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2542.000244140625, + "y": -436.9999694824219, + "width": 130.0, + "height": 142.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "f2e3248c81dc49a59dfcecdaf4fd1ef4" + }, + { + "m_Id": "62695fc5dc364bf785f684a561a3ddca" + }, + { + "m_Id": "5931680f7ccf49c4bb700855be684150" + }, + { + "m_Id": "bc66d3d86c1641a283ddef733ed703b1" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "91c58898c6bb409395192a9efe525485", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Metallic", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "371e4a8bf3324d5795dbdcea706c56e5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Metallic" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "91ff645bccd44043ba32ecd58fb27796", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "92a44c53f868404b9129d791d8f34404", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1243.0, + "y": 139.00001525878907, + "width": 170.0, + "height": 141.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "62e9d751103b4c5589e69eebf69bbf2a" + }, + { + "m_Id": "d531cc6d567f4911aff80a0b28d0fb91" + }, + { + "m_Id": "3a190e9fe175446388ce351f08beb58f" + }, + { + "m_Id": "7594756c6c0646608f479d09e217198f" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ScreenPositionMaterialSlot", + "m_ObjectId": "930533d9deee4c08a24d6384302978e6", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_ScreenSpaceType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "930a53d67a5848df90387a45b712875e", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9326d82c079e47969a6075f80620f92c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "934381759c5947709a33fde75e0c5595", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "93b4253497d147e8a714cf655533b4af", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1695.0001220703125, + "y": 2015.0001220703125, + "width": 121.0, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "c7c71d4c826b43ecb2df4db31aa9a734" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1a5d204b45a44b6bac695a4ee5fa47c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "93dc68e07bea4d88969cb8497aedb688", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1102.0, + "y": 2443.0, + "width": 197.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "4395008567d747fcb4ebaf7c7470fba3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b82b2aa938924570aae5927593eaed76" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "941dcf45202046139d4875f393e651a3", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "954c85b2964d43ca90e1a13747a3eef1", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "959b780135da40b5aa93a3adbb8f0e3c", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "95e9a6afa84c4543bd99c362a385118d", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "974a5648658142479dd293dbc303a122", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "97a9164682334255847706dd504c5296", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "97df40c83f5a4671a59db5b30b4c6316", + "m_Guid": { + "m_GuidSerialized": "0ed3a523-c978-4e5c-bc38-732b77ffc1b4" + }, + "m_Name": "Enable Vertex Colors", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_ENABLE_VERTEX_COLORS", + "m_OverrideReferenceName": "_VERTEX_COLORS_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 1, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "97e8a63e6ff046e687f550cc272c90d5", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 686.9998168945313, + "y": -1641.0, + "width": 126.00018310546875, + "height": 118.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "436c97ee0270458384ce4631bac29eb6" + }, + { + "m_Id": "9e8455a1501a461a913dd91250bec058" + }, + { + "m_Id": "3141c7e396c740b2a7bfd349dbf69ee7" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ViewDirectionMaterialSlot", + "m_ObjectId": "97ed6c1db4b94972a42fe1e7e24bcf68", + "m_Id": 1, + "m_DisplayName": "View Dir", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "ViewDir", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "980c8b8a564144b793271871d59b19e7", + "m_Guid": { + "m_GuidSerialized": "8bd8a7b9-42f4-4ce6-b628-4a4f24114810" + }, + "m_Name": "Thickness Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_980c8b8a564144b793271871d59b19e7", + "m_OverrideReferenceName": "thicknessTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "988c622f16f64a9898a8f3b255c84e8c", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1806.0001220703125, + "y": 255.00001525878907, + "width": 144.0, + "height": 33.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "b5a1f9e7bce24ea6a778aa022e0b7107" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8a0fadc477234cbe95efb02754f32e2d" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "98bfc82acd6e48bcb86c8cb2524113ce", + "m_Guid": { + "m_GuidSerialized": "7c8c65d8-e196-4a03-b09c-eccef32fa973" + }, + "m_Name": "Iridescence Map Tiling/Offset", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector4_98bfc82acd6e48bcb86c8cb2524113ce", + "m_OverrideReferenceName": "iridescenceTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "98c9d09d29c048779209e551e2bd6808", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "98cbaa17fc8b45cf9f425f6652e5db9c", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "98fd1ba94a44499a815aa81bfbd5bf2a", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DivideNode", + "m_ObjectId": "9900fba29f7c4a8e9ef63caa3cdecb4a", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Divide", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1609.0001220703125, + "y": 1020.0001220703125, + "width": 126.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "0918c40cbbb440ad9c220aeeec8be904" + }, + { + "m_Id": "f11545dd31fe4aac903fb724b1049589" + }, + { + "m_Id": "7502a9caa98e45729c5647277396dbf5" + } + ], + "synonyms": [ + "division", + "divided by" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "994a231649e24cdea0a4267c363616c1", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9966b44de47f44c09134230701fc17cc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "999b803d7ace4709a4dc31d05c9e0f25", + "m_Id": 1, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "99ab49f5c8914bc99262c2b1a8b20b1b", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9a3bb394d6ec4891a9cba4d5cde5a220", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9a7364cdc5f548baba58b40b62366c1b", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "9a81b1d7b1ca4a299b94c7be610dc8fd", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2373.0, + "y": 282.0, + "width": 251.0, + "height": 166.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "4d928a9a13bf4961af6d0b56cd16641f" + }, + { + "m_Id": "af875f4d8ef34faf9629cd9f05b4908c" + }, + { + "m_Id": "3c2f517f48b4488a9fe0bdba6b60a134" + }, + { + "m_Id": "5b6271d840fa47afba5623a8cce74940" + }, + { + "m_Id": "2ead1b4a4aae4e1c9590868fb8276143" + }, + { + "m_Id": "83edcce6ad6e4149b9a51fa889324672" + }, + { + "m_Id": "497b3a5aa243456e94dd3bb8cf15917b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9ae243c87a164179871b9ffb282cf23e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9b2840bea8984c22acc50b45cb5c235e", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 468.9999084472656, + "y": 15.00003719329834, + "width": 130.00003051757813, + "height": 118.0000228881836 + } + }, + "m_Slots": [ + { + "m_Id": "a37b07e47fe34bb3b6521c781e3f830e" + }, + { + "m_Id": "e84a89cc58204cc08b68f15cb6469644" + }, + { + "m_Id": "186af275bd5e4705b7452f33b7ac33c9" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9b37501fa48e46a9ae606c9b1ede4351", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "9be492b061b948c8bf9969a7a476da96", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1589.9998779296875, + "y": 529.0, + "width": 183.0, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "4849b3a5f68e4bafa37b69999d921afd" + }, + { + "m_Id": "c8f995e72d4a413dbb97541db3b1364a" + }, + { + "m_Id": "e4aa16bda9ed403a963ea1a80fbab307" + }, + { + "m_Id": "7582f079745745b9ae774f979b507822" + }, + { + "m_Id": "547571dcbd2140a0bee62584e58884ae" + }, + { + "m_Id": "97a9164682334255847706dd504c5296" + }, + { + "m_Id": "41d7bbb28c084adea8a2c007184d3e38" + }, + { + "m_Id": "cc96868a5ddb41dfae176d045401b30b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9be7671be88b4766abebd27bcdae6674", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9beb407b09134070954f2a6b5c1167e6", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "9c03ea90ae63433ca68e8b90c41e67c2", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 810.9999389648438, + "y": -644.0, + "width": 56.00006103515625, + "height": 24.0 + } + }, + "m_Slots": [ + { + "m_Id": "74f230d072d44be694f768997578c434" + }, + { + "m_Id": "d8e4a4ec868740879213fefdf37bf122" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "9c1ac2fb4b3f45cca24f00b2c1978cc1", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "9c6d8f01e50a49769acea34edff42dc5", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ClampNode", + "m_ObjectId": "9d897128ed844e848e23acd66dcf0292", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Clamp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1734.0001220703125, + "y": 122.00000762939453, + "width": 140.0, + "height": 142.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "2b443f0dc6564eaeb251851c92c4a83e" + }, + { + "m_Id": "bc336f8e4192409e85e657104f83db20" + }, + { + "m_Id": "d6e04d1403174ba59a165a417fa580e7" + }, + { + "m_Id": "b96f07fd463e44b2944e864b9f46fcdd" + } + ], + "synonyms": [ + "limit" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9d9ec1e41629462ea79ba5faac892a56", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9de5cc84d505425f959636a84b9fb32e", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "9df7360a64294d7fb33e4bb464809bcc", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1633.0, + "y": 2057.0, + "width": 183.0001220703125, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "88f2199c2da1413db8e5facdfb4e87b6" + }, + { + "m_Id": "0d495fd34a134a8885f72fea88aaeec4" + }, + { + "m_Id": "8f75a22252ee427181198b520a65e118" + }, + { + "m_Id": "8be5a7ef65294aec8c30a70c6f79f2a0" + }, + { + "m_Id": "9beb407b09134070954f2a6b5c1167e6" + }, + { + "m_Id": "f165be76156d439db6d70dd0c0f8aeac" + }, + { + "m_Id": "27be125aeff84fe2a6e34aae2b187134" + }, + { + "m_Id": "b06cc11888ac405c9e37b3394fc4e7df" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e3aebb69ef04f038b0047212dee79aa", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9e3ebfe6060d407daada184eb3ed1b49", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1075.0, + "y": 2158.0, + "width": 216.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "029e4d09db314fe8b33f71a5152aeed3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4c1ca34c9be14b66b960ca5ff430acd0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9e8455a1501a461a913dd91250bec058", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "9e96b6147ee14bd987ad3b95a36dd54b", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "9ecb55f770a6449c8eaa8094328a5b01", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 391.0, + "y": 145.0, + "width": 207.99993896484376, + "height": 127.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "7d936c8d597d47068058b1f217a97848" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "9ee7ffdaf0634f4caa173c61895f5ab5", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "9f23b42a4ef44b2aa856f593a663fc1a", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturateNode", + "m_ObjectId": "9f2c61fddaff41df8764adeb9008f2fa", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Saturate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 831.9998779296875, + "y": -1446.0, + "width": 128.00006103515626, + "height": 94.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "2b965b0789be43df916141ecf106ead7" + }, + { + "m_Id": "16128b0e399944f593436a891d7c4268" + } + ], + "synonyms": [ + "clamp" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9f3aec08fb344aff8341297b4a7afcc1", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9f8ecc63ebc14541be764f25143dfc6b", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a00ac96d03f84e99832f03c8462d30a3", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a061bba5c9f34d1da220be73257a9313", + "m_Id": 0, + "m_DisplayName": "Thickness Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a0d0ad8e4fbe41f790330d57bf793124", + "m_Id": 1, + "m_DisplayName": "Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Scale", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a0f839c542124faea4358fe4a8083771", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1544.0, + "y": -123.00003051757813, + "width": 130.0001220703125, + "height": 118.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "53e6e4fd5b7040cc8ca17980f41e3df4" + }, + { + "m_Id": "cf88e70b5d9849329c0adf3c779fd376" + }, + { + "m_Id": "be355e8ec4254b67ae45656d90d28beb" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "a1d1982804614a6897989321f580888e", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2039.0001220703125, + "y": 1844.0001220703125, + "width": 207.9998779296875, + "height": 127.0 + } + }, + "m_Slots": [ + { + "m_Id": "eb6c2f01ab604a8d8d7b5f3f6014cd60" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.501960813999176, + "g": 0.501960813999176, + "b": 0.501960813999176, + "a": 1.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a1dbcb7196b24ad58a8c4d5df27b9857", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a267acde60024329b4e0936179de7717", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -875.000244140625, + "y": 2419.000244140625, + "width": 116.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "ca102540121f4ca08b644b0a4b57e591" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2b0a026cebb0460a83c4e4d6e29e6e36" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a270ed360fa64c4998fae05b7789245c", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "a28c1bc72c564a4fbe11ea22bb853717", + "m_Guid": { + "m_GuidSerialized": "5b1646b8-5d6c-4199-b22f-aa07ee0db642" + }, + "m_Name": "Clearcoat Roughness Map", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Roughness Map", + "m_DefaultReferenceName": "_Clearcoat_Roughness_Map", + "m_OverrideReferenceName": "clearcoatRoughnessTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a2e5e4acd661494eace0ff5e08dd639d", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "a2ef78d6824743a198815280b9909f75", + "m_Title": "Occlusion - Roughness - Metallic", + "m_Position": { + "x": -1749.0, + "y": 2000.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubtractNode", + "m_ObjectId": "a31359da93cd43489c8a0ddc522c1e34", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Subtract", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -905.0003051757813, + "y": 2202.0, + "width": 126.00018310546875, + "height": 118.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "91ff645bccd44043ba32ecd58fb27796" + }, + { + "m_Id": "bb387fb4b90343dd90143b68aa0ff46e" + }, + { + "m_Id": "ec5e9c1cb4234532a591ae8350e54f6b" + } + ], + "synonyms": [ + "subtraction", + "remove", + "minus", + "take away" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "a31de1ea8ed447308eea30bd6fdac922", + "m_Guid": { + "m_GuidSerialized": "d2380b97-8e1a-45c1-b7dd-44313775399d" + }, + "m_Name": "Base Color Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Map_UV", + "m_OverrideReferenceName": "baseColorTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a348157c96404f4ea2f6ee572a33ad00", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a355cb82f7304873aeec1b8ee5a7ea3c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a36398bcd51f42059d7ac89f9c7d9968", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a37b07e47fe34bb3b6521c781e3f830e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "a3dde4ad5e2a411a9ed65b4482699baf", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1333.0, + "y": 2355.0, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ea9af1b216403aac9bde06d636ff66" + }, + { + "m_Id": "941dcf45202046139d4875f393e651a3" + }, + { + "m_Id": "36887d6354ed43dc806ee5f97f6da52d" + }, + { + "m_Id": "c1051ba153e14ad89b4614162cbee8a7" + }, + { + "m_Id": "bb37a91395b146e2a98abaefa58e39d5" + }, + { + "m_Id": "1d7eb089df4748b89fc6c3d83bed8b76" + }, + { + "m_Id": "aa626b81d8964dc3875fc6d4c7c0791b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a482fd18440e4922afab82f12dd388ad", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a4a10fe88caf48a9b3690e8546b73a51", + "m_Id": 0, + "m_DisplayName": "Transmission Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "a4f668fc6a574c77acbe44ce0e39ac43", + "m_Id": 1, + "m_DisplayName": "Normal", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "a50370cc3ee24456919ee633ea0803d2", + "m_Guid": { + "m_GuidSerialized": "e5e3f900-90c9-4b6f-ae65-6e637255067e" + }, + "m_Name": "Clearcoat Mask Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Mask Map UV", + "m_DefaultReferenceName": "_Clearcoat_Mask_Map_UV", + "m_OverrideReferenceName": "clearcoatTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a57f6047cc4e4232a376e5c19a09c7aa", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a5c994c3937e4e72b2438108ca0aad92", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1641.9998779296875, + "y": 467.9999694824219, + "width": 123.000244140625, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "c06c0e4af2b94e46800d6f2a812dd535" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "80069515911646338233075f20ccb366" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a5fd999d5a6f4cdbb28c90889d5151f9", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2625.0, + "y": 408.0, + "width": 223.0, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "a061bba5c9f34d1da220be73257a9313" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4f6277e06f1e4006baf370c15741a704" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a6724ad4ae9e48d69a2d176e04851177", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "a691d9b4045f414cb3cf5f4954e98c6f", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a713df93e6de4d2a8f9e725c6608431d", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a7ada2aa2ece41108c144d2baa843400", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 1.0, + "e01": 1.0, + "e02": 1.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a7c7c5e2c93045f9a142370141145621", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 916.9998168945313, + "y": -919.9999389648438, + "width": 126.00018310546875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "d830bc88218e4b8aaa7492cec861f836" + }, + { + "m_Id": "bd174da5dda14614a244c9dee539fe7c" + }, + { + "m_Id": "c671902eeb2f4dfc8b004fe67f11f99e" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "a84bc040b0ab456e92b7dfd5d9a636a4", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Refract (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1476.0001220703125, + "y": -139.99996948242188, + "width": 201.0, + "height": 141.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "3022d91828194f10a5b0b6cbaa4eeb86" + }, + { + "m_Id": "d011b5d7d90a4a38a5e759e5e8aa69cd" + }, + { + "m_Id": "82833388b8084a96a48b982674499f0a" + }, + { + "m_Id": "de15cbb7c7504d0e833542b0c7787aae" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "Refract", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "refractionVector = refract( - v, normalize( n ), 1 / ior );" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "a88f553fcc0246a2bc8a573e921ce351", + "m_Guid": { + "m_GuidSerialized": "ac1077ea-fcbf-4d39-a008-35c1954bff7b" + }, + "m_Name": "Iridescence Thickness Min", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Iridescence_Thickness_Min", + "m_OverrideReferenceName": "iridescenceThicknessMinimum", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 100.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a8c88eada3b147bb99a0e6d8c31b4d32", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a8f71db37bcf409dafa6c9b01bb96169", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -935.0003662109375, + "y": 1532.000244140625, + "width": 126.000244140625, + "height": 117.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "c7ed271715e047e0b2b5d2dd19399362" + }, + { + "m_Id": "5d89c1f5111447cc976117bf944fa2f3" + }, + { + "m_Id": "a355cb82f7304873aeec1b8ee5a7ea3c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a8ffdecf1edb4fbaa321c4099d17ea2e", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1856.0001220703125, + "y": 2032.0, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "503eff2ab474419ab3e996e64e411b69" + }, + { + "m_Id": "bac8c4c2f8f84fa89e5d93dd4a38e134" + }, + { + "m_Id": "ef5def74039c401eb01dc879236239f3" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a9074d1fefec4f208bd83fa2f5db0581", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "a9e9943b5fc64ce892285c678459565d", + "m_Id": 1, + "m_DisplayName": "uv", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "uv", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "aa2e642ca1cc4cb1b48566ecb6dc4a0f", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "aa626b81d8964dc3875fc6d4c7c0791b", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "aa737ed29b1b48c9835f8beff57a8aec", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "aaa0a3a6b1f24183a1ad486843ee5d76", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "ae4d01f59f0b4282a27f160d6cadb664", + "m_Id": 0, + "m_DisplayName": "Emissive Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ae75beb2c1494f609bb76fbc141d12c8", + "m_Guid": { + "m_GuidSerialized": "8957623b-b1ca-4cc4-b4fa-dea82860bd36" + }, + "m_Name": "Roughness-Metallic Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_ae75beb2c1494f609bb76fbc141d12c8", + "m_OverrideReferenceName": "metallicRoughnessTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ae993503b9444c58869120f95f7394d5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "af3117c8564c4293acd58e3b5cbf06cf", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "af3246aa49ad4e3d88751a67fbdab23f", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "af7e9ab896eb4e43a765444223111e34", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "af875f4d8ef34faf9629cd9f05b4908c", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "af8a13a8abdb4e9db334b025b41195d8", + "m_Id": 2009327148, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Texture", + "m_StageCapability": 2, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "afc7970b28824f77bf1194792fc8fa04", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "b06cc11888ac405c9e37b3394fc4e7df", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b0ad30c223b44622b63210e61c600fa7", + "m_Id": 0, + "m_DisplayName": "Roughness-Metallic Map Tilling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.TransformNode", + "m_ObjectId": "b133d79ba4bc41af8ed5110288bf16ff", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Transform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -516.0001220703125, + "y": -170.99996948242188, + "width": 212.00006103515626, + "height": 157.00001525878907 + } + }, + "m_Slots": [ + { + "m_Id": "540fbe60da724a25863c84a28a7b19de" + }, + { + "m_Id": "59b8a05662ac4fc6aeb5b1647d80080a" + } + ], + "synonyms": [ + "world", + "tangent", + "object", + "view", + "screen", + "convert" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Conversion": { + "from": 2, + "to": 1 + }, + "m_ConversionType": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b1bf60579c8945c38bb11404fd2cbeaf", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b1e0c67a17a641d8ae4b7bd056d70ab2", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b267ff17ca774906976833c5f5b485e4", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "b39562c3120349b784d90f66734f0158", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -715.0001831054688, + "y": 2379.000244140625, + "width": 125.99993896484375, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "d3380b47b0fa4f5c873ddeb91f42d7ec" + }, + { + "m_Id": "9326d82c079e47969a6075f80620f92c" + }, + { + "m_Id": "8a2675ba63f74138bbef91565890f1d4" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "b3bf6e9825a34fe5ab67bdb85f17df32", + "m_Guid": { + "m_GuidSerialized": "8afa82b2-e899-4d34-be69-8af563228705" + }, + "m_Name": "Enable Volume", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Enable_Volume", + "m_OverrideReferenceName": "_VOLUME_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b40ffc3bc7f241f9bb4466a341075eec", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1179.0, + "y": 997.0000610351563, + "width": 191.0, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "1fe354914fbb4f87b63d5007f8d90e59" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "57b184f48a8b498c8e2cbaaa5aed5243" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b431ab1d7f0a471896e2b98e0d0b9f83", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b448a23f9f09460994f0296f1f58a2b0", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2029.0001220703125, + "y": 159.00006103515626, + "width": 128.0, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "23efdb16a1b54d0893e5663038644a17" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "62341c2af4b04863803ba8369da7ee0b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b455ebafa50b46fd8e2abd989d6e5096", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b483df628a7f4bd6830039508e1b6acf", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "b4d8cf566d7d4d0d8a49901c25e25950", + "m_Guid": { + "m_GuidSerialized": "fcd3c8ab-344d-43dc-ae90-2103a7328a6b" + }, + "m_Name": "Thickness Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Thickness_Map", + "m_OverrideReferenceName": "thicknessTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b4fa69b8f0b34d6793eaf9af18109b4d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b50bcf227c134f89bfeb2a7af963271a", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b5399eefb27f48b08503213d511c389e", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b579868c840049e2b2c511a4221fcfa2", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b5a1f9e7bce24ea6a778aa022e0b7107", + "m_Id": 0, + "m_DisplayName": "Normal Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b5bdc559d71140e69cab0fdc0e5dca05", + "m_Id": 0, + "m_DisplayName": "Base Color Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b5c8bada19314a1fb0433aebf7aa091d", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b5ce0ae9ec7e427cbf911d5c0e9e812e", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b5fdfd81a2464e01916672bfcb723de8", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b612580ec76540688e6c548f7e50e022", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b642383ab30a4f728987830028ba8631", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "b6468f11990d4fc29393e12aac937398", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1456.0001220703125, + "y": 247.00006103515626, + "width": 126.0, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "157938a58a294edf9235f315d02de558" + }, + { + "m_Id": "9a7364cdc5f548baba58b40b62366c1b" + }, + { + "m_Id": "7d1a86132c7e4142bc72cfe87dcc59b6" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "b79ad7d70d9e4cc5bcd5c8a18caa7d86", + "m_Guid": { + "m_GuidSerialized": "62191380-2b6c-4866-b005-d8f5d269c24a" + }, + "m_Name": "Clearcoat Roughness Map Tiling/Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Clearcoat Roughness Map Tiling/Offset", + "m_DefaultReferenceName": "_Clearcoat_Roughness_Map_Tiling_Offset", + "m_OverrideReferenceName": "clearcoatRoughnessTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "b82b2aa938924570aae5927593eaed76", + "m_Guid": { + "m_GuidSerialized": "42895883-910c-4aed-8f89-feee47a41b7f" + }, + "m_Name": "Specular Color Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_b82b2aa938924570aae5927593eaed76", + "m_OverrideReferenceName": "specularColorTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b874136726cd40e8b6d2d98f625bab7e", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b91488151b004cd2aa2ba7923db0e152", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "b93e92df8d3b43209ba092f9789cdd20", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ClampNode", + "m_ObjectId": "b95fc0c69dfd41f4b2aa0d3dd326f562", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Clamp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1796.0001220703125, + "y": 950.0001220703125, + "width": 140.0, + "height": 141.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "98fd1ba94a44499a815aa81bfbd5bf2a" + }, + { + "m_Id": "0c027a63f6ee4a1f8744a43d2893937f" + }, + { + "m_Id": "2f5958af84214a2a9295cb6bcdcdce59" + }, + { + "m_Id": "08ceaef13e204b93b4c2c05c8109c018" + } + ], + "synonyms": [ + "limit" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b96ad6014ae14e7ba3f484c27e16382c", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b96f07fd463e44b2944e864b9f46fcdd", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "b973ca0e4efb4dc2a0a905de3b1e5122", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2.0001471042633058, + "y": -1303.9998779296875, + "width": 125.99996948242188, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "b1e0c67a17a641d8ae4b7bd056d70ab2" + }, + { + "m_Id": "d5f8926116d24082be2201fc96d9ac18" + }, + { + "m_Id": "72d0cdcf81384bcf8ed160aaeaf9c35c" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "b99740d7a5944affaaaec293c4154484", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -731.0, + "y": -1257.0, + "width": 256.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "0c3ba79f7ecf4c888ad6f6816416b0fd" + }, + { + "m_Id": "4fe47b47e7d04a41a055f4d66dddcd63" + }, + { + "m_Id": "cd808c2744f442f28bfa290de9e6b5ef" + }, + { + "m_Id": "336a92c84db74612b3919f23baa246ab" + }, + { + "m_Id": "67101a4947c443f986e2d87db446bcce" + }, + { + "m_Id": "ec109f60b1cd4575ad27b00c6d32d590" + }, + { + "m_Id": "67c63c974a924e8eb80fe71272c38db5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b99e94611bed4ed58bcc7a9c30d2772e", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ba192fda4be64270a8cd43eee10f2542", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.75, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "ba7ecde994b4474184c1c30ed4439bb3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Enable Iridescence", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2712.0, + "y": -365.9999694824219, + "width": 153.999755859375, + "height": 118.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "f2653bc7dd67466c9e11297c68a24b7a" + }, + { + "m_Id": "4e455d381d794048bb64b988cef2e24a" + }, + { + "m_Id": "e4e6e2cdbc804c208a673e676f5a2325" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "87b808f5412f4fc3a450ebecdf23d83e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "ba9a2ca04ce041e38e549ca34918e30c", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -577.0001220703125, + "y": 1579.0001220703125, + "width": 125.99990844726563, + "height": 142.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "506bf201fc4142d480a46dd5f44c5884" + }, + { + "m_Id": "cec626b6a3964a5bb306b54570ea55ec" + }, + { + "m_Id": "0013a756c5cc437a94860bae95387f34" + }, + { + "m_Id": "309b1a22566d417d9cd49277b012681d" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bac8c4c2f8f84fa89e5d93dd4a38e134", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "bb37a91395b146e2a98abaefa58e39d5", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bb387fb4b90343dd90143b68aa0ff46e", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ObjectNode", + "m_ObjectId": "bb7674282a934e3b9bfb057277071aa7", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Object", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2418.0, + "y": 991.0, + "width": 97.0, + "height": 101.0 + } + }, + "m_Slots": [ + { + "m_Id": "48b85ee5e3874844bda0d352d462e17c" + }, + { + "m_Id": "d594f01d8a2048b280bcbe5757a463fc" + } + ], + "synonyms": [ + "position", + "scale" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bb890d625cd148d28c8bbc95c2de7d51", + "m_Id": 0, + "m_DisplayName": "Clearcoat Roughness Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bb92d309e7b14e66a0f3e9d918405957", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bbcc7b25c5024b5a99a8d3635b345c9a", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bc336f8e4192409e85e657104f83db20", + "m_Id": 1, + "m_DisplayName": "Min", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Min", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bc40f37950614be8999aea81198fa25c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bc66d3d86c1641a283ddef733ed703b1", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bc79a22a5ffe44ce8d7edfa234c480eb", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturateNode", + "m_ObjectId": "bd06c49ec440472da7f53fde41efa972", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Saturate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -880.0, + "y": 620.0000610351563, + "width": 132.0, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "0cdfa53d80ba4f22858aedf3a1e41997" + }, + { + "m_Id": "e8ff565725d649b9bc011a4b07b28ab4" + } + ], + "synonyms": [ + "clamp" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "bd16ba2efda642b9a1a4840ef69cefba", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bd174da5dda14614a244c9dee539fe7c", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bd9da3a1b4354ba1b5d286ce6a887c0d", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "be11291cab7e403780a73a6c0c672b43", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be1e2461293748debcf328040ee8512a", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "be355e8ec4254b67ae45656d90d28beb", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "be820519ca45495286894ed58168bb3f", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "be921ee031a9481bad2a75cc630e1c9c", + "m_Group": { + "m_Id": "52ad86c239f740608a41d0cf1d4aab20" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1748.0, + "y": 1466.0, + "width": 217.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "a4a10fe88caf48a9b3690e8546b73a51" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "dca2cfed99924dcda4d95ce6319909a4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "bf3887a58a0f4be99954701cfd4944cf", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "bf6e751348af40b09ab1beefc3e198a3", + "m_Id": 0, + "m_DisplayName": "Iridescence Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RedirectNodeData", + "m_ObjectId": "bfbacbfd6c6949fdad622227b8cb79d5", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Redirect Node", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -29.999963760375978, + "y": 144.99998474121095, + "width": 56.000091552734378, + "height": 24.000015258789064 + } + }, + "m_Slots": [ + { + "m_Id": "994a231649e24cdea0a4267c363616c1" + }, + { + "m_Id": "3cd8d66635a942e290d51e6c8d1a7872" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "bfd54a576925456e853aa8845eaf0d2a", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1142.0001220703125, + "y": 1291.0, + "width": 259.0, + "height": 34.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "3bd9733b454645739a3da280f6f12204" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "46e1e39c81414ae58142acbe94c617a3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c01b5bb817134989a3ddb326b67996b3", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c05a67cff38b47e6a88db1388f2cfa69", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c06c0e4af2b94e46800d6f2a812dd535", + "m_Id": 0, + "m_DisplayName": "Emissive", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c0b800a8b577453182963e3cc1fc7a12", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c1051ba153e14ad89b4614162cbee8a7", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c118ae28deb94b2c9087cd33707ee34b", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c18175a2be194493b259762085e46b71", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c1dc90083616463ebeda582a5612aaaf", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1337.0, + "y": 272.0, + "width": 207.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "2090fe25b14c4580b73042885a983527" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "20d582c282a9450484c2d45dada8e8a9" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "c1f6d9e695904fea9b3abdc1e683f2c8", + "m_Title": "Base Color + Normal + Emission", + "m_Position": { + "x": 806.0000610351563, + "y": -558.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c22bbf41264143e690d1c9eea357c483", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c26f6cb4bca84384880cd079c5804964", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c274ab9f068448a689820eb3182f4140", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "c29b0cea9eb84998b2acfd23fd90641f", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 155.9998321533203, + "y": -1790.0, + "width": 186.00010681152345, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "1c118ceca899417281996660dba51179" + }, + { + "m_Id": "8e6414766bc746bb8d1741abe87343b7" + }, + { + "m_Id": "cb685705c40042d6b8fae4f7d6dc201f" + }, + { + "m_Id": "58a85f0a5d444b0c878b97c684eb7676" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "c2bea0a6923d40e88c022e279ce22602", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c31677d0c32944c2acf28849ca70d784", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1119.0001220703125, + "y": 1359.0, + "width": 282.0, + "height": 34.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "48be69e53316496281a1da786b9815df" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b79ad7d70d9e4cc5bcd5c8a18caa7d86" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c323423d86c74e2e8dfddfbc8c11240b", + "m_Id": 2, + "m_DisplayName": "lod", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "lod", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c323a744d86d4d769d160712a9158dd2", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c3706552a81044a1878841e7774c04d3", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "c3cbdfdb3bf7447ca35d4c9edcecebcc", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c4a8931d83dc40f8ae8e1680cba9f430", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c4c0321734e54e6a933fc90e3ce39e4f", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -529.0, + "y": -1433.0, + "width": 216.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "98c9d09d29c048779209e551e2bd6808" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ba2ac3a5b6a4aa8add2b7bfa647a320" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "c52451fda82b4ca7909b11b10b2a9e09", + "m_Guid": { + "m_GuidSerialized": "df5a8af7-42ac-4fac-ae25-324da4ff7357" + }, + "m_Name": "Normal Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_c52451fda82b4ca7909b11b10b2a9e09", + "m_OverrideReferenceName": "normalTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "c5521dae20af491ead8a1c71d198d1b2", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "c586ec91ca9043a99c6359e8137eea8f", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1418.0001220703125, + "y": 747.0000610351563, + "width": 130.0, + "height": 142.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "485418fad1b24848b06ea90dc61e428c" + }, + { + "m_Id": "0904160ed2aa4a2c89fcf793b0a0b80c" + }, + { + "m_Id": "85b9b98e0f974e0a9bac2d650ca54568" + }, + { + "m_Id": "9de5cc84d505425f959636a84b9fb32e" + } + ], + "synonyms": [ + "mix", + "blend", + "linear interpolate" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "c5bd9f7925ac49c8913a839e2c3077a7", + "m_Guid": { + "m_GuidSerialized": "2fcbe861-1a11-491e-81e6-4d05dbdbc659" + }, + "m_Name": "Clearcoat Roughness", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Clearcoat_Roughness", + "m_OverrideReferenceName": "clearcoatRoughnessFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c5e0d784d1404e4d9786ffd3188e5c6b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "c607f6a6bc884e7eb0be0be94eb1f485", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Enable Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2464.000244140625, + "y": 1726.0001220703125, + "width": 138.999755859375, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "9d9ec1e41629462ea79ba5faac892a56" + }, + { + "m_Id": "16d9d5e8056544c480d8706a27f3408d" + }, + { + "m_Id": "df5cd3a418df4cc297d9eb5987a7cd94" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "87f49076b11a43f2bc2c05c9154c93d4" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "c610a3df043749feab182161248812e2", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 155.9998321533203, + "y": -1641.0, + "width": 186.00010681152345, + "height": 142.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "2c79750601184e18985cd440c80897ae" + }, + { + "m_Id": "cd1e3d729eef44e2a0ba226ad84080d5" + }, + { + "m_Id": "91933686a113451b885a437cae1ee455" + }, + { + "m_Id": "a1dbcb7196b24ad58a8c4d5df27b9857" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c6275b6388e84664b4ea287e2d54dffc", + "m_Id": 0, + "m_DisplayName": "Iridescence Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c63eb0c45cd446faafe694bb84a8a9d3", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1337.0, + "y": -88.99999237060547, + "width": 134.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "3f4ae4edfaa34f4c8531bd854abd844a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c644dbe307e447aa868c1453991143b6", + "m_Id": 0, + "m_DisplayName": "Normal Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c671902eeb2f4dfc8b004fe67f11f99e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c77833c1b72b4333b74989301fd1dabf", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c78fbc91f53e4c20ac98cc737d0e4976", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c7c71d4c826b43ecb2df4db31aa9a734", + "m_Id": 0, + "m_DisplayName": "Specular", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c7ed271715e047e0b2b5d2dd19399362", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "c803ee7f88a642ffbed90a2fd404725d", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 155.9998321533203, + "y": -1492.0, + "width": 186.00010681152345, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "6a90c03346f74863b69dbf16495a3dd5" + }, + { + "m_Id": "6d75cac715d1458fa26ab6c2ccd852dd" + }, + { + "m_Id": "fe1a6bec3d65460d870dc16698549e49" + }, + { + "m_Id": "08508de7d4e94721a9b57624e0465c79" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c86c6b544c324d2a8d95e0f1dfd9b04d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BentNormal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1f0278f5e89c42f09d2980d99158f6d8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BentNormal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c87d0fdf8b4148e395babe82e14c2b23", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c88524ed5e284fd9bb3bac7dfb3d45b0", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c8f995e72d4a413dbb97541db3b1364a", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c90a0ac1873d49ed97d73880427bc2ba", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "c933cc851230433082c21bc81c69c766", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c93e4b88b9c84eab8a5110a07a6abdb6", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c9ac78df51124cd0b8a2d98de9490d35", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ca102540121f4ca08b644b0a4b57e591", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ca1885fb0716432896b8315c89080433", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ca225faed728415d9517bb9e4a48c033", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "ca921050c00748e698611b527784ba96", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 616.9998779296875, + "y": -1446.0, + "width": 186.00006103515626, + "height": 142.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "634a1285adea4cb7817514fae82f8b4f" + }, + { + "m_Id": "8f17eb0f05754354824d445078b4a261" + }, + { + "m_Id": "53cfede5b4934d888883d61e9e49c628" + }, + { + "m_Id": "1ec9000d27f6401e9f8c6c476ac034ab" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "caacc7bfacaa462cb79b1ca76d8eb93c", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -526.0001831054688, + "y": -1466.9998779296875, + "width": 213.0, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "d78fe57b6aaa47af9f63d5d7de97e232" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a88f553fcc0246a2bc8a573e921ce351" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cb067f2269ca41d9804da04dc63c6dc9", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "cb66babc65414b46b1a10ba32a89a0d1", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2067.0, + "y": 291.00006103515627, + "width": 182.9998779296875, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "9e96b6147ee14bd987ad3b95a36dd54b" + }, + { + "m_Id": "be820519ca45495286894ed58168bb3f" + }, + { + "m_Id": "a36398bcd51f42059d7ac89f9c7d9968" + }, + { + "m_Id": "bb92d309e7b14e66a0f3e9d918405957" + }, + { + "m_Id": "792f7431361a41c3a492a3061eb0f246" + }, + { + "m_Id": "dc91e6d79a5041bcba630f8e0f4469b8" + }, + { + "m_Id": "54272dba60bb489b8c64b04e510560cc" + }, + { + "m_Id": "516df774111e40bea29ef1f9f567f13c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "cb685705c40042d6b8fae4f7d6dc201f", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "cc2850d6d22e4a27a1bfbab840ba8ee2", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -595.0003051757813, + "y": 2059.0, + "width": 126.00018310546875, + "height": 118.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "dbd4fbf35c274449af3e55605e2be983" + }, + { + "m_Id": "3ab0e1c0910a4589a2f567ca5702e122" + }, + { + "m_Id": "c93e4b88b9c84eab8a5110a07a6abdb6" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "cc96868a5ddb41dfae176d045401b30b", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cce8c5ae0aed42ed9c57a112fb3046c3", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ccff5dbcc0c0429a8411f01d1ed6df75", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "cd1e3d729eef44e2a0ba226ad84080d5", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 380.0, + "y": 750.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "cd30fe948eb24cfe871b8fdea40a16f9", + "m_Title": "Clearcoat", + "m_Position": { + "x": 1111.0, + "y": 834.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "cd561be7e62240d38868b7451e936e0d", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -954.0003662109375, + "y": 2143.0, + "width": 175.000244140625, + "height": 34.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "1c85cc7a118048f08e2c25657db45472" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1bd126bc26d14fa9b0bd88cffc73922b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd7f2005366b49b49d812fc510316f20", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cd808c2744f442f28bfa290de9e6b5ef", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "cdce6996c9064903841175baee4ac9d8", + "m_Guid": { + "m_GuidSerialized": "21264b96-4ab0-4b81-9342-9b4c470cf357" + }, + "m_Name": "Base Color Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Map_Rotation", + "m_OverrideReferenceName": "baseColorTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cec626b6a3964a5bb306b54570ea55ec", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturateNode", + "m_ObjectId": "cedd32ee0b4a419c939d17bacfb00ddd", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Saturate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 372.9999084472656, + "y": -1492.0, + "width": 128.00003051757813, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "8622eda33b9a4421b54673eee6f28857" + }, + { + "m_Id": "1abd847191e84fa496a6007bd82bce71" + } + ], + "synonyms": [ + "clamp" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "cedfea913c474bd2bb71209c662e46b5", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1293.0, + "y": -373.0000305175781, + "width": 251.0001220703125, + "height": 165.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "9c1ac2fb4b3f45cca24f00b2c1978cc1" + }, + { + "m_Id": "5ca8bbeec7774b4fb0301196692f327f" + }, + { + "m_Id": "b579868c840049e2b2c511a4221fcfa2" + }, + { + "m_Id": "bc79a22a5ffe44ce8d7edfa234c480eb" + }, + { + "m_Id": "934381759c5947709a33fde75e0c5595" + }, + { + "m_Id": "fa713a0965784318898f7198633adc19" + }, + { + "m_Id": "9f23b42a4ef44b2aa856f593a663fc1a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "ceeeb31de4c245bfb1cf9f0628be9000", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cf3f322e39934fdbaa66e219748a2b1b", + "m_Id": 0, + "m_DisplayName": "wavelength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "wavelength", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "cf6b395662864978a19f9c4ad3b5a685", + "m_Guid": { + "m_GuidSerialized": "ccb8dfce-2d66-4329-8767-aa9390722bab" + }, + "m_Name": "Transmission Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_cf6b395662864978a19f9c4ad3b5a685", + "m_OverrideReferenceName": "transmissionTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "cf88e70b5d9849329c0adf3c779fd376", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "cfe6ffa13ac44ec4adfc8ed3f865384c", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1485.0, + "y": 139.00001525878907, + "width": 155.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "2281665015fe4c11919ecd881ab1983a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "d011b5d7d90a4a38a5e759e5e8aa69cd", + "m_Id": 1, + "m_DisplayName": "n", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "n", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d05eebe6687b47d7a9c6d0625eb59c8b", + "m_Guid": { + "m_GuidSerialized": "ba44f50f-33e6-4619-be8f-1cb8c10f8b1f" + }, + "m_Name": "Specular Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_d05eebe6687b47d7a9c6d0625eb59c8b", + "m_OverrideReferenceName": "specularTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "d0fed3c5fc0f40768ab7ac9ec518b18d", + "m_Guid": { + "m_GuidSerialized": "65ecefec-a04a-441f-b091-869990519e45" + }, + "m_Name": "Attenuation Color", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Attenuation_Color", + "m_OverrideReferenceName": "attenuationColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 0.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d1e3d0be67f14b4f958e895bf25c597d", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "d1ea4f0250a34d99863ee930d384b759", + "m_ActiveSubTarget": { + "m_Id": "7d54abc6a7ee4cc6a41cc270bf43ae06" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": true, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "UnityGLTF.PBRGraphUniversalGUI", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d2335d7b864d436dad76102ef56d2f08", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "d24df57c38d047819986b997b0c4045c", + "m_Id": 0, + "m_DisplayName": "Specular Color Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "d2cd4dff4e184092b3b8a5f61657b5c1", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d2e54a101690459cb6f817a1835e8560", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "d2f2eacbae84474bae0bdb99abc6a0e6", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d3380b47b0fa4f5c873ddeb91f42d7ec", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d33a9109fde648d3b070274381ab59db", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2162.0, + "y": 985.9999389648438, + "width": 184.9998779296875, + "height": 34.00018310546875 + } + }, + "m_Slots": [ + { + "m_Id": "3ebd437ef6e34d89802a54c5ed7590db" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "492d5d149f4c4a7ca0c26f791e6704e6" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d37bee9cd4134c5ca141c7f949fc58a6", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -485.0001220703125, + "y": -1798.9998779296875, + "width": 136.00003051757813, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "539b06cf9457481282d249d654eb8740" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "58d29ed6f30d4885996b1c2b1d967e6b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d38f08916af4479ba71a15c0a309c43d", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "d4286b4dc1df42dc979af37ce8aef9ca", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.0001220703125, + "y": -1007.9999389648438, + "width": 125.99996948242188, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "40800dab9a0943108e25b3afdfbea00a" + }, + { + "m_Id": "c88524ed5e284fd9bb3bac7dfb3d45b0" + }, + { + "m_Id": "c3706552a81044a1878841e7774c04d3" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "d439e7ac4eed401ab19a5db9740d11dd", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d48ccf4b057d459ea93e84d0e6d43e43", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d4bf44ad812142cf81dd4619dbce963f", + "m_Guid": { + "m_GuidSerialized": "341250d9-85fe-493a-8ed1-8fa3549f914c" + }, + "m_Name": "Occlusion Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Occlusion_Map_Rotation", + "m_OverrideReferenceName": "occlusionTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "d4fb0b6904a34956a14ccb954a3cf564", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "d4ff3f6694b74efeafa02a530afce2cb", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1738.0001220703125, + "y": 620.0000610351563, + "width": 208.0, + "height": 127.0 + } + }, + "m_Slots": [ + { + "m_Id": "b5c8bada19314a1fb0433aebf7aa091d" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d531cc6d567f4911aff80a0b28d0fb91", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "d594f01d8a2048b280bcbe5757a463fc", + "m_Id": 1, + "m_DisplayName": "Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Scale", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d5f8926116d24082be2201fc96d9ac18", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.004999999888241291, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d62362e7b1db41b5b2850ca4f7727193", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a482fd18440e4922afab82f12dd388ad" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d65c7f3ce06c46209d297e6f47331440", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d6632ead518946c9a75250a42948db28", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d6bc16c340e9496cb653d57ae3dc4bc8", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1134.0, + "y": 119.99999237060547, + "width": 147.0, + "height": 34.00000762939453 + } + }, + "m_Slots": [ + { + "m_Id": "7ee5fe24f6f44ce6bfb3745d56aaf7e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3ce6d25358cc421582e9a91b41d39fdf" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d6e04d1403174ba59a165a417fa580e7", + "m_Id": 2, + "m_DisplayName": "Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Max", + "m_StageCapability": 3, + "m_Value": { + "x": 100000.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d78fe57b6aaa47af9f63d5d7de97e232", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "d7b151a688e74d6792327a69567cb921", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "d7bd8c290807474e92e099e90263d28c", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d7de083c00574d7ea0b9e8975d5884a2", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1105.0, + "y": 552.0000610351563, + "width": 155.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae4d01f59f0b4282a27f160d6cadb664" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0ca6948bbb5d4e47ad215994019d2c5c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d830bc88218e4b8aaa7492cec861f836", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d87019dd0da84e03b03fc2582ccc036c", + "m_Id": 0, + "m_DisplayName": "Index of Refraction", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d8b1a8ce81bc4f338fcee6de7ff97897", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d8e4a4ec868740879213fefdf37bf122", + "m_Id": 1, + "m_DisplayName": "", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "d92565a8a9104c61bcb4cb4585b42812", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d971459491e54c629cea549c7775108b", + "m_Id": 0, + "m_DisplayName": "Transmission Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d9ae07569f7b48debc16effc8d24fd71", + "m_Id": 0, + "m_DisplayName": "Clearcoat", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "db20f76945f84ccba7124126a40d4e76", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "db3ecb1c0e884596b20f467abfe7a56f", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Power", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -367.0000915527344, + "y": 2.0000009536743166, + "width": 126.00007629394531, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "5b68c11c07d547ed9dcfaac2cc046c44" + }, + { + "m_Id": "ba192fda4be64270a8cd43eee10f2542" + }, + { + "m_Id": "0f51b843930a4f59bfa3a1b833a7a1c1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "dbd4fbf35c274449af3e55605e2be983", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "dbf32d2b6dbf4d619266bf52e18df460", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1663.0, + "y": 2146.0, + "width": 171.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "fbec003798024db4a852c31854ab5787" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5004252d15d04c2ea74cd947ee1f3b4f" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInLitSubTarget", + "m_ObjectId": "dbfb5df95252469d938040e1ba4d8f60", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dc0acde1526a451182f632f96ca2646d", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "dc91e6d79a5041bcba630f8e0f4469b8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "dca2cfed99924dcda4d95ce6319909a4", + "m_Guid": { + "m_GuidSerialized": "e144dc55-8449-4fee-84b7-40f8fcd8e7bd" + }, + "m_Name": "Transmission Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_dca2cfed99924dcda4d95ce6319909a4", + "m_OverrideReferenceName": "transmissionTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "dcf55ee7a8a14405a1a6103001d64e2f", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "de080844b3d14cd29445e46afc25ff16", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1035.0, + "y": -1240.0, + "width": 264.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "8481c3c11f9a4e85acbcb4048e0d708b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e83261a59420447f8f06521807515547" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "de15cbb7c7504d0e833542b0c7787aae", + "m_Id": 3, + "m_DisplayName": "refractionVector", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "refractionVector", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "de2d39e22ef549f58ed7b2a1f989a770", + "m_ActiveSubTarget": { + "m_Id": "dbfb5df95252469d938040e1ba4d8f60" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CustomEditorGUI": "UnityGLTF.PBRGraphGUI" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "df0d11b3d5474b678f83c2e36318c262", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "df4ccb6d2f8546a1bdbc71c6c1056889", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -756.000244140625, + "y": 2143.0, + "width": 125.99993896484375, + "height": 118.000244140625 + } + }, + "m_Slots": [ + { + "m_Id": "015d9ea60aeb4c768b0337edce093524" + }, + { + "m_Id": "6082fea42d754443ae37cb0cecb9a02f" + }, + { + "m_Id": "e210aa52911f43f2a7974a916aa36358" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "df5cd3a418df4cc297d9eb5987a7cd94", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "df859d80fdd14c57a04ec5a5108850a4", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1935.0001220703125, + "y": 2303.0, + "width": 129.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "c5e0d784d1404e4d9786ffd3188e5c6b" + }, + { + "m_Id": "78d659d364a24b7ba6879080658e4ac7" + }, + { + "m_Id": "58fcef95064d43539481018c3b71e3e1" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SaturateNode", + "m_ObjectId": "df8c993165174790994c76c5dca0f8d9", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Saturate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 372.9999084472656, + "y": -1790.0, + "width": 128.00003051757813, + "height": 94.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "860451bbde6d43ccab5afa88d7bf27e3" + }, + { + "m_Id": "99ab49f5c8914bc99262c2b1a8b20b1b" + } + ], + "synonyms": [ + "clamp" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "dfa2b3edff80416fa8545965c3c47d3d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CoatMask", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7703801ed1ce4ac38240b01b97a89d59" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CoatMask" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "dfbd446e99f747c4937503d7e0fe34d7", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "dfd1443566c54067a2abb81aaa116653", + "m_Guid": { + "m_GuidSerialized": "ed71249e-8c11-4329-83ec-63add2072e72" + }, + "m_Name": "Roughness", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Roughness", + "m_OverrideReferenceName": "roughnessFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "e000f96cd8fb42e19ec0e9b69facf6dc", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1410.0, + "y": 2399.000244140625, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "515f346aa3af468c8996e1e0c3b1b02f" + }, + { + "m_Id": "c90a0ac1873d49ed97d73880427bc2ba" + }, + { + "m_Id": "b431ab1d7f0a471896e2b98e0d0b9f83" + }, + { + "m_Id": "c274ab9f068448a689820eb3182f4140" + }, + { + "m_Id": "66c071ff61cf45a99aef6f0d55507801" + }, + { + "m_Id": "d92565a8a9104c61bcb4cb4585b42812" + }, + { + "m_Id": "c5521dae20af491ead8a1c71d198d1b2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e0d099b286e74cdd8eef478c2ba6a46d", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5d9c257d0755494d9de2f7be32aa020d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "e11aaf40898d48b8917f9b63c07a2487", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e12c5f6ea3ba4826bbd98bdadd9fdd60", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "80999d8d0212495380df897d34ef682d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e20db26f346a4bb099ddc66aeb89e2c9", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e210aa52911f43f2a7974a916aa36358", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e28d4a28505a4f989a6559e83d93d975", + "m_Id": 0, + "m_DisplayName": "Thickness Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e2923f4949d54387b5b24c430a889827", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2565.0, + "y": 306.0, + "width": 163.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "edcb87b3e54a42e2a9f7781e8ca4b537" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b4d8cf566d7d4d0d8a49901c25e25950" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e29d4765172340899774cd4b6096c21e", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e2bb25c172f141fe8a8d5691791d1692", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e3ae8cad9f8d4be8906c50ecd8601d5c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e429afe93157489aa90e469a9f25cc4e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e4aa16bda9ed403a963ea1a80fbab307", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e4de574702ff4d609c5db42514c255ce", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e4e6e2cdbc804c208a673e676f5a2325", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e522b97cee2f4ff4808f4eda62fa4d1a", + "m_Id": 0, + "m_DisplayName": "Specular Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e56eb8bcb6164877bffc004883caa11b", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e5df02ace51547ed8d346586a45dd86b", + "m_Guid": { + "m_GuidSerialized": "c51d551c-eea1-4f09-9b68-fab7b7785030" + }, + "m_Name": "Specular Color Map Rotation", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_e5df02ace51547ed8d346586a45dd86b", + "m_OverrideReferenceName": "specularColorTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e5ee984eddac42b1bd84a7086c09cd78", + "m_Id": 1, + "m_DisplayName": "Saturation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Saturation", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e610b6fa1c2e46bdaee8787719758a44", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2602.0, + "y": 340.0, + "width": 200.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "726e546eb2f4477e9d2b4551aadb854b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "980c8b8a564144b793271871d59b19e7" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e72ba189d0084f4599f95f4eab7675e2", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e73f01d6c53b408bb28fe66c4b162599", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e7c0e830a3a94048a03805778c02420a", + "m_Id": 0, + "m_DisplayName": "Specular Color Map TIling/Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "e83261a59420447f8f06521807515547", + "m_Guid": { + "m_GuidSerialized": "f160e7e3-f9eb-4644-b9af-90de4177cb56" + }, + "m_Name": "Iridescence Thickness Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Iridescence Thickness Map Rotation", + "m_DefaultReferenceName": "_Iridescence_Thickness_Map_Rotation", + "m_OverrideReferenceName": "iridescenceThicknessTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e83457a070b141b5b171a895bf0d6389", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1661.0, + "y": 2415.000244140625, + "width": 213.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "65ab868df408437cafc09b4f8a7cd998" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f22bfbc247554808a3b34bf10161a0ca" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e84a89cc58204cc08b68f15cb6469644", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e85a349c4838415bb2bc248b71851b9e", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "e8b7075311884a71a2798a0654cd2953", + "m_Group": { + "m_Id": "cd30fe948eb24cfe871b8fdea40a16f9" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1422.0, + "y": 975.0, + "width": 251.0, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "f6cf022611304df8841fa56e4e694f7a" + }, + { + "m_Id": "c26f6cb4bca84384880cd079c5804964" + }, + { + "m_Id": "95e9a6afa84c4543bd99c362a385118d" + }, + { + "m_Id": "be11291cab7e403780a73a6c0c672b43" + }, + { + "m_Id": "703e7657af254c9eacd1e0e3524b7c6e" + }, + { + "m_Id": "260067b95be947d0bbbdd5d672ea1f8b" + }, + { + "m_Id": "66316640b65d45119a1adff13227d187" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "e8ce99114fb74093bd17f882bd54ab1a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2099.000244140625, + "y": -412.9999694824219, + "width": 129.999755859375, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "129d3f0a44a042bdb79469ac71d7954e" + }, + { + "m_Id": "b4fa69b8f0b34d6793eaf9af18109b4d" + }, + { + "m_Id": "33246ca622234bb39f7877b44232c6fc" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e8d324bebd9f46c381e4e35fd38365a8", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1837.0001220703125, + "y": 811.0000610351563, + "width": 169.0, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "29699c2a90c3455eaabef74da1f7bb75" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d0fed3c5fc0f40768ab7ac9ec518b18d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e8d3757d40534b0d9cfdd2b8b5a4cf83", + "m_Group": { + "m_Id": "a2ef78d6824743a198815280b9909f75" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1653.0, + "y": 2063.0, + "width": 161.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "24e2f46f6c574f538800b38b4ba356e2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "7e5abe31e1414a91911f76fbf9030e2c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "e8f9eb2ade9a48349179367ad11f0312", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Specular", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e8ff565725d649b9bc011a4b07b28ab4", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e90b82a061ba4892aefecb61a281d723", + "m_Id": 0, + "m_DisplayName": "", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e98620d346ed40278feffba19083a866", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "e987395d771e4c12aac837c56e6eec65", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ea75abbf60a849019be7b0578453b720", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1055.0, + "y": 2484.0, + "width": 244.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "e7c0e830a3a94048a03805778c02420a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0a2f011385a949b5a6ec4a0ade8346ba" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "eb4ef4ab99d84f25b1632be81ff73700", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "eb564df3da5b42b3a6d22f7925dce032", + "m_Id": 0, + "m_DisplayName": "Emissive Map Tiling/Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "eb6c2f01ab604a8d8d7b5f3f6014cd60", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "eb913c79adc9470ebeaf8aa017b929c9", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "SampleSceneColor (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 58.0, + "y": -216.00001525878907, + "width": 263.0, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "a9e9943b5fc64ce892285c678459565d" + }, + { + "m_Id": "c323423d86c74e2e8dfddfbc8c11240b" + }, + { + "m_Id": "687e654c3f724ff986c6806df23ad6c7" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "SampleSceneColor", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "color = SAMPLE_TEXTURE2D_X(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv)).rgb;" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ebcb432791e545e3b5cdb618a6f98580", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "ec0f2b64045146dab36560c6f181ee8d", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ec109f60b1cd4575ad27b00c6d32d590", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ec5e9c1cb4234532a591ae8350e54f6b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDLitSubTarget", + "m_ObjectId": "ec903d4fe369487a99f1706f50daa8d5" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "ecb3cc7643b545c3b78349bdcae92f63", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -897.0000610351563, + "y": 116.0, + "width": 130.0, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "020c5dc5e3174c27b7073ade9f5c58ca" + }, + { + "m_Id": "75219a095c6d49a99ef383e4d4710281" + }, + { + "m_Id": "3a23356b624540d9b7a1590a8d2b102e" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ecde0983554943cd81a917127fad3655", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "edcb87b3e54a42e2a9f7781e8ca4b537", + "m_Id": 0, + "m_DisplayName": "Thickness Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "edee52016d324d04b248f4f255882edb", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ee3162b846874c188ae85f05e8ff57f5", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "eef506e16f0d4e7fabba8e363f9f7b5b", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ef19751d18a54b44840b2e8621cbe7e9", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2575.0, + "y": 374.0, + "width": 173.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "e28d4a28505a4f989a6559e83d93d975" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6bb85556adb54ba195b23a5f797152fb" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ef5def74039c401eb01dc879236239f3", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "efad1b6a6a3f4570b83fb671df65e2dd", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "f04debede3c04da5aed9738b7794df17", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -416.9999694824219, + "y": -1342.0, + "width": 182.99977111816407, + "height": 251.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "03393b3bd7734b3fbfa803c2d160bccb" + }, + { + "m_Id": "80793d67625149c2bd02e6569ae356ad" + }, + { + "m_Id": "9f8ecc63ebc14541be764f25143dfc6b" + }, + { + "m_Id": "c9ac78df51124cd0b8a2d98de9490d35" + }, + { + "m_Id": "5832c178721b456596b0b98e27bf7edb" + }, + { + "m_Id": "44819891fa5e4f05b89905255e52a361" + }, + { + "m_Id": "5eff4b6a6c9b419c8eaa49bb7efccb1e" + }, + { + "m_Id": "0e4d2483a8b64fb7a756cb6a0f4419c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f062397f3b2d40ceaf0c1f3246b5bcb0", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "62341c2af4b04863803ba8369da7ee0b" + }, + { + "m_Id": "851b64cc55064cc591c263711144feca" + }, + { + "m_Id": "ff11e8a641984c798698ae35ab35028d" + }, + { + "m_Id": "dfd1443566c54067a2abb81aaa116653" + }, + { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + }, + { + "m_Id": "2b0a026cebb0460a83c4e4d6e29e6e36" + }, + { + "m_Id": "3c72208ecc9f4632b650d1c06ac9c4d2" + }, + { + "m_Id": "492d5d149f4c4a7ca0c26f791e6704e6" + }, + { + "m_Id": "d0fed3c5fc0f40768ab7ac9ec518b18d" + }, + { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + }, + { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + }, + { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + }, + { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + }, + { + "m_Id": "f22bfbc247554808a3b34bf10161a0ca" + }, + { + "m_Id": "0e4935a9458a40e18f35ecbf7419a2b9" + }, + { + "m_Id": "ae75beb2c1494f609bb76fbc141d12c8" + }, + { + "m_Id": "417bfe74fb994ff8b15125f41148d8c6" + }, + { + "m_Id": "02ea37d7654b45adb4b6519d05132bf0" + }, + { + "m_Id": "3ee3385ae855473aaaf56fea09cc4360" + }, + { + "m_Id": "dca2cfed99924dcda4d95ce6319909a4" + }, + { + "m_Id": "cf6b395662864978a19f9c4ad3b5a685" + }, + { + "m_Id": "b4d8cf566d7d4d0d8a49901c25e25950" + }, + { + "m_Id": "4f6277e06f1e4006baf370c15741a704" + }, + { + "m_Id": "980c8b8a564144b793271871d59b19e7" + }, + { + "m_Id": "6bb85556adb54ba195b23a5f797152fb" + }, + { + "m_Id": "80069515911646338233075f20ccb366" + }, + { + "m_Id": "0ca6948bbb5d4e47ad215994019d2c5c" + }, + { + "m_Id": "6d6db3c04e41461f81564fae265af536" + }, + { + "m_Id": "1e49e8f84d654c64af4ae30f35a7f733" + }, + { + "m_Id": "043dbc7e1661471eaeccef62e594a7b3" + }, + { + "m_Id": "3ce6d25358cc421582e9a91b41d39fdf" + }, + { + "m_Id": "3e15ef7468514f0caceb0461ac3a3d53" + }, + { + "m_Id": "c52451fda82b4ca7909b11b10b2a9e09" + }, + { + "m_Id": "6dcd6559ce1c4522be780f0ace587147" + }, + { + "m_Id": "8a0fadc477234cbe95efb02754f32e2d" + }, + { + "m_Id": "7e5abe31e1414a91911f76fbf9030e2c" + }, + { + "m_Id": "1bd126bc26d14fa9b0bd88cffc73922b" + }, + { + "m_Id": "105a2c9d68ae4193ab40386151992454" + }, + { + "m_Id": "d4bf44ad812142cf81dd4619dbce963f" + }, + { + "m_Id": "5004252d15d04c2ea74cd947ee1f3b4f" + }, + { + "m_Id": "58d29ed6f30d4885996b1c2b1d967e6b" + }, + { + "m_Id": "50998a16883841b483e4d4e9aa26ce91" + }, + { + "m_Id": "42d01612a467484494e13af04de1b143" + }, + { + "m_Id": "98bfc82acd6e48bcb86c8cb2524113ce" + }, + { + "m_Id": "3e441c009906463b89aceae672c7f8aa" + }, + { + "m_Id": "f7ae0094c08445398a6c676150aed9e8" + }, + { + "m_Id": "6d2dcf695f684b3d85b3bdc6615713d3" + }, + { + "m_Id": "a88f553fcc0246a2bc8a573e921ce351" + }, + { + "m_Id": "0ba2ac3a5b6a4aa8add2b7bfa647a320" + }, + { + "m_Id": "30f244a575e2416da21dc7749cedfa02" + }, + { + "m_Id": "e83261a59420447f8f06521807515547" + }, + { + "m_Id": "1bd532bd2011412a8eed2621e08e3222" + }, + { + "m_Id": "1a5d204b45a44b6bac695a4ee5fa47c8" + }, + { + "m_Id": "31516f3b61504a6080a15b03bfc5b3fa" + }, + { + "m_Id": "148b5c05a260452aa2e1ab778a38b697" + }, + { + "m_Id": "4c1ca34c9be14b66b960ca5ff430acd0" + }, + { + "m_Id": "49b1570f6c2040dfa64a34f18ba7bc52" + }, + { + "m_Id": "d05eebe6687b47d7a9c6d0625eb59c8b" + }, + { + "m_Id": "8b08f9f87c4d417ea72f69104abe93df" + }, + { + "m_Id": "0a2f011385a949b5a6ec4a0ade8346ba" + }, + { + "m_Id": "e5df02ace51547ed8d346586a45dd86b" + }, + { + "m_Id": "b82b2aa938924570aae5927593eaed76" + }, + { + "m_Id": "25aa3027d13042ddb02054db5def12d2" + }, + { + "m_Id": "c5bd9f7925ac49c8913a839e2c3077a7" + }, + { + "m_Id": "57b184f48a8b498c8e2cbaaa5aed5243" + }, + { + "m_Id": "5d010844a57e4032848b95235697f621" + }, + { + "m_Id": "19060202407d4ef49a49c2ec295ffed2" + }, + { + "m_Id": "a50370cc3ee24456919ee633ea0803d2" + }, + { + "m_Id": "a28c1bc72c564a4fbe11ea22bb853717" + }, + { + "m_Id": "b79ad7d70d9e4cc5bcd5c8a18caa7d86" + }, + { + "m_Id": "46e1e39c81414ae58142acbe94c617a3" + }, + { + "m_Id": "14ec0a08cca146a98862d31183f587f4" + }, + { + "m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32" + }, + { + "m_Id": "302d94653f844799b5f7e93c4d06ed3d" + }, + { + "m_Id": "7e862501058a45c9ad78e01eefa90605" + }, + { + "m_Id": "87b808f5412f4fc3a450ebecdf23d83e" + }, + { + "m_Id": "87f49076b11a43f2bc2c05c9154c93d4" + }, + { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + }, + { + "m_Id": "14eb9f49890e4fdf8e6c058bfe728c2c" + }, + { + "m_Id": "5959c998527d4aaf8a3653895a8d1279" + }, + { + "m_Id": "20d582c282a9450484c2d45dada8e8a9" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f06d1da8895d4d14a112cfd10a98f5b9", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f0d2628718c74315921b9d0b0f09b991", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f11545dd31fe4aac903fb724b1049589", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "f165be76156d439db6d70dd0c0f8aeac", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f18908317d754608806e71de985248b9", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "f22bfbc247554808a3b34bf10161a0ca", + "m_Guid": { + "m_GuidSerialized": "264aa6ca-59cb-453a-8986-c33ec5082256" + }, + "m_Name": "Roughness-Metallic Map", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Roughness_Metallic_Map", + "m_OverrideReferenceName": "metallicRoughnessTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f2653bc7dd67466c9e11297c68a24b7a", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "f28fc0029f4b4f5a86aec6dcf12e3235", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f2e3248c81dc49a59dfcecdaf4fd1ef4", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "f36b4e9d8dff4b5f88080db09748b890", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2099.0, + "y": 552.0000610351563, + "width": 120.000244140625, + "height": 148.99993896484376 + } + }, + "m_Slots": [ + { + "m_Id": "f44cdee701ac4e1ca2c6490c1b920d84" + }, + { + "m_Id": "0d9e08b324f540949fde247bf1d88329" + }, + { + "m_Id": "594b54dda80f484f85784c252143d680" + }, + { + "m_Id": "e4de574702ff4d609c5db42514c255ce" + }, + { + "m_Id": "c78fbc91f53e4c20ac98cc737d0e4976" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "f38b5f84784a44bba8b095f119f5b817", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "f3a31bd864f24872bf8c137be5fae97b", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f3dbe4ba41fd4208a14c8339bb38bf61", + "m_Id": 0, + "m_DisplayName": "Iridescence Thickness Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f434504cbd524517a9ce629c1a616f31", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1073.0, + "y": 223.0, + "width": 208.0, + "height": 33.999969482421878 + } + }, + "m_Slots": [ + { + "m_Id": "8a976fb16ee8409bbe842fcdc6e529cf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3e15ef7468514f0caceb0461ac3a3d53" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f44cdee701ac4e1ca2c6490c1b920d84", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "f457d96fdf854621bcb3f3c9e069a416", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1633.0, + "y": 2355.0, + "width": 183.0001220703125, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "88d293953f5048d79b620a70693b4764" + }, + { + "m_Id": "11a6dfa971e2491b858e58a132539cbd" + }, + { + "m_Id": "21805134879849a892ae13b1af742efb" + }, + { + "m_Id": "8425b86d08614804b2191796e4d8b823" + }, + { + "m_Id": "4d3bb73e2b634b8b821eb74686beccd4" + }, + { + "m_Id": "2669daf3314b4ba38d4ba53a7c10490e" + }, + { + "m_Id": "6fc4bc9235584b14a6a30b611e70d7d8" + }, + { + "m_Id": "e11aaf40898d48b8917f9b63c07a2487" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "f4c239ca699c45978efc6a982f332c0f", + "m_Group": { + "m_Id": "760282c93700475d93b783b72005f9f6" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1094.9998779296875, + "y": -801.9999389648438, + "width": 130.0001220703125, + "height": 117.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "3413eb1f30734715b9b6fb7d98127f43" + }, + { + "m_Id": "614b5b4a067946ceaed9319789d80138" + }, + { + "m_Id": "6003b098c771400f96a76b0827b24a13" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f6374e2356694f79a2ae4649a524f463", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "f654ba7941f74eca9d80c5f37151e340", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "f6cf022611304df8841fa56e4e694f7a", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "f7ae0094c08445398a6c676150aed9e8", + "m_Guid": { + "m_GuidSerialized": "a7bfc3f7-ff8c-4647-bf0d-d6c234e9fc27" + }, + "m_Name": "Iridescence Map UV", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "Vector1_f7ae0094c08445398a6c676150aed9e8", + "m_OverrideReferenceName": "iridescenceTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MaximumNode", + "m_ObjectId": "f83296f7700c4b0fa56a9338aa03745c", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Maximum", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1752.0001220703125, + "y": 1170.0, + "width": 126.0, + "height": 118.0001220703125 + } + }, + "m_Slots": [ + { + "m_Id": "a348157c96404f4ea2f6ee572a33ad00" + }, + { + "m_Id": "09a523a3cc884f78b5114f79c5d82f87" + }, + { + "m_Id": "3b013a1bf52b42fe8baee66c25bb2126" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f877dd882881459c9b9d7cc67e249fe3", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f88c0608ebf34378b1b47854228e5c5f", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MaximumNode", + "m_ObjectId": "f952e2fe6b574b30b3434961f7285c33", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Maximum", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1907.0001220703125, + "y": 1150.0, + "width": 126.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "b50bcf227c134f89bfeb2a7af963271a" + }, + { + "m_Id": "7655f9ea6a4d4b42bc8b1fdac118dcce" + }, + { + "m_Id": "d1e3d0be67f14b4f958e895bf25c597d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f99c7d64d64e494f9fa89870d003303e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d2f2eacbae84474bae0bdb99abc6a0e6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "fa5a99d79ecc4d7b88b9216911a4bf65", + "m_Group": { + "m_Id": "48ae037d1cdf40a79177e5e96ce6fb3d" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1113.0, + "y": 2355.0, + "width": 186.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "d24df57c38d047819986b997b0c4045c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8b08f9f87c4d417ea72f69104abe93df" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "fa713a0965784318898f7198633adc19", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fb3537da18fa458885a082198a3f8a8f", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "fb61da740b674686a66f4b7b07a18fca", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fbec003798024db4a852c31854ab5787", + "m_Id": 0, + "m_DisplayName": "Occlusion Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "fc8699054b8d4ad4a170916b1db66f03", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1088.0, + "y": -276.00006103515627, + "width": 176.0, + "height": 34.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "2655fa13ba834d68b54c52b61ac6fa0f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fe1a6bec3d65460d870dc16698549e49", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "fe4bb614fd7c4baf92759c4dcff54fc7", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1060.0, + "y": -309.00006103515627, + "width": 204.0, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "19017d898d6846509114fe12c75fef90" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "febc32f50e9745a794212c04541033c3", + "m_Group": { + "m_Id": "84e0b5a2ae6a46a785e5f8a97117454f" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 57.999935150146487, + "y": 1.999994158744812, + "width": 126.0, + "height": 118.00000762939453 + } + }, + "m_Slots": [ + { + "m_Id": "ee3162b846874c188ae85f05e8ff57f5" + }, + { + "m_Id": "75c93adcbeb6416eb3e773e44d900d4b" + }, + { + "m_Id": "746aab84a778449da4525f1d4c819ec7" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ff11e8a641984c798698ae35ab35028d", + "m_Guid": { + "m_GuidSerialized": "2e1eef7c-4140-4146-a9cb-58af9faee917" + }, + "m_Name": "Index of Refraction", + "m_DefaultRefNameVersion": 0, + "m_RefNameGeneratedByDisplayName": "", + "m_DefaultReferenceName": "_Index_of_Refraction", + "m_OverrideReferenceName": "ior", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 1.0, + "y": 2.5 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ff80ada2b36245f59823964fce98cf3f", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fffce7464ea04c1bae114777f849c4a4", + "m_Id": 0, + "m_DisplayName": "Normal Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph.meta b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph.meta new file mode 100644 index 000000000..f9f539467 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/PBRGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 478ce3626be7a5f4ea58d6b13f05a2e4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc new file mode 100644 index 000000000..36d9bd59d --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc @@ -0,0 +1,150 @@ +#ifndef UNITY_DECLARE_OPAQUE_TEXTURE_INCLUDED_2 +#define UNITY_DECLARE_OPAQUE_TEXTURE_INCLUDED_2 +#ifdef SHADERGRAPH_PREVIEW + +void SampleSceneColor2_float(float2 uv, float lod, out float3 color) +{ + color = float3(1,1,1); +} + +void SampleSceneColor2_half(half2 uv, half lod, out half3 color) +{ + color = half3(1,1,1); +} + +#else +// Needed to comment this out due to IN-4055 - can't build with this include being present here +// For code changes, comment this out so autocomplete etc. work, but remember to comment it again +// #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + +// TODO figure out how we can differentiate between BiRP/URP/HDRP here +#define USE_CAMERA_OPAQUE + +#if defined(USE_CAMERA_OPAQUE) +float4 _CameraOpaqueTexture_TexelSize; +// float _CameraOpaqueSampling_BlurShift; +TEXTURE2D_X(_CameraOpaqueTexture); +SAMPLER(sampler_CameraOpaqueTexture); +#endif + +// for future use +// float applyIorToRoughness( const in float roughness, const in float ior ) { +// // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and +// // an IOR of 1.5 results in the default amount of microfacet refraction. +// return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); +// } + +/* +float3 Sample4Tap(float2 uv, float lod) +{ + // bilinear GPU filtering doesn't look good enough; + // here we're doing 4 taps and blending them. + float3 c0 = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv), lod).rgb; + float3 c1 = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv + float2(_CameraOpaqueTexture_TexelSize.x * _CameraOpaqueSampling_BlurShift, 0)), 0).rgb; + float3 c2 = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv + float2(0, _CameraOpaqueTexture_TexelSize.y * _CameraOpaqueSampling_BlurShift)), 0).rgb; + float3 c3 = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv + float2(-_CameraOpaqueTexture_TexelSize.x * _CameraOpaqueSampling_BlurShift, 0)), 0).rgb; + float3 c4 = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv + float2(0, -_CameraOpaqueTexture_TexelSize.y * _CameraOpaqueSampling_BlurShift)), 0).rgb; + + return (c0 + c1 + c2 + c3 + c4) / 5.0; +} +*/ + +void SampleSceneColor_float(float2 uv, float lod, out float3 color) +{ + #define REQUIRE_OPAQUE_TEXTURE // seems we need to define this ourselves? HDSceneColorNode does that as well + +#if defined(USE_CAMERA_OPAQUE) + color = SAMPLE_TEXTURE2D_X_LOD(_CameraOpaqueTexture, sampler_CameraOpaqueTexture, UnityStereoTransformScreenSpaceTex(uv), lod).rgb; + // color = Sample4Tap(uv, lod); // TODO higher quality refraction +#else + // For HDRP, from HDSceneColorNode + #if defined(REQUIRE_OPAQUE_TEXTURE) && defined(_SURFACE_TYPE_TRANSPARENT) && defined(SHADERPASS) && (SHADERPASS != SHADERPASS_LIGHT_TRANSPORT) && (SHADERPASS != SHADERPASS_PATH_TRACING) && (SHADERPASS != SHADERPASS_RAYTRACING_VISIBILITY) && (SHADERPASS != SHADERPASS_RAYTRACING_FORWARD) + color = SampleCameraColor(uv, lod) * 1.0; // GetInverseCurrentExposureMultiplier() + #else + color = float3(0.0, 0.0, 0.0); + #endif +#endif +} + +void SampleSceneColor_half(float2 uv, float lod, out float3 color) +{ + SampleSceneColor_float(uv, lod, color); +} + +#endif + +void Refract_float(float3 v, float3 n, float ior, out float3 refractionVector) +{ + refractionVector = refract( - v, normalize( n ), 1 / ior ); +} + +void Refract_half(half3 v, half3 n, half ior, out half3 refractionVector) +{ + refractionVector = refract( - v, normalize( n ), 1 / ior ); +} + +inline half3 bump3y (half3 x, half3 yoffset) +{ + float3 y = 1 - x * x; + y = saturate(y-yoffset); + return y; +} + +void Spectral_float(float wavelength, out half3 color) +{ + // Based on GPU Gems + // Optimised by Alan Zucconi + // w: [400, 700] + // x: [0, 1] + half x = ((wavelength - 400.0)/ 300.0) % 1.0; + + const float3 c1 = float3(3.54585104, 2.93225262, 2.41593945); + const float3 x1 = float3(0.69549072, 0.49228336, 0.27699880); + const float3 y1 = float3(0.02312639, 0.15225084, 0.52607955); + + const float3 c2 = float3(3.90307140, 3.21182957, 3.96587128); + const float3 x2 = float3(0.11748627, 0.86755042, 0.66077860); + const float3 y2 = float3(0.84897130, 0.88445281, 0.73949448); + + color = + bump3y(c1 * (x - x1), y1) + + bump3y(c2 * (x - x2), y2) ; +} + +#endif + +void WorkaroundTilingOffset_float(UnityTexture2D Tex, float4 LegacyST, out float4 TilingOffset, out UnityTexture2D OutTex) +{ + #if UNITY_VERSION >= 202120 + Tex.scaleTranslate = float4(1,1,0,0); + #endif + TilingOffset = LegacyST; + OutTex = Tex; +} + +void WorkaroundTilingOffset_half(UnityTexture2D Tex, half4 LegacyST, out half4 TilingOffset, out UnityTexture2D OutTex) +{ + #if UNITY_VERSION >= 202120 + Tex.scaleTranslate = half4(1,1,0,0); + #endif + TilingOffset = LegacyST; + OutTex = Tex; +} + +void AreNormalsEncodedInXYZ_half(out bool normalsInXYZ) +{ + #if UNITY_NO_DXT5nm + normalsInXYZ = true; + #else + normalsInXYZ = false; + #endif +} + +void AreNormalsEncodedInXYZ_float(out bool normalsInXYZ) +{ + #if UNITY_NO_DXT5nm + normalsInXYZ = true; + #else + normalsInXYZ = false; + #endif +} \ No newline at end of file diff --git a/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc.meta b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc.meta new file mode 100644 index 000000000..7171a4c2a --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/PBRHelpers.cginc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 885a3662fbaba7c47979790356264411 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph b/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph new file mode 100644 index 000000000..28c5a514c --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph @@ -0,0 +1,2962 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "74da93b1c1b740f5b5bf686f5114a33f", + "m_Properties": [ + { + "m_Id": "d13055b530284fba835fc40fb2321e21" + }, + { + "m_Id": "80834d18d9b74a0983272b823dcc3dc8" + }, + { + "m_Id": "d596e2fed9ac4ef8856c3d028a516d15" + }, + { + "m_Id": "b23804a2765f4d44bf943d308aa82893" + } + ], + "m_Keywords": [ + { + "m_Id": "56d9a937ceac4565b9af6f99ea5e08d7" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "e29eacd144ac4330962bdf5c5dd1148e" + } + ], + "m_Nodes": [ + { + "m_Id": "27b8e9e16e03474f92d540ae01c669d7" + }, + { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + { + "m_Id": "1f365fcb3d6c4f91afec6de02fa9af4a" + }, + { + "m_Id": "bb441583f9a440d1af1c6c1fac1e8b97" + }, + { + "m_Id": "ce532b1860ba4e13ba3beedb56ac3147" + }, + { + "m_Id": "cec0b1eea33d45689082c00097725185" + }, + { + "m_Id": "c687d7776d5046cca5a3e61041819449" + }, + { + "m_Id": "72c185b8fbb94e8da02477ad50bb7857" + }, + { + "m_Id": "772e21e2ba714d92bc5aa9b55c1374b3" + }, + { + "m_Id": "e3711e5cd9f243f29056fede88f0e6dc" + }, + { + "m_Id": "8cb960f8b87a4e12b9ebf3d2f11bac93" + }, + { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + { + "m_Id": "b2acc63d54bf4eda8c78cdebf728ca84" + }, + { + "m_Id": "8d756796d33e4103ae33adc35f4abc4f" + }, + { + "m_Id": "f547c315a4e64fb58050d96baebaffae" + }, + { + "m_Id": "d8f8412f9a9c4488891fa54ee86d3c58" + }, + { + "m_Id": "2fdb7e4e13f74d23b75667d58fe1898a" + }, + { + "m_Id": "2ce38e07eb2a4eebbe3dcb0473fc7985" + }, + { + "m_Id": "99cba88abd1448caa209aa4cf422b329" + }, + { + "m_Id": "3456cd311347447c9af3c6631e485850" + }, + { + "m_Id": "9a922e6e719848598cb9ed1c4339773c" + }, + { + "m_Id": "c1248bbb0c1f483089bbf98e64ff5d96" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1f365fcb3d6c4f91afec6de02fa9af4a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "72c185b8fbb94e8da02477ad50bb7857" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1f365fcb3d6c4f91afec6de02fa9af4a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e3711e5cd9f243f29056fede88f0e6dc" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "27b8e9e16e03474f92d540ae01c669d7" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "72c185b8fbb94e8da02477ad50bb7857" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a922e6e719848598cb9ed1c4339773c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2ce38e07eb2a4eebbe3dcb0473fc7985" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2fdb7e4e13f74d23b75667d58fe1898a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2fdb7e4e13f74d23b75667d58fe1898a" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3456cd311347447c9af3c6631e485850" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9a922e6e719848598cb9ed1c4339773c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3456cd311347447c9af3c6631e485850" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "27b8e9e16e03474f92d540ae01c669d7" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "72c185b8fbb94e8da02477ad50bb7857" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cec0b1eea33d45689082c00097725185" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "772e21e2ba714d92bc5aa9b55c1374b3" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d8f8412f9a9c4488891fa54ee86d3c58" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8cb960f8b87a4e12b9ebf3d2f11bac93" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8d756796d33e4103ae33adc35f4abc4f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "c687d7776d5046cca5a3e61041819449" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99cba88abd1448caa209aa4cf422b329" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2fdb7e4e13f74d23b75667d58fe1898a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9a922e6e719848598cb9ed1c4339773c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d8f8412f9a9c4488891fa54ee86d3c58" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b2acc63d54bf4eda8c78cdebf728ca84" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bb441583f9a440d1af1c6c1fac1e8b97" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "772e21e2ba714d92bc5aa9b55c1374b3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c1248bbb0c1f483089bbf98e64ff5d96" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3456cd311347447c9af3c6631e485850" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c687d7776d5046cca5a3e61041819449" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cec0b1eea33d45689082c00097725185" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ce532b1860ba4e13ba3beedb56ac3147" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2595e7e856bb4c47ae37c43a792180bc" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cec0b1eea33d45689082c00097725185" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "772e21e2ba714d92bc5aa9b55c1374b3" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d8f8412f9a9c4488891fa54ee86d3c58" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "27b8e9e16e03474f92d540ae01c669d7" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e3711e5cd9f243f29056fede88f0e6dc" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cec0b1eea33d45689082c00097725185" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f365fcb3d6c4f91afec6de02fa9af4a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1f365fcb3d6c4f91afec6de02fa9af4a" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bb441583f9a440d1af1c6c1fac1e8b97" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f0d3ab8b87c4459d8a6d9162da0b7386" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bb441583f9a440d1af1c6c1fac1e8b97" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f547c315a4e64fb58050d96baebaffae" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b2acc63d54bf4eda8c78cdebf728ca84" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "27b8e9e16e03474f92d540ae01c669d7" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0153d648f56a4952898bf2c3cc0eb994", + "m_Id": 1, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "06cc40560bf949aba8f6d7a0466c1778", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0f52f105b2314b15ba0796e0ab69eb15", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "10bf0ff8c9c545da8ff6bc8d07f52235", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1adc33d5a71a46618871eeb77776d2b3", + "m_Id": 2, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "1b3c51510ca84056b876e5de61840bac", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1d24fdf3c309414d889eb8f58ffe0b35", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "1f365fcb3d6c4f91afec6de02fa9af4a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -190.25, + "y": 15.0, + "width": 128.0, + "height": 101.0 + } + }, + "m_Slots": [ + { + "m_Id": "d8e3e5bc2fa44c75bcc758e7bbd87af4" + }, + { + "m_Id": "20e10a03f99f4a8f9226d22170cf40e3" + }, + { + "m_Id": "7cb54dec1a8f4802ac1240d4e98bacc8" + } + ], + "synonyms": [ + "2", + "v2", + "vec2", + "float2" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "20c8b3b6b1c94319a4dcf0be49ac34da", + "m_Id": 0, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "20e10a03f99f4a8f9226d22170cf40e3", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "2595e7e856bb4c47ae37c43a792180bc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -239.25, + "y": -262.0, + "width": 208.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "68e43fe9ddf94959a1ef6ca1c8ca5973" + }, + { + "m_Id": "e355968fbbd641d6bbbe2b2402ef37c8" + }, + { + "m_Id": "40375ee59cfc47f7abdc55e25bc9e2d7" + }, + { + "m_Id": "f0909f6c702d4051944e25894100ecca" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "27a2ccc9c44c44ccaa6f79cf6ccde0f9", + "m_Id": 0, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "27b8e9e16e03474f92d540ae01c669d7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 767.0001220703125, + "y": -155.99998474121095, + "width": 142.99993896484376, + "height": 100.99995422363281 + } + }, + "m_Slots": [ + { + "m_Id": "95bd13d1c6ec4064964cbd8740f3b9b3" + }, + { + "m_Id": "39b56c9b7fd04a0b9aef46ea6f38e902" + }, + { + "m_Id": "1b3c51510ca84056b876e5de61840bac" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2962234def254d959e631a1d73e8804a", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2ce38e07eb2a4eebbe3dcb0473fc7985", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -874.0, + "y": 85.0, + "width": 104.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "aaafb07644b848f4bb3dcd23609ff959" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d596e2fed9ac4ef8856c3d028a516d15" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "2fdb7e4e13f74d23b75667d58fe1898a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "WorkaroundTilingOffset (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -729.0, + "y": 57.00001907348633, + "width": 290.0, + "height": 117.99995422363281 + } + }, + "m_Slots": [ + { + "m_Id": "27a2ccc9c44c44ccaa6f79cf6ccde0f9" + }, + { + "m_Id": "41a08d6a3058452d97463a3401f83460" + }, + { + "m_Id": "eab53aa122824c39912ca7182d7457c5" + }, + { + "m_Id": "43f7aebeb7b5441aba3de0fa2cc531b0" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "WorkaroundTilingOffset", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "#if UNITY_VERSION >= 202120\nTilingOffset = float4(1,1,0,0);\nTilingOffsetOther = Tex.scaleTranslate.xyzw;\n#else\nTilingOffset = LegacyST;\nTilingOffsetOther = LegacyST;\n#endif" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "3456cd311347447c9af3c6631e485850", + "m_Group": { + "m_Id": "" + }, + "m_Name": "WorkaroundTilingOffset (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -67.0, + "y": -455.0, + "width": 290.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "692346ac94ef40a5bcdd68392b8880c4" + }, + { + "m_Id": "0153d648f56a4952898bf2c3cc0eb994" + }, + { + "m_Id": "65311ef64fdc45cca409815e7b98232e" + }, + { + "m_Id": "dbf26939aa944ba19b9a0f8b891da2d9" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "WorkaroundTilingOffset", + "m_FunctionSource": "885a3662fbaba7c47979790356264411", + "m_FunctionBody": "#if UNITY_VERSION >= 202120\nTilingOffset = float4(1,1,0,0);\nTilingOffsetOther = Tex.scaleTranslate.xyzw;\n#else\nTilingOffset = LegacyST;\nTilingOffsetOther = LegacyST;\n#endif" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "368a268c54c84859aff6087870d2d80b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "38f27185fcf44147a58c26469a1ebb77", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "39ae87b2e138408e9b55d7dd9295c567", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "39b56c9b7fd04a0b9aef46ea6f38e902", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3a2ca143fa7c416db187740179c9de72", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "40375ee59cfc47f7abdc55e25bc9e2d7", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "41a08d6a3058452d97463a3401f83460", + "m_Id": 1, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "4236b1dd63bc4c92a3a106c05c18c00d", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "436f1b378dd34d8eb1006e0c8465fb3a", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.5, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "43f7aebeb7b5441aba3de0fa2cc531b0", + "m_Id": 4, + "m_DisplayName": "OutTex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutTex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "47ca78a594d241eaa93b0e3977c4d26a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "4e9c77fa8b084fd58866a854282c68a1", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 1.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "56d9a937ceac4565b9af6f99ea5e08d7", + "m_Guid": { + "m_GuidSerialized": "edf63907-814a-426f-93e5-ed40f270dcbd" + }, + "m_Name": "Enable Texture Transform", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Enable Texture Transform", + "m_DefaultReferenceName": "_ENABLE_TEXTURE_TRANSFORM", + "m_OverrideReferenceName": "_TEXTURE_TRANSFORM_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5bfc323d88eb40faad9e6714526b2429", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65311ef64fdc45cca409815e7b98232e", + "m_Id": 3, + "m_DisplayName": "TilingOffset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "TilingOffset", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "68e43fe9ddf94959a1ef6ca1c8ca5973", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "692346ac94ef40a5bcdd68392b8880c4", + "m_Id": 0, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "72c185b8fbb94e8da02477ad50bb7857", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -31.25, + "y": -73.9998779296875, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "ba2585563f464982861c7ac20cb49e93" + }, + { + "m_Id": "7710fe404353448187f2d480d1a88997" + }, + { + "m_Id": "d14af0d3bd4d49889802d5d9a64ad95b" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "73f3260851e84ffcbd18666ddb6d4db5", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "7710fe404353448187f2d480d1a88997", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "772e21e2ba714d92bc5aa9b55c1374b3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 335.749755859375, + "y": 161.0, + "width": 130.000244140625, + "height": 118.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "b5c9181a2b274bba9d5cab7692cc137c" + }, + { + "m_Id": "5bfc323d88eb40faad9e6714526b2429" + }, + { + "m_Id": "cd15f14d506943aeb5b6abd9abfa4ab4" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "7cb54dec1a8f4802ac1240d4e98bacc8", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7fdbc456a47947898cd9119006ac64e1", + "m_Id": 0, + "m_DisplayName": "Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "80834d18d9b74a0983272b823dcc3dc8", + "m_Guid": { + "m_GuidSerialized": "b3d81d39-5c6c-4c82-9d1f-36795cedd43c" + }, + "m_Name": "UV Channel", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "UV Channel", + "m_DefaultReferenceName": "_UV_Channel", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "88f4af515d8847e1b14f56d6f5e16728", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "8cb960f8b87a4e12b9ebf3d2f11bac93", + "m_Group": { + "m_Id": "" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -473.25, + "y": -114.0, + "width": 145.0, + "height": 129.0 + } + }, + "m_Slots": [ + { + "m_Id": "e2bc47ca951847188484ace4c549e067" + } + ], + "synonyms": [ + "texcoords", + "coords", + "coordinates" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8d756796d33e4103ae33adc35f4abc4f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -181.25, + "y": 342.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7fdbc456a47947898cd9119006ac64e1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d13055b530284fba835fc40fb2321e21" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8f88c20b213a43798210afd7090ac266", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "95bd13d1c6ec4064964cbd8740f3b9b3", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "990625fe709045eba64aabc6c046c994", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "99cba88abd1448caa209aa4cf422b329", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -899.0, + "y": 139.0, + "width": 129.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "bccd2b83dc5444f096b7f49495d79090" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b23804a2765f4d44bf943d308aa82893" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9a922e6e719848598cb9ed1c4339773c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 259.0, + "y": -303.0, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "39ae87b2e138408e9b55d7dd9295c567" + }, + { + "m_Id": "73f3260851e84ffcbd18666ddb6d4db5" + }, + { + "m_Id": "368a268c54c84859aff6087870d2d80b" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a04e9adef398411caaa05e94df4a7ec7", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "aaafb07644b848f4bb3dcd23609ff959", + "m_Id": 0, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "b23804a2765f4d44bf943d308aa82893", + "m_Guid": { + "m_GuidSerialized": "277be5c3-34fc-4771-8834-d5c25768d2ec" + }, + "m_Name": "LegacyST", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "LegacyST", + "m_DefaultReferenceName": "_LegacyST", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ComparisonNode", + "m_ObjectId": "b2acc63d54bf4eda8c78cdebf728ca84", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Comparison", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -473.25, + "y": -410.0, + "width": 145.0, + "height": 136.0 + } + }, + "m_Slots": [ + { + "m_Id": "d512aa6b75e349629f86bc138fff3f35" + }, + { + "m_Id": "436f1b378dd34d8eb1006e0c8465fb3a" + }, + { + "m_Id": "47ca78a594d241eaa93b0e3977c4d26a" + } + ], + "synonyms": [ + "equal", + "greater than", + "less than" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_ComparisonType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "b5509161f6d5453b81572144b8e2fdfe", + "m_Id": 1, + "m_DisplayName": "Center", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Center", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b5c9181a2b274bba9d5cab7692cc137c", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b5f46849e6c7440eb06c4e2b26aed709", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ba2585563f464982861c7ac20cb49e93", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "bb441583f9a440d1af1c6c1fac1e8b97", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -190.25, + "y": 127.0, + "width": 128.0, + "height": 101.0 + } + }, + "m_Slots": [ + { + "m_Id": "3a2ca143fa7c416db187740179c9de72" + }, + { + "m_Id": "88f4af515d8847e1b14f56d6f5e16728" + }, + { + "m_Id": "e80fddfff6834cc6a81a8403d7c587e1" + } + ], + "synonyms": [ + "2", + "v2", + "vec2", + "float2" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "bccd2b83dc5444f096b7f49495d79090", + "m_Id": 0, + "m_DisplayName": "LegacyST", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c1248bbb0c1f483089bbf98e64ff5d96", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -207.82611083984376, + "y": -459.1304626464844, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "20c8b3b6b1c94319a4dcf0be49ac34da" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "d596e2fed9ac4ef8856c3d028a516d15" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NegateNode", + "m_ObjectId": "c687d7776d5046cca5a3e61041819449", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Negate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -31.25, + "y": 295.0, + "width": 128.0, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "ce1381546b704878bc8be3d5947cbaa3" + }, + { + "m_Id": "db9fd4bffbb94177940807a87690f081" + } + ], + "synonyms": [ + "invert", + "opposite" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c8baf59d193f4527b0f3d43ebf44086a", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cd15f14d506943aeb5b6abd9abfa4ab4", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce1381546b704878bc8be3d5947cbaa3", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "ce532b1860ba4e13ba3beedb56ac3147", + "m_Group": { + "m_Id": "" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -473.25, + "y": -262.0, + "width": 145.0, + "height": 129.0 + } + }, + "m_Slots": [ + { + "m_Id": "8f88c20b213a43798210afd7090ac266" + } + ], + "synonyms": [ + "texcoords", + "coords", + "coordinates" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RotateNode", + "m_ObjectId": "cec0b1eea33d45689082c00097725185", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Rotate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 141.75, + "y": 28.0001220703125, + "width": 163.999755859375, + "height": 177.0 + } + }, + "m_Slots": [ + { + "m_Id": "4236b1dd63bc4c92a3a106c05c18c00d" + }, + { + "m_Id": "b5509161f6d5453b81572144b8e2fdfe" + }, + { + "m_Id": "1adc33d5a71a46618871eeb77776d2b3" + }, + { + "m_Id": "38f27185fcf44147a58c26469a1ebb77" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Unit": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "d13055b530284fba835fc40fb2321e21", + "m_Guid": { + "m_GuidSerialized": "0c456893-e07e-4608-8121-3220a4f6c3be" + }, + "m_Name": "Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Rotation", + "m_DefaultReferenceName": "_Rotation", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d14af0d3bd4d49889802d5d9a64ad95b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d512aa6b75e349629f86bc138fff3f35", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "d596e2fed9ac4ef8856c3d028a516d15", + "m_Guid": { + "m_GuidSerialized": "5b31af93-5974-4d7f-aa6a-8144a78d8bb2" + }, + "m_Name": "Tex", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Tex", + "m_DefaultReferenceName": "_Tex", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d8e3e5bc2fa44c75bcc758e7bbd87af4", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "d8f8412f9a9c4488891fa54ee86d3c58", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Enable Texture Transform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 504.00006103515627, + "y": -274.0000305175781, + "width": 194.00006103515626, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "0f52f105b2314b15ba0796e0ab69eb15" + }, + { + "m_Id": "1d24fdf3c309414d889eb8f58ffe0b35" + }, + { + "m_Id": "c8baf59d193f4527b0f3d43ebf44086a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "56d9a937ceac4565b9af6f99ea5e08d7" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "db9fd4bffbb94177940807a87690f081", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "dbf26939aa944ba19b9a0f8b891da2d9", + "m_Id": 4, + "m_DisplayName": "OutTex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutTex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "e29eacd144ac4330962bdf5c5dd1148e", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "d596e2fed9ac4ef8856c3d028a516d15" + }, + { + "m_Id": "d13055b530284fba835fc40fb2321e21" + }, + { + "m_Id": "80834d18d9b74a0983272b823dcc3dc8" + }, + { + "m_Id": "56d9a937ceac4565b9af6f99ea5e08d7" + }, + { + "m_Id": "b23804a2765f4d44bf943d308aa82893" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "e2bc47ca951847188484ace4c549e067", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e355968fbbd641d6bbbe2b2402ef37c8", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "e3711e5cd9f243f29056fede88f0e6dc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -31.25, + "y": 169.0, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a04e9adef398411caaa05e94df4a7ec7" + }, + { + "m_Id": "4e9c77fa8b084fd58866a854282c68a1" + }, + { + "m_Id": "06cc40560bf949aba8f6d7a0466c1778" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "e80fddfff6834cc6a81a8403d7c587e1", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "eab53aa122824c39912ca7182d7457c5", + "m_Id": 3, + "m_DisplayName": "TilingOffset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "TilingOffset", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ece58ca0fadd4ef1a29ca4fac17ed864", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f0909f6c702d4051944e25894100ecca", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "f0d3ab8b87c4459d8a6d9162da0b7386", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -382.25, + "y": 56.0, + "width": 120.0, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "10bf0ff8c9c545da8ff6bc8d07f52235" + }, + { + "m_Id": "ece58ca0fadd4ef1a29ca4fac17ed864" + }, + { + "m_Id": "2962234def254d959e631a1d73e8804a" + }, + { + "m_Id": "990625fe709045eba64aabc6c046c994" + }, + { + "m_Id": "b5f46849e6c7440eb06c4e2b26aed709" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f547c315a4e64fb58050d96baebaffae", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -729.0, + "y": -371.0, + "width": 137.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "fef788eec75446eb81447e789a89a4e3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "80834d18d9b74a0983272b823dcc3dc8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fef788eec75446eb81447e789a89a4e3", + "m_Id": 0, + "m_DisplayName": "UV Channel", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph.meta b/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph.meta new file mode 100644 index 000000000..2d6fc304c --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/TextureTransform.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8ecb70019a63796448768b1124086ef5 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} diff --git a/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph b/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph new file mode 100644 index 000000000..6502df5f2 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph @@ -0,0 +1,2541 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "91e2a81f19de4249bc97ceec39ed3170", + "m_Properties": [ + { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + }, + { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + }, + { + "m_Id": "851b64cc55064cc591c263711144feca" + }, + { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + }, + { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + }, + { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + } + ], + "m_Keywords": [ + { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + }, + { + "m_Id": "14eb9f49890e4fdf8e6c058bfe728c2c" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "7f64bbc2d78d4fb199ef542b88ad80bb" + }, + { + "m_Id": "318b5ae978fa4468abc6503de868db1a" + } + ], + "m_Nodes": [ + { + "m_Id": "d62362e7b1db41b5b2850ca4f7727193" + }, + { + "m_Id": "84d55ba92e74430996e3472b42307dbe" + }, + { + "m_Id": "f99c7d64d64e494f9fa89870d003303e" + }, + { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + }, + { + "m_Id": "06db988d9f42411085151074e35e62d5" + }, + { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + { + "m_Id": "5260828f1a9340bba0850b529eab555e" + }, + { + "m_Id": "4298618b682246f99867908047bc271b" + }, + { + "m_Id": "7f4c33107f064c7da4d5577b6541188d" + }, + { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + { + "m_Id": "9408a018d7914d50b1b5af63a7699f0e" + }, + { + "m_Id": "e8eeaf53ed7e44cf9b859265dbcceec8" + }, + { + "m_Id": "2cc830dd4c1246d8a15eebc1551e48a5" + }, + { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + } + ], + "m_GroupDatas": [ + { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "06db988d9f42411085151074e35e62d5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -532409878 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4298618b682246f99867908047bc271b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2cc830dd4c1246d8a15eebc1551e48a5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -1162300524 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4298618b682246f99867908047bc271b" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5260828f1a9340bba0850b529eab555e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1fd92dcb775e44539582c91fa2d715ee" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7f4c33107f064c7da4d5577b6541188d" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9408a018d7914d50b1b5af63a7699f0e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": -725852216 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2796de049db74614be6bfe0317d3403f" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c63eb0c45cd446faafe694bb84a8a9d3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a0f839c542124faea4358fe4a8083771" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7d0f12322640404fabc3a8d92d461290" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8eeaf53ed7e44cf9b859265dbcceec8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cedfea913c474bd2bb71209c662e46b5" + }, + "m_SlotId": 1309511136 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 3087.000244140625, + "y": 230.99998474121095 + }, + "m_Blocks": [ + { + "m_Id": "d62362e7b1db41b5b2850ca4f7727193" + }, + { + "m_Id": "84d55ba92e74430996e3472b42307dbe" + }, + { + "m_Id": "f99c7d64d64e494f9fa89870d003303e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 3087.000244140625, + "y": 610.0 + }, + "m_Blocks": [ + { + "m_Id": "192a2fa94873447f8287e671a84cfef5" + }, + { + "m_Id": "7bb3ca3024ad410f8014cc5f609eb114" + }, + { + "m_Id": "84e2db014c35493eb0bf3d5ef8777478" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "UnityGLTF", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "de2d39e22ef549f58ed7b2a1f989a770" + }, + { + "m_Id": "2adddb3fba4f472caec286b8688d99fe" + }, + { + "m_Id": "d1ea4f0250a34d99863ee930d384b759" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "052134b472814ed68c616629c4360ad9", + "m_Id": 0, + "m_DisplayName": "Map Rotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0663969fd47346fabe593928bb40b508", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "06db988d9f42411085151074e35e62d5", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1127.0, + "y": -319.0, + "width": 166.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "5d74d6d78db64d4e9925acfe54a292ac" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "06f5499a20744baaaaaf8a9d5cfdb5d9", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "14eb9f49890e4fdf8e6c058bfe728c2c", + "m_Guid": { + "m_GuidSerialized": "18d2d4e9-c6dd-42bf-93c8-949b286e09f8" + }, + "m_Name": "Enable Texture Transforms", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Enable Texture Transforms", + "m_DefaultReferenceName": "_ENABLE_TEXTURE_TRANSFORMS", + "m_OverrideReferenceName": "_TEXTURE_TRANSFORM_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 0, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "192a2fa94873447f8287e671a84cfef5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "6c366b0d6ec545c3832add909e3d1e89" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1989f19083984f9482326d807005e07f", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "1fd92dcb775e44539582c91fa2d715ee", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1903.0, + "y": -318.99993896484377, + "width": 130.0001220703125, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "3b8f80eed15d468c858c1bb729f68b4b" + }, + { + "m_Id": "9966b44de47f44c09134230701fc17cc" + }, + { + "m_Id": "508110704c634983a721fe742b0dcafd" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "20b14d2ae2434cf38a81633609bf5f43", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "2796de049db74614be6bfe0317d3403f", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Enable Vertex Colors", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1698.0, + "y": -162.99996948242188, + "width": 166.0, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "5d7fea3e25aa4c32aa1b8057007a7cea" + }, + { + "m_Id": "eef506e16f0d4e7fabba8e363f9f7b5b" + }, + { + "m_Id": "0663969fd47346fabe593928bb40b508" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "2896420937a94ab89b246fb3155919dc", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDTarget", + "m_ObjectId": "2adddb3fba4f472caec286b8688d99fe", + "m_ActiveSubTarget": { + "m_Id": "8f7106cb155b403ea6a8022400235d95" + }, + "m_Datas": [ + { + "m_Id": "c2bea0a6923d40e88c022e279ce22602" + }, + { + "m_Id": "56b8cfcfbe7e4700a8ee6c8920825400" + }, + { + "m_Id": "7c6ec251c77e49c4a4887cf647d1f80e" + } + ], + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "2be05efd171444038a2e4b7115af59e6", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2cc830dd4c1246d8a15eebc1551e48a5", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1176.0, + "y": -225.0, + "width": 117.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "3c4d023c8c014e90b9e53d57f5fb3dd4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector4ShaderProperty", + "m_ObjectId": "2ef8958a8ad04fc48a4990966c393b9a", + "m_Guid": { + "m_GuidSerialized": "42989d8e-f01d-4e05-bab8-5af5397c1e84" + }, + "m_Name": "Map Tiling/Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Map Tiling/Offset", + "m_DefaultReferenceName": "_Map_Tiling_Offset", + "m_OverrideReferenceName": "baseColorTexture_ST", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "318b5ae978fa4468abc6503de868db1a", + "m_Name": "glTF PBR", + "m_ChildObjectList": [ + { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + }, + { + "m_Id": "90e0e7e9f75044ad959e408da384de44" + }, + { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + }, + { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + }, + { + "m_Id": "a31de1ea8ed447308eea30bd6fdac922" + }, + { + "m_Id": "851b64cc55064cc591c263711144feca" + }, + { + "m_Id": "97df40c83f5a4671a59db5b30b4c6316" + }, + { + "m_Id": "14eb9f49890e4fdf8e6c058bfe728c2c" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3b8f80eed15d468c858c1bb729f68b4b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3c4d023c8c014e90b9e53d57f5fb3dd4", + "m_Id": 0, + "m_DisplayName": "Map UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "3f4ae4edfaa34f4c8531bd854abd844a", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDLitData", + "m_ObjectId": "40f2bfb8172f4025bc600b8b6c4a9677", + "m_RayTracing": false, + "m_MaterialType": 0, + "m_RefractionModel": 0, + "m_SSSTransmission": true, + "m_EnergyConservingSpecular": true, + "m_ClearCoat": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "4298618b682246f99867908047bc271b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2099.000244140625, + "y": -190.99996948242188, + "width": 119.999755859375, + "height": 149.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "954c85b2964d43ca90e1a13747a3eef1" + }, + { + "m_Id": "d48ccf4b057d459ea93e84d0e6d43e43" + }, + { + "m_Id": "54f1cc14614d4472912dcff46abb0198" + }, + { + "m_Id": "6c2acb01264e42bb889e20d3f76c9684" + }, + { + "m_Id": "58e4f80242c54853a51fb8f46c891318" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "508110704c634983a721fe742b0dcafd", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5260828f1a9340bba0850b529eab555e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 2821.00048828125, + "y": 1040.0001220703125, + "width": 140.99951171875, + "height": 33.9998779296875 + } + }, + "m_Slots": [ + { + "m_Id": "b91488151b004cd2aa2ba7923db0e152" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "851b64cc55064cc591c263711144feca" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "53e6e4fd5b7040cc8ca17980f41e3df4", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "54f1cc14614d4472912dcff46abb0198", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.SystemData", + "m_ObjectId": "56b8cfcfbe7e4700a8ee6c8920825400", + "m_MaterialNeedsUpdateHash": 529, + "m_SurfaceType": 1, +"m_TwoSided": true, + "m_RenderingPass": 1, + "m_BlendMode": 0, + "m_ZTest": 4, + "m_ZWrite": false, + "m_TransparentCullMode": 2, + "m_OpaqueCullMode": 2, + "m_SortPriority": 0, + "m_AlphaTest": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false, + "m_DoubleSidedMode": 0, + "m_DOTSInstancing": false, + "m_CustomVelocity": false, + "m_Tessellation": false, + "m_TessellationMode": 0, + "m_TessellationFactorMinDistance": 20.0, + "m_TessellationFactorMaxDistance": 50.0, + "m_TessellationFactorTriangleSize": 100.0, + "m_TessellationShapeFactor": 0.75, + "m_TessellationBackFaceCullEpsilon": -0.25, + "m_TessellationMaxDisplacement": 0.009999999776482582, + "m_Version": 1, + "inspectorFoldoutMask": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58e4f80242c54853a51fb8f46c891318", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5ca8bbeec7774b4fb0301196692f327f", + "m_Id": -725852216, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "5d74d6d78db64d4e9925acfe54a292ac", + "m_Id": 0, + "m_DisplayName": "Base Color Map", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5d7fea3e25aa4c32aa1b8057007a7cea", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "6006f8cec6b1423581a5a7544cf99b5d", + "m_Id": -532409878, + "m_DisplayName": "Tex", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Tex", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInUnlitSubTarget", + "m_ObjectId": "643c6f6393984e12a7f9d46bdf4b0d0c" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6c2acb01264e42bb889e20d3f76c9684", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "6c366b0d6ec545c3832add909e3d1e89", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "7bb3ca3024ad410f8014cc5f609eb114", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1989f19083984f9482326d807005e07f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDUnlitData", + "m_ObjectId": "7c6ec251c77e49c4a4887cf647d1f80e", + "m_EnableShadowMatte": false, + "m_DistortionOnly": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "7d0f12322640404fabc3a8d92d461290", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1681.0, + "y": -425.99993896484377, + "width": 183.0, + "height": 250.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "2896420937a94ab89b246fb3155919dc" + }, + { + "m_Id": "20b14d2ae2434cf38a81633609bf5f43" + }, + { + "m_Id": "06f5499a20744baaaaaf8a9d5cfdb5d9" + }, + { + "m_Id": "85ec0cef04ec49ee885d4a3f4b44efa9" + }, + { + "m_Id": "9e3aebb69ef04f038b0047212dee79aa" + }, + { + "m_Id": "edee52016d324d04b248f4f255882edb" + }, + { + "m_Id": "afc7970b28824f77bf1194792fc8fa04" + }, + { + "m_Id": "7fcb59f8468e4ca8b44fa2a6355eb44a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7e1ec34d620c4cfdab4e87bb4d732943", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.VertexColorNode", + "m_ObjectId": "7f4c33107f064c7da4d5577b6541188d", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Vertex Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1370.0, + "y": -99.9999771118164, + "width": 118.000244140625, + "height": 94.00008392333985 + } + }, + "m_Slots": [ + { + "m_Id": "7e1ec34d620c4cfdab4e87bb4d732943" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "7f64bbc2d78d4fb199ef542b88ad80bb", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7fcb59f8468e4ca8b44fa2a6355eb44a", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "84d55ba92e74430996e3472b42307dbe", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "2be05efd171444038a2e4b7115af59e6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "84e2db014c35493eb0bf3d5ef8777478", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "ecde0983554943cd81a917127fad3655" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "851b64cc55064cc591c263711144feca", + "m_Guid": { + "m_GuidSerialized": "bb5d1f8d-d033-480f-b48e-bc5fd655a7d7" + }, + "m_Name": "Alpha Cutoff", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Alpha Cutoff", + "m_DefaultReferenceName": "_Alpha_Cutoff", + "m_OverrideReferenceName": "alphaCutoff", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85ec0cef04ec49ee885d4a3f4b44efa9", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "86351816717b466c977fecf4d84eb6a2", + "m_Guid": { + "m_GuidSerialized": "29a3b28d-65b6-4f84-938e-3006058d602b" + }, + "m_Name": "Base Color", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Base Color", + "m_DefaultReferenceName": "_Base_Color", + "m_OverrideReferenceName": "baseColorFactor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDUnlitSubTarget", + "m_ObjectId": "8f7106cb155b403ea6a8022400235d95" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "90e0e7e9f75044ad959e408da384de44", + "m_Guid": { + "m_GuidSerialized": "0d93659e-0928-436e-9073-e756de46db7d" + }, + "m_Name": "Base Color Map", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Base Color Map", + "m_DefaultReferenceName": "_Base_Color_Map", + "m_OverrideReferenceName": "baseColorTexture", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "934381759c5947709a33fde75e0c5595", + "m_Id": 1, + "m_DisplayName": "Transformed_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Transformed_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "9408a018d7914d50b1b5af63a7699f0e", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1148.0, + "y": -270.0, + "width": 145.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "052134b472814ed68c616629c4360ad9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "cdce6996c9064903841175baee4ac9d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "954c85b2964d43ca90e1a13747a3eef1", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "97df40c83f5a4671a59db5b30b4c6316", + "m_Guid": { + "m_GuidSerialized": "0ed3a523-c978-4e5c-bc38-732b77ffc1b4" + }, + "m_Name": "Enable Vertex Colors", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Enable Vertex Colors", + "m_DefaultReferenceName": "_ENABLE_VERTEX_COLORS", + "m_OverrideReferenceName": "_VERTEX_COLORS_ON", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 63, + "m_Entries": [], + "m_Value": 1, + "m_IsEditable": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "9966b44de47f44c09134230701fc17cc", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e3aebb69ef04f038b0047212dee79aa", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a0f839c542124faea4358fe4a8083771", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1528.000244140625, + "y": -141.9999237060547, + "width": 129.999755859375, + "height": 117.99996948242188 + } + }, + "m_Slots": [ + { + "m_Id": "53e6e4fd5b7040cc8ca17980f41e3df4" + }, + { + "m_Id": "cf88e70b5d9849329c0adf3c779fd376" + }, + { + "m_Id": "be355e8ec4254b67ae45656d90d28beb" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "a31de1ea8ed447308eea30bd6fdac922", + "m_Guid": { + "m_GuidSerialized": "d2380b97-8e1a-45c1-b7dd-44313775399d" + }, + "m_Name": "Map UV", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Map UV", + "m_DefaultReferenceName": "_Map_UV", + "m_OverrideReferenceName": "baseColorTextureTexCoord", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 2, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "a482fd18440e4922afab82f12dd388ad", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "aad62e4aefcf46c6952a69f91d137267", + "m_Id": 3, + "m_DisplayName": "Tex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Tex", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "afc7970b28824f77bf1194792fc8fa04", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b43ee4b8c16349e1a608f0614dfa31d7", + "m_Id": 0, + "m_DisplayName": "Map Tiling/Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b579868c840049e2b2c511a4221fcfa2", + "m_Id": -1162300524, + "m_DisplayName": "UV Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_UV_Channel", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b91488151b004cd2aa2ba7923db0e152", + "m_Id": 0, + "m_DisplayName": "Alpha Cutoff", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "be355e8ec4254b67ae45656d90d28beb", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.LightingData", + "m_ObjectId": "c01b5bb817134989a3ddb326b67996b3", + "m_NormalDropOffSpace": 0, + "m_BlendPreserveSpecular": true, + "m_ReceiveDecals": true, + "m_ReceiveSSR": true, + "m_ReceiveSSRTransparent": false, + "m_SpecularAA": false, + "m_SpecularOcclusionMode": 1, + "m_OverrideBakedGI": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "c1f6d9e695904fea9b3abdc1e683f2c8", + "m_Title": "Base Color + Normal + Emission", + "m_Position": { + "x": 1006.0, + "y": -620.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.BuiltinData", + "m_ObjectId": "c2bea0a6923d40e88c022e279ce22602", + "m_Distortion": false, + "m_DistortionMode": 0, + "m_DistortionDepthTest": true, + "m_AddPrecomputedVelocity": false, + "m_TransparentWritesMotionVec": false, + "m_AlphaToMask": false, + "m_DepthOffset": false, + "m_ConservativeDepthOffset": false, + "m_TransparencyFog": true, + "m_AlphaTestShadow": false, + "m_BackThenFrontRendering": false, + "m_TransparentDepthPrepass": false, + "m_TransparentDepthPostpass": false, + "m_SupportLodCrossFade": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c63eb0c45cd446faafe694bb84a8a9d3", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1370.0, + "y": -161.9999237060547, + "width": 134.000244140625, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "3f4ae4edfaa34f4c8531bd854abd844a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "86351816717b466c977fecf4d84eb6a2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c7016903d3724b8b9bd443069b1c24cd", + "m_Id": 1309511136, + "m_DisplayName": "LegacyST", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_LegacyST", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "cdce6996c9064903841175baee4ac9d8", + "m_Guid": { + "m_GuidSerialized": "21264b96-4ab0-4b81-9342-9b4c470cf357" + }, + "m_Name": "Map Rotation", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Map Rotation", + "m_DefaultReferenceName": "_Map_Rotation", + "m_OverrideReferenceName": "baseColorTextureRotation", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "cedfea913c474bd2bb71209c662e46b5", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "TextureTransform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1377.0, + "y": -328.9999694824219, + "width": 256.0, + "height": 141.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "6006f8cec6b1423581a5a7544cf99b5d" + }, + { + "m_Id": "5ca8bbeec7774b4fb0301196692f327f" + }, + { + "m_Id": "b579868c840049e2b2c511a4221fcfa2" + }, + { + "m_Id": "c7016903d3724b8b9bd443069b1c24cd" + }, + { + "m_Id": "934381759c5947709a33fde75e0c5595" + }, + { + "m_Id": "fa713a0965784318898f7198633adc19" + }, + { + "m_Id": "aad62e4aefcf46c6952a69f91d137267" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"8ecb70019a63796448768b1124086ef5\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "83a6556e-d78a-45f4-b8a2-13076ccdab77", + "0c456893-e07e-4608-8121-3220a4f6c3be", + "b3d81d39-5c6c-4c82-9d1f-36795cedd43c", + "5b31af93-5974-4d7f-aa6a-8144a78d8bb2", + "277be5c3-34fc-4771-8834-d5c25768d2ec" + ], + "m_PropertyIds": [ + -1226117840, + -725852216, + -1162300524, + -532409878, + 1309511136 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "cf88e70b5d9849329c0adf3c779fd376", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "d1ea4f0250a34d99863ee930d384b759", + "m_ActiveSubTarget": { + "m_Id": "d540221bfe644d0c8d8de4c01449dee6" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": true, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "UnityGLTF.PBRGraphUniversalGUI", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "d2f2eacbae84474bae0bdb99abc6a0e6", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d48ccf4b057d459ea93e84d0e6d43e43", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "d540221bfe644d0c8d8de4c01449dee6" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d62362e7b1db41b5b2850ca4f7727193", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a482fd18440e4922afab82f12dd388ad" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.BuiltIn.ShaderGraph.BuiltInTarget", + "m_ObjectId": "de2d39e22ef549f58ed7b2a1f989a770", + "m_ActiveSubTarget": { + "m_Id": "643c6f6393984e12a7f9d46bdf4b0d0c" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 0, + "m_ZWriteControl": 0, + "m_ZTestMode": 4, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": true, + "m_CustomEditorGUI": "UnityGLTF.PBRGraphGUI" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "e8eeaf53ed7e44cf9b859265dbcceec8", + "m_Group": { + "m_Id": "c1f6d9e695904fea9b3abdc1e683f2c8" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1136.0, + "y": -187.0, + "width": 168.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "b43ee4b8c16349e1a608f0614dfa31d7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2ef8958a8ad04fc48a4990966c393b9a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.HighDefinition.ShaderGraph.HDLitSubTarget", + "m_ObjectId": "ec903d4fe369487a99f1706f50daa8d5" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ecde0983554943cd81a917127fad3655", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "edee52016d324d04b248f4f255882edb", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "eef506e16f0d4e7fabba8e363f9f7b5b", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f99c7d64d64e494f9fa89870d003303e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d2f2eacbae84474bae0bdb99abc6a0e6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "fa713a0965784318898f7198633adc19", + "m_Id": 2, + "m_DisplayName": "Original_UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Original_UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + diff --git a/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph.meta b/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph.meta new file mode 100644 index 000000000..81d92c3a9 --- /dev/null +++ b/Runtime/Shaders/ShaderGraph/UnlitGraph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 59541e6caf586ca4f96ccf48a4813a51 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardInput.cginc b/Runtime/Shaders/UnityStandardInput.cginc similarity index 95% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardInput.cginc rename to Runtime/Shaders/UnityStandardInput.cginc index 0e489c6bc..a92b55a5b 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardInput.cginc +++ b/Runtime/Shaders/UnityStandardInput.cginc @@ -49,8 +49,9 @@ sampler2D _ParallaxMap; half _Parallax; half _UVSec; -half4 _EmissionColor; +half4 _EmissionColor; sampler2D _EmissionMap; +float4 _EmissionMap_ST; //------------------------------------------------------------------------------------- // Input functions @@ -211,16 +212,15 @@ half3 Emission(float2 uv) #ifndef _EMISSION return 0; #else - return tex2D(_EmissionMap, uv).rgb * _EmissionColor.rgb; + return tex2D(_EmissionMap, TRANSFORM_TEX(uv, _EmissionMap)).rgb * _EmissionColor.rgb; #endif } // see this link regarding unpacking instructions: -// https://github.com/KhronosGroup/glTF/blob/2.0/specification/2.0/schema/material.normalTextureInfo.schema.json#L13 +// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/schema/material.normalTextureInfo.schema.json#L13 half3 UnpackScaleNormalGLTF(half4 packednormal, half bumpScale) { - float3 normal = normalize(packednormal.xyz); - normal = (normal*2.0 - 1.0); + float3 normal = packednormal.xyz * 2.0 - 1.0; normal.xy *= bumpScale; return normalize(normal); } diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardInput.cginc.meta b/Runtime/Shaders/UnityStandardInput.cginc.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardInput.cginc.meta rename to Runtime/Shaders/UnityStandardInput.cginc.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardShadow.cginc b/Runtime/Shaders/UnityStandardShadow.cginc similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardShadow.cginc rename to Runtime/Shaders/UnityStandardShadow.cginc diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardShadow.cginc.meta b/Runtime/Shaders/UnityStandardShadow.cginc.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/UnityStandardShadow.cginc.meta rename to Runtime/Shaders/UnityStandardShadow.cginc.meta diff --git a/Runtime/Shaders/Unlit.shader b/Runtime/Shaders/Unlit.shader new file mode 100644 index 000000000..6fb6bb36f --- /dev/null +++ b/Runtime/Shaders/Unlit.shader @@ -0,0 +1,63 @@ +Shader "GLTF/Unlit" +{ + Properties + { + _Color("Base Color Factor", Color) = (1,1,1,1) + _MainTex("Base Color Texture", 2D) = "white" {} + } + SubShader + { + Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} + + Lighting Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 color : COLOR; + UNITY_FOG_COORDS(1) + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + float4 _Color; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + o.color = v.color; + UNITY_TRANSFER_FOG(o,o.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = tex2D(_MainTex, i.uv) * _Color * i.color; + UNITY_APPLY_FOG(i.fogCoord, col); + return col; + } + ENDCG + } + } + FallBack "Unlit/Color" +} diff --git a/Runtime/Shaders/Unlit.shader.meta b/Runtime/Shaders/Unlit.shader.meta new file mode 100644 index 000000000..fb6f18efc --- /dev/null +++ b/Runtime/Shaders/Unlit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4d20effaf200f604db8b73f8e6a2e386 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/VertexColor.cginc b/Runtime/Shaders/VertexColor.cginc similarity index 97% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/VertexColor.cginc rename to Runtime/Shaders/VertexColor.cginc index 324c77a3a..032fbbea0 100644 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/VertexColor.cginc +++ b/Runtime/Shaders/VertexColor.cginc @@ -24,7 +24,8 @@ WrappedVertexOutput vert_vcol(appdata_full v) o.color = v.color; // Forward this call to the default vertBase - VertexInput vi; + VertexInput vi + UNITY_TRANSFER_INSTANCE_ID(v, vi); vi.vertex = v.vertex; vi.normal = v.normal; vi.uv0 = v.texcoord; @@ -73,6 +74,7 @@ half4 frag_vcol(WrappedVertexOutput wvo) : SV_Target s.diffColor.x *= wvo.color.x; s.diffColor.y *= wvo.color.y; s.diffColor.z *= wvo.color.z; + s.alpha *= wvo.color.a; // End: Modified section half occlusion = Occlusion(i.tex.xy); @@ -115,6 +117,7 @@ half4 frag_vcol(WrappedVertexOutput wvo) : SV_Target s.diffColor.x *= wvo.color.x; s.diffColor.y *= wvo.color.y; s.diffColor.z *= wvo.color.z; + s.alpha *= wvo.color.a; // End: Modified section half occlusion = Occlusion(i.tex.xy); diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/VertexColor.cginc.meta b/Runtime/Shaders/VertexColor.cginc.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/VertexColor.cginc.meta rename to Runtime/Shaders/VertexColor.cginc.meta diff --git a/Runtime/UnityGLTFScripts.asmdef b/Runtime/UnityGLTFScripts.asmdef new file mode 100644 index 000000000..7ef5f6ec3 --- /dev/null +++ b/Runtime/UnityGLTFScripts.asmdef @@ -0,0 +1,89 @@ +{ + "name": "UnityGLTFScripts", + "rootNamespace": "", + "references": [ + "GLTFSerialization", + "Unity.Timeline", + "Ktx", + "UnityGLTF.Helpers", + "Unity.InputSystem", + "Unity.Animation.Rigging", + "Draco", + "Unity.Meshopt.Decompress" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.atteneder.ktx", + "expression": "1.3.0", + "define": "HAVE_KTX" + }, + { + "name": "com.unity.cloud.ktx", + "expression": "1.3.0", + "define": "HAVE_KTX" + }, + { + "name": "com.unity.timeline", + "expression": "1.0.0", + "define": "HAVE_TIMELINE" + }, + { + "name": "com.unity.modules.physics", + "expression": "1.0.0", + "define": "UNITY_PHYSICS" + }, + { + "name": "com.unity.modules.unitywebrequest", + "expression": "1.0.0", + "define": "UNITY_WEBREQUEST" + }, + { + "name": "com.unity.modules.imgui", + "expression": "1.0.0", + "define": "UNITY_IMGUI" + }, + { + "name": "com.unity.modules.animation", + "expression": "1.0.0", + "define": "UNITY_ANIMATION" + }, + { + "name": "com.unity.modules.imageconversion", + "expression": "1.0.0", + "define": "UNITY_IMAGECONVERSION" + }, + { + "name": "com.unity.inputsystem", + "expression": "1.0.0", + "define": "HAVE_INPUTSYSTEM" + }, + { + "name": "com.atteneder.draco", + "expression": "1.0.0", + "define": "HAVE_DRACO" + }, + { + "name": "com.unity.cloud.draco", + "expression": "5.0.0", + "define": "HAVE_DRACO" + }, + { + "name": "com.unity.meshopt.decompress", + "expression": "", + "define": "HAVE_MESHOPT_DECOMPRESS" + }, + { + "name": "com.unity.cloud.draco", + "expression": "5.0.0", + "define": "HAVE_DRACO_VERSION_5" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/UnityGLTFScripts.asmdef.meta b/Runtime/UnityGLTFScripts.asmdef.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Runtime/UnityGLTFScripts.asmdef.meta rename to Runtime/UnityGLTFScripts.asmdef.meta diff --git a/Samples~/KHR_audio.meta b/Samples~/KHR_audio.meta new file mode 100644 index 000000000..bda4b6e5b --- /dev/null +++ b/Samples~/KHR_audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8556c362185a487c92146598a143c7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/KHR_audio/AudioSourceScriptableObject.cs b/Samples~/KHR_audio/AudioSourceScriptableObject.cs new file mode 100644 index 000000000..4bbfcb31b --- /dev/null +++ b/Samples~/KHR_audio/AudioSourceScriptableObject.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace UnityGLTF.Plugins.Experimental +{ + [CreateAssetMenu(fileName = "AudioSource", menuName = "UnityGLTF/KHR_audio/AudioSource", order = 1)] + public class AudioSourceScriptableObject : ScriptableObject + { + public AudioClip clip; + public float gain = 1.0f; + public bool autoPlay = true; + public bool loop = true; + } +} \ No newline at end of file diff --git a/Samples~/KHR_audio/AudioSourceScriptableObject.cs.meta b/Samples~/KHR_audio/AudioSourceScriptableObject.cs.meta new file mode 100644 index 000000000..c86cb7f1e --- /dev/null +++ b/Samples~/KHR_audio/AudioSourceScriptableObject.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e0f78417310647de8dbcfd01ceab5eee +timeCreated: 1703889181 \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRAudioPlugin.cs b/Samples~/KHR_audio/KHRAudioPlugin.cs new file mode 100644 index 000000000..f0da459e9 --- /dev/null +++ b/Samples~/KHR_audio/KHRAudioPlugin.cs @@ -0,0 +1,215 @@ +#if UNITY_EDITOR + +using System; +using System.Collections.Generic; +using System.IO; +using GLTF.Schema; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace UnityGLTF.Plugins.Experimental +{ + public class KHRAudioPlugin : GLTFExportPlugin + { + public override string DisplayName => "KHR_audio"; + public override string Description => "Exports positional and global audio sources and .mp3 audio clips. Currently requires adding \"KHRPositionalAudioEmitterBehavior\" and \"KHRGlobalAudioEmitterBehavior\" components to scene objects."; + public override GLTFExportPluginContext CreateInstance(ExportContext context) + { + return new AudioExtensionConfig(); + } + } + public class AudioExtensionConfig: GLTFExportPluginContext + { + static List audioDataClips = new List(); + static List audioSourceObjects = new List(); + static List audioEmitters = new List(); + + public override void AfterNodeExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot, Transform transform, Node node) + { + var audioEmitterBehavior = transform.GetComponent(); + + if (audioEmitterBehavior != null) + { + var audioSourceIds = AddAudioSources(gltfRoot, audioEmitterBehavior.sources); + + var emitterId = new AudioEmitterId + { + Id = audioEmitters.Count, + Root = gltfRoot + }; + + var emitter = new KHR_PositionalAudioEmitter + { + type = "positional", + sources = audioSourceIds, + gain = audioEmitterBehavior.gain, + coneInnerAngle = audioEmitterBehavior.coneInnerAngle * Mathf.Deg2Rad, + coneOuterAngle = audioEmitterBehavior.coneOuterAngle * Mathf.Deg2Rad, + coneOuterGain = audioEmitterBehavior.coneOuterGain, + distanceModel = audioEmitterBehavior.distanceModel, + refDistance = audioEmitterBehavior.refDistance, + maxDistance = audioEmitterBehavior.maxDistance, + rolloffFactor = audioEmitterBehavior.rolloffFactor + }; + + audioEmitters.Add(emitter); + + var extension = new KHR_NodeAudioEmitterRef + { + emitter = emitterId + }; + + node.AddExtension(KHR_audio.ExtensionName, extension); + exporter.DeclareExtensionUsage(KHR_audio.ExtensionName); + } + } + + public override void AfterSceneExport(GLTFSceneExporter exporter, GLTFRoot gltfRoot) + { + var globalEmitterBehaviors = Object.FindObjectsOfType(); + + if (globalEmitterBehaviors.Length > 0) + { + var globalEmitterIds = new List(); + + foreach (var emitterBehavior in globalEmitterBehaviors) + { + var audioSourceIds = AddAudioSources(gltfRoot, emitterBehavior.sources); + + var emitterId = new AudioEmitterId + { + Id = audioEmitters.Count, + Root = gltfRoot + }; + + globalEmitterIds.Add(emitterId); + + var globalEmitter = new KHR_AudioEmitter + { + type = "global", + sources = audioSourceIds, + gain = emitterBehavior.gain + }; + + audioEmitters.Add(globalEmitter); + } + + var extension = new KHR_SceneAudioEmittersRef + { + emitters = globalEmitterIds + }; + + var scene = gltfRoot.Scenes[gltfRoot.Scene.Id]; + + scene.AddExtension(KHR_audio.ExtensionName, extension); + exporter.DeclareExtensionUsage(KHR_audio.ExtensionName); + } + + if (audioEmitters.Count > 0) + { + var audioData = new List(); + + for (int i = 0; i < audioDataClips.Count; i++) + { + var audioClip = audioDataClips[i]; + + var path = AssetDatabase.GetAssetPath(audioClip.GetInstanceID()); + + var fileExtension = Path.GetExtension(path); + + if (fileExtension != ".mp3") + { + audioDataClips.Clear(); + audioSourceObjects.Clear(); + audioEmitters.Clear(); + throw new Exception("Unsupported audio file type \"" + fileExtension + "\", only .mp3 is supported."); + } + + var fileName = Path.GetFileName(path); + var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); + var result = exporter.ExportFile(fileName, "audio/mpeg", fileStream); + var audio = new KHR_AudioData + { + uri = result.uri, + mimeType = result.mimeType, + bufferView = result.bufferView, + }; + + audioData.Add(audio); + } + + var audioSources = new List(); + + for (int i = 0; i < audioSourceObjects.Count; i++) + { + var audioSourceObject = audioSourceObjects[i]; + var audioDataIndex = audioDataClips.IndexOf(audioSourceObject.clip); + + var audioSource = new KHR_AudioSource + { + audio = audioDataIndex == -1 ? null : new AudioDataId { Id = audioDataIndex, Root = gltfRoot }, + autoPlay = audioSourceObject.autoPlay, + loop = audioSourceObject.loop, + gain = audioSourceObject.gain, + }; + + audioSources.Add(audioSource); + } + + var extension = new KHR_audio + { + audio = new List(audioData), + sources = new List(audioSources), + emitters = new List(audioEmitters), + }; + + gltfRoot.AddExtension(KHR_audio.ExtensionName, extension); + } + + audioDataClips.Clear(); + audioSourceObjects.Clear(); + audioEmitters.Clear(); + } + + private static List AddAudioSources(GLTFRoot gltfRoot, List sources) + { + var audioSourceIds = new List(); + + foreach (var audioSource in sources) + { + var audioSourceIndex = audioSourceObjects.IndexOf(audioSource); + + if (audioSourceIndex == -1) + { + audioSourceIndex = audioSourceObjects.Count; + audioSourceObjects.Add(audioSource); + } + + if (!audioDataClips.Contains(audioSource.clip)) + { + audioDataClips.Add(audioSource.clip); + } + + var sourceId = new AudioSourceId + { + Id = audioSourceIndex, + Root = gltfRoot + }; + + audioSourceIds.Add(sourceId); + } + + return audioSourceIds; + } + } + + public enum PositionalAudioDistanceModel + { + linear, + inverse, + exponential, + } +} + +#endif \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRAudioPlugin.cs.meta b/Samples~/KHR_audio/KHRAudioPlugin.cs.meta new file mode 100644 index 000000000..7b2759e7c --- /dev/null +++ b/Samples~/KHR_audio/KHRAudioPlugin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 664d6e75fec3044eb9274db51fbb70da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/KHR_audio/KHRAudioSchemas.cs b/Samples~/KHR_audio/KHRAudioSchemas.cs new file mode 100644 index 000000000..0e02a9593 --- /dev/null +++ b/Samples~/KHR_audio/KHRAudioSchemas.cs @@ -0,0 +1,322 @@ + +using System; +using System.Collections.Generic; +using GLTF.Schema; +using Newtonsoft.Json.Linq; +using UnityEngine; + +namespace UnityGLTF.Plugins.Experimental +{ + [Serializable] + public class AudioEmitterId : GLTFId { + public AudioEmitterId() + { + } + + public AudioEmitterId(AudioEmitterId id, GLTFRoot newRoot) : base(id, newRoot) + { + } + + public override KHR_AudioEmitter Value + { + get + { + if (Root.Extensions.TryGetValue(KHR_audio.ExtensionName, out IExtension iextension)) + { + KHR_audio extension = iextension as KHR_audio; + return extension.emitters[Id]; + } + else + { + throw new Exception("KHR_audio not found on root object"); + } + } + } + } + + [Serializable] + public class AudioSourceId : GLTFId { + public AudioSourceId() + { + } + + public AudioSourceId(AudioSourceId id, GLTFRoot newRoot) : base(id, newRoot) + { + } + + public override KHR_AudioSource Value + { + get + { + if (Root.Extensions.TryGetValue(KHR_audio.ExtensionName, out IExtension iextension)) + { + KHR_audio extension = iextension as KHR_audio; + return extension.sources[Id]; + } + else + { + throw new Exception("KHR_audio not found on root object"); + } + } + } + } + + [Serializable] + public class AudioDataId : GLTFId { + public AudioDataId() + { + } + + public AudioDataId(AudioDataId id, GLTFRoot newRoot) : base(id, newRoot) + { + } + + public override KHR_AudioData Value + { + get + { + if (Root.Extensions.TryGetValue(KHR_audio.ExtensionName, out IExtension iextension)) + { + KHR_audio extension = iextension as KHR_audio; + return extension.audio[Id]; + } + else + { + throw new Exception("KHR_audio not found on root object"); + } + } + } + } + + [Serializable] + public class KHR_SceneAudioEmittersRef : IExtension { + public List emitters; + + public JProperty Serialize() { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_audio.ExtensionName, jo); + + JArray arr = new JArray(); + + foreach (var emitter in emitters) { + arr.Add(emitter.Id); + } + + jo.Add(new JProperty(nameof(emitters), arr)); + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_SceneAudioEmittersRef() { emitters = emitters }; + } + } + + [Serializable] + public class KHR_NodeAudioEmitterRef : IExtension { + public AudioEmitterId emitter; + + public JProperty Serialize() { + var jo = new JObject(); + JProperty jProperty = new JProperty(KHR_audio.ExtensionName, jo); + jo.Add(new JProperty(nameof(emitter), emitter.Id)); + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_NodeAudioEmitterRef() { emitter = emitter }; + } + } + + [Serializable] + public class KHR_AudioEmitter : GLTFChildOfRootProperty { + + public string type; + public float gain; + public List sources; + + public virtual JObject Serialize() { + var jo = new JObject(); + + jo.Add(nameof(type), type); + + if (gain != 1.0f) { + jo.Add(nameof(gain), gain); + } + + if (sources != null && sources.Count > 0) { + JArray arr = new JArray(); + + foreach (var source in sources) { + arr.Add(source.Id); + } + + jo.Add(new JProperty(nameof(sources), arr)); + } + + return jo; + } + } + + [Serializable] + public class KHR_PositionalAudioEmitter : KHR_AudioEmitter { + + public float coneInnerAngle; + public float coneOuterAngle; + public float coneOuterGain; + public PositionalAudioDistanceModel distanceModel; + public float maxDistance; + public float refDistance; + public float rolloffFactor; + + public override JObject Serialize() { + var jo = base.Serialize(); + + var positional = new JObject(); + + if (!Mathf.Approximately(coneInnerAngle, Mathf.PI * 2)) { + positional.Add(new JProperty(nameof(coneInnerAngle), coneInnerAngle)); + } + + if (!Mathf.Approximately(coneInnerAngle, Mathf.PI * 2)) { + positional.Add(new JProperty(nameof(coneOuterAngle), coneOuterAngle)); + } + + if (coneOuterGain != 0.0f) { + positional.Add(new JProperty(nameof(coneOuterGain), coneOuterGain)); + } + + if (distanceModel != PositionalAudioDistanceModel.inverse) { + positional.Add(new JProperty(nameof(distanceModel), distanceModel.ToString())); + } + + if (maxDistance != 10000.0f) { + positional.Add(new JProperty(nameof(maxDistance), maxDistance)); + } + + if (refDistance != 1.0f) { + positional.Add(new JProperty(nameof(refDistance), refDistance)); + } + + if (rolloffFactor != 1.0f) { + positional.Add(new JProperty(nameof(rolloffFactor), rolloffFactor)); + } + + jo.Add("positional", positional); + + return jo; + } + } + + [Serializable] + public class KHR_AudioSource : GLTFChildOfRootProperty { + + public bool autoPlay; + public float gain; + public bool loop; + public AudioDataId audio; + + public JObject Serialize() { + var jo = new JObject(); + + if (autoPlay) { + jo.Add(nameof(autoPlay), autoPlay); + } + + if (gain != 1.0f) { + jo.Add(nameof(gain), gain); + } + + if (loop) { + jo.Add(nameof(loop), loop); + } + + if (audio != null) { + jo.Add(nameof(audio), audio.Id); + } + + return jo; + } + } + + [Serializable] + public class KHR_AudioData : GLTFChildOfRootProperty { + + public string uri; + public string mimeType; + public BufferViewId bufferView; + + public JObject Serialize() { + var jo = new JObject(); + + if (uri != null) { + jo.Add(nameof(uri), uri); + } else { + jo.Add(nameof(mimeType), mimeType); + jo.Add(nameof(bufferView), bufferView.Id); + } + + return jo; + } + } + + [Serializable] + public class KHR_audio : IExtension + { + public const string ExtensionName = "KHR_audio"; + + public List audio; + public List sources; + public List emitters; + + public JProperty Serialize() + { + var jo = new JObject(); + JProperty jProperty = new JProperty(ExtensionName, jo); + + if (audio != null && audio.Count > 0) { + JArray audioArr = new JArray(); + + foreach (var audioData in audio) { + audioArr.Add(audioData.Serialize()); + } + + jo.Add(new JProperty(nameof(audio), audioArr)); + } + + + if (sources != null && sources.Count > 0) { + JArray sourceArr = new JArray(); + + foreach (var source in sources) { + sourceArr.Add(source.Serialize()); + } + + jo.Add(new JProperty(nameof(sources), sourceArr)); + } + + if (emitters != null && emitters.Count > 0) { + JArray emitterArr = new JArray(); + + foreach (var emitter in emitters) { + emitterArr.Add(emitter.Serialize()); + } + + jo.Add(new JProperty(nameof(emitters), emitterArr)); + } + + return jProperty; + } + + public IExtension Clone(GLTFRoot root) + { + return new KHR_audio() { + audio = audio, + sources = sources, + emitters = emitters, + }; + } + } +} diff --git a/Samples~/KHR_audio/KHRAudioSchemas.cs.meta b/Samples~/KHR_audio/KHRAudioSchemas.cs.meta new file mode 100644 index 000000000..6a4660184 --- /dev/null +++ b/Samples~/KHR_audio/KHRAudioSchemas.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 41f754afffa448e4b451767beb58178e +timeCreated: 1703888738 \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs b/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs new file mode 100644 index 000000000..a613b1089 --- /dev/null +++ b/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UnityGLTF.Plugins.Experimental +{ + public class KHRGlobalAudioEmitterBehaviour : MonoBehaviour + { + public List sources; + public float gain = 1.0f; + } +} \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs.meta b/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs.meta new file mode 100644 index 000000000..824e39d1d --- /dev/null +++ b/Samples~/KHR_audio/KHRGlobalAudioEmitterBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3b79d559c5804cf9875b0d4a3d6d6b99 +timeCreated: 1703889073 \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs b/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs new file mode 100644 index 000000000..9692be16b --- /dev/null +++ b/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs @@ -0,0 +1,78 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UnityGLTF.Plugins.Experimental +{ + public class KHRPositionalAudioEmitterBehaviour : MonoBehaviour + { + public List sources; + public float gain = 1.0f; + public float coneInnerAngle = 120.0f; + public float coneOuterAngle = 180.0f; + public float coneOuterGain = 0.0f; + public PositionalAudioDistanceModel distanceModel = PositionalAudioDistanceModel.inverse; + public float refDistance = 1.0f; + public float maxDistance = 10000.0f; + public float rolloffFactor = 1.0f; + + private void OnDrawGizmos() { + #if UNITY_EDITOR + UnityEditor.Handles.color = Color.green; + + UnityEditor.Handles.DrawWireArc( + transform.position, // Center point + transform.up, // Up vector + DirFromAngle(transform, -coneInnerAngle / 2), // Left starting point + coneInnerAngle, // End angle + refDistance // Radius + ); + + UnityEditor.Handles.DrawLine( + transform.position, + transform.position + (DirFromAngle(transform, -coneInnerAngle / 2) * refDistance) + ); + + UnityEditor.Handles.DrawLine( + transform.position, + transform.position + (DirFromAngle(transform, coneInnerAngle / 2) * refDistance) + ); + + UnityEditor.Handles.color = Color.yellow; + + var halfOuterAngle = (coneOuterAngle - coneInnerAngle) / 2; + + UnityEditor.Handles.DrawWireArc( + transform.position, // Center point + transform.up, // Up vector + DirFromAngle(transform, -coneOuterAngle / 2), // Left starting point + halfOuterAngle, // End angle + refDistance // Radius + ); + + UnityEditor.Handles.DrawWireArc( + transform.position, // Center point + transform.up, // Up vector + DirFromAngle(transform, coneOuterAngle / 2), // Left starting point + -halfOuterAngle, // End angle + refDistance // Radius + ); + + UnityEditor.Handles.DrawLine( + transform.position, + transform.position + (DirFromAngle(transform, -coneOuterAngle / 2) * refDistance) + ); + + UnityEditor.Handles.DrawLine( + transform.position, + transform.position + (DirFromAngle(transform, coneOuterAngle / 2) * refDistance) + ); + #endif + } + + public Vector3 DirFromAngle(Transform _transform, float angleInDegrees) + { + var angle = _transform.localEulerAngles.y + angleInDegrees; + return new Vector3(Mathf.Sin(angle * Mathf.Deg2Rad), 0, Mathf.Cos(angle * Mathf.Deg2Rad)); + } + } +} \ No newline at end of file diff --git a/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs.meta b/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs.meta new file mode 100644 index 000000000..5ee3e33fb --- /dev/null +++ b/Samples~/KHR_audio/KHRPositionalAudioEmitterBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e1ccaea265644ccd83d78bbec6045999 +timeCreated: 1703888952 \ No newline at end of file diff --git a/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef b/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef new file mode 100644 index 000000000..d5177d1e4 --- /dev/null +++ b/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef @@ -0,0 +1,19 @@ +{ + "name": "UnityGLTF.Plugins.KHR_audio", + "rootNamespace": "", + "references": [ + "GUID:18d18f811ba286c49814567a3cfba688", + "GUID:40f39bff7bc9be34182ebe488fcf8228" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "Newtonsoft.Json.dll" + ], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef.meta b/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef.meta new file mode 100644 index 000000000..2e7061b17 --- /dev/null +++ b/Samples~/KHR_audio/UnityGLTF.Plugins.KHR_audio.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76673ba94a1121243b883a319da22cec +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests.meta b/Tests.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests.meta rename to Tests.meta diff --git a/Tests/Assets.meta b/Tests/Assets.meta new file mode 100644 index 000000000..2eaa48104 --- /dev/null +++ b/Tests/Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5049c2c96b54dd1428aeac63530a41c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Assets/Animation.meta b/Tests/Assets/Animation.meta new file mode 100644 index 000000000..21ce5f28b --- /dev/null +++ b/Tests/Assets/Animation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a67a809dcd769564dadcf5cfe3474f2f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Assets/Animation/AnimationA.anim b/Tests/Assets/Animation/AnimationA.anim new file mode 100644 index 000000000..79c712f1c --- /dev/null +++ b/Tests/Assets/Animation/AnimationA.anim @@ -0,0 +1,205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnimationA + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.083333336 + value: {x: 1, y: 1, z: 1} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.16666667 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.16666667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Tests/Assets/Animation/AnimationA.anim.meta b/Tests/Assets/Animation/AnimationA.anim.meta new file mode 100644 index 000000000..f2b28d3a4 --- /dev/null +++ b/Tests/Assets/Animation/AnimationA.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47f8840699648e9479082ce65db4b87f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Assets/Animation/AnimationB.anim b/Tests/Assets/Animation/AnimationB.anim new file mode 100644 index 000000000..93c3d0bb3 --- /dev/null +++ b/Tests/Assets/Animation/AnimationB.anim @@ -0,0 +1,235 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnimationB + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.083333336 + value: {x: 0, y: 180, z: 0} + inSlope: {x: 0, y: 2160, z: 0} + outSlope: {x: 0, y: 2160, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.16666667 + value: {x: 0, y: 360, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 4 + script: {fileID: 0} + typeID: 4 + customType: 4 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.16666667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 180 + inSlope: 2160 + outSlope: 2160 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 360 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: localEulerAnglesRaw.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalEulerAngles.z + path: + classID: 4 + script: {fileID: 0} + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Tests/Assets/Animation/AnimationB.anim.meta b/Tests/Assets/Animation/AnimationB.anim.meta new file mode 100644 index 000000000..1beb4dc8a --- /dev/null +++ b/Tests/Assets/Animation/AnimationB.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3f5e34e9e9a96b48bb505926753a220 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Assets/Animation/AnimatorController.controller b/Tests/Assets/Animation/AnimatorController.controller new file mode 100644 index 000000000..e9ae94397 --- /dev/null +++ b/Tests/Assets/Animation/AnimatorController.controller @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-4505066937524422948 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 7037734344206336477} + m_Position: {x: 70, y: 190, z: 0} + - serializedVersion: 1 + m_State: {fileID: 716150960759917414} + m_Position: {x: 70, y: 240, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 7037734344206336477} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnimatorController + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -4505066937524422948} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &716150960759917414 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnimationB + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: e3f5e34e9e9a96b48bb505926753a220, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &7037734344206336477 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: AnimationA + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 47f8840699648e9479082ce65db4b87f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Tests/Assets/Animation/AnimatorController.controller.meta b/Tests/Assets/Animation/AnimatorController.controller.meta new file mode 100644 index 000000000..347208639 --- /dev/null +++ b/Tests/Assets/Animation/AnimatorController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93f375e40167ad14c81e25858e1f9ac1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Assets/Animation/SimpleAnimation.glb b/Tests/Assets/Animation/SimpleAnimation.glb new file mode 100644 index 000000000..ea98f06ef Binary files /dev/null and b/Tests/Assets/Animation/SimpleAnimation.glb differ diff --git a/Tests/Assets/Animation/SimpleAnimation.glb.meta b/Tests/Assets/Animation/SimpleAnimation.glb.meta new file mode 100644 index 000000000..6b59c6e82 --- /dev/null +++ b/Tests/Assets/Animation/SimpleAnimation.glb.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 941ea53b9d7aafa4886b8bdd2c0f2963 +importerOverride: UnityGLTFEditor:UnityGLTF:GLTFImporter +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 804e1ce4c496647cfa3f1a1134187c71, type: 3} + _removeEmptyRootObjects: 1 + _scaleFactor: 1 + _maximumLod: 300 + _readWriteEnabled: 1 + _generateColliders: 0 + _swapUvs: 0 + _generateLightmapUVs: 0 + _importNormals: 0 + _importTangents: 0 + _importAnimations: 2 + _addAnimatorComponent: 0 + _animationLoopTime: 1 + _animationLoopPose: 0 + _importMaterials: 1 + _useSceneNameIdentifier: 1 + optimizeGameObjects: 0 + materials: + - {fileID: 3297912226980038121, guid: 941ea53b9d7aafa4886b8bdd2c0f2963, type: 3} + textures: [] + hasSceneData: 1 + hasAnimationData: 1 + hasMaterialData: 1 + hasTextureData: 0 + animations: [] + _extensions: [] + _textures: [] + _mainAssetIdentifier: scenes/SimpleAnimation diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Editor.meta b/Tests/Editor.meta similarity index 77% rename from UnityGLTF/Assets/UnityGLTF/Samples/Editor.meta rename to Tests/Editor.meta index 4043dc078..48937a5d9 100644 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Editor.meta +++ b/Tests/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8ddf7bbf31c43504480e64df86035eed +guid: a668006c4a456da419e032798de345ff folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Tests/Editor/AssetImportTests.cs b/Tests/Editor/AssetImportTests.cs new file mode 100644 index 000000000..bbd6bfb56 --- /dev/null +++ b/Tests/Editor/AssetImportTests.cs @@ -0,0 +1,107 @@ +using System.Collections; +using System.Linq; +using NUnit.Framework; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; +using UnityGLTF; + +public class AssetImportTests +{ + private AnimationMethod originalAnimationMethod; + private static string guid = "941ea53b9d7aafa4886b8bdd2c0f2963"; + + [SetUp] + public void Setup() + { + var path = AssetDatabase.GUIDToAssetPath(guid); + var importer = AssetImporter.GetAtPath(path) as GLTFImporter; + + var so = new SerializedObject(importer); + originalAnimationMethod = (AnimationMethod) so.FindProperty("_importAnimations").intValue; + } + + [TearDown] + public void Teardown() + { + SetAnimationMethod(originalAnimationMethod); + } + + private string SetAnimationMethod(AnimationMethod method) + { + var path = AssetDatabase.GUIDToAssetPath(guid); + var importer = AssetImporter.GetAtPath(path) as GLTFImporter; + + var so = new SerializedObject(importer); + so.FindProperty("_importAnimations").intValue = (int) method; + so.ApplyModifiedPropertiesWithoutUndo(); + + importer.SaveAndReimport(); + AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); + return path; + } + + + [UnityTest] + public IEnumerator ImportOptionLegacyCreatesAnimations() + { + var path = SetAnimationMethod(AnimationMethod.Legacy); + yield return null; + + // access result + var asset = AssetDatabase.LoadAssetAtPath(path); + var animator = asset.GetComponent(); + var animation = asset.GetComponent(); + Assert.IsFalse(animator); + Assert.IsTrue(animation); + var clips = AssetDatabase + .LoadAllAssetsAtPath(path) + .Where(x => x is AnimationClip) + .Where(x => x) + .ToList(); + Assert.AreEqual(2, clips.Count); + } + + [UnityTest] + public IEnumerator ImportOptionMecanimCreatesAnimations() + { + var path = SetAnimationMethod(AnimationMethod.Mecanim); + yield return null; + + // access result + var asset = AssetDatabase.LoadAssetAtPath(path); + var animator = asset.GetComponent(); + var animation = asset.GetComponent(); + Assert.IsTrue(animator); + Assert.IsFalse(animation); + + // need to load these directly as we can't persist the animator controller / state machine. + var clips = AssetDatabase + .LoadAllAssetsAtPath(path) + .Where(x => x is AnimationClip) + .Where(x => x) + .ToList(); + Assert.AreEqual(2, clips.Count); + Assert.IsTrue(clips.TrueForAll(x => !((AnimationClip)x).legacy)); + } + + [UnityTest] + public IEnumerator ImportOptionNoneDoesNotCreateAnimations() + { + var path = SetAnimationMethod(AnimationMethod.None); + yield return null; + + // access result + var asset = AssetDatabase.LoadAssetAtPath(path); + var animator = asset.GetComponent(); + var animation = asset.GetComponent(); + Assert.IsFalse(animator); + Assert.IsFalse(animation); + var clips = AssetDatabase + .LoadAllAssetsAtPath(path) + .Where(x => x is AnimationClip) + .Where(x => x) + .ToList(); + Assert.AreEqual(0, clips.Count); + } +} diff --git a/Tests/Editor/AssetImportTests.cs.meta b/Tests/Editor/AssetImportTests.cs.meta new file mode 100644 index 000000000..be2921ff7 --- /dev/null +++ b/Tests/Editor/AssetImportTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26ea85d3a06f28440b399cf8fa98cd09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Editor/UnityGLTFTests.Editor.asmdef b/Tests/Editor/UnityGLTFTests.Editor.asmdef new file mode 100644 index 000000000..eac3a8ee7 --- /dev/null +++ b/Tests/Editor/UnityGLTFTests.Editor.asmdef @@ -0,0 +1,35 @@ +{ + "name": "UnityGLTFTests.Editor", + "rootNamespace": "", + "references": [ + "UnityGLTFScripts", + "UnityGLTFEditor", + "GLTFSerialization", + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "GLTFSerialization.dll", + "Newtonsoft.Json.dll", + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS", + "UNITY_2019_4_OR_NEWER" + ], + "versionDefines": [ + { + "name": "Select...", + "expression": "0.0.0", + "define": "HAVE_ASSET_GENERATOR" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Tests/Editor/UnityGLTFTests.Editor.asmdef.meta b/Tests/Editor/UnityGLTFTests.Editor.asmdef.meta new file mode 100644 index 000000000..52fa93c45 --- /dev/null +++ b/Tests/Editor/UnityGLTFTests.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7082da890b1266f4f9f1ec41ec6b7d7a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime.meta b/Tests/Runtime.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime.meta rename to Tests/Runtime.meta diff --git a/Tests/Runtime/GLTFRootTests.cs b/Tests/Runtime/GLTFRootTests.cs new file mode 100644 index 000000000..9764424b0 --- /dev/null +++ b/Tests/Runtime/GLTFRootTests.cs @@ -0,0 +1,24 @@ +using System.IO; +using System.Text; +using GLTF; +using NUnit.Framework; + +public class GLTFRootTest { + + [Test] + public void TestMinimumGLTF() + { + var testStr = @" + { + ""asset"": { + ""version"": ""2.0"" + } + } + "; + + var stream = new MemoryStream(Encoding.UTF8.GetBytes(testStr)); + GLTFParser.ParseJson(stream, out var testRoot); + + Assert.AreEqual(testRoot.Asset.Version, "2.0"); + } +} diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFRootTests.cs.meta b/Tests/Runtime/GLTFRootTests.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFRootTests.cs.meta rename to Tests/Runtime/GLTFRootTests.cs.meta diff --git a/Tests/Runtime/UnityGLTFTests.asmdef b/Tests/Runtime/UnityGLTFTests.asmdef new file mode 100644 index 000000000..df0851ec8 --- /dev/null +++ b/Tests/Runtime/UnityGLTFTests.asmdef @@ -0,0 +1,37 @@ +{ + "name": "UnityGLTFTests", + "rootNamespace": "", + "references": [ + "UnityGLTFScripts", + "UnityGLTFEditor", + "GLTFSerialization", + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "GLTFSerialization.dll", + "Newtonsoft.Json.dll", + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [ + { + "name": "Select...", + "expression": "0.0.0", + "define": "HAVE_ASSET_GENERATOR" + }, + { + "name": "com.unity.modules.unitywebrequest", + "expression": "0.0.0", + "define": "UNITY_WEBREQUEST" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/UnityGLTFTests.asmdef.meta b/Tests/Runtime/UnityGLTFTests.asmdef.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/UnityGLTFTests.asmdef.meta rename to Tests/Runtime/UnityGLTFTests.asmdef.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFAssetGeneratorTests.cs b/Tests/Runtime/legacy~/GLTFAssetGeneratorTests.cs similarity index 99% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFAssetGeneratorTests.cs rename to Tests/Runtime/legacy~/GLTFAssetGeneratorTests.cs index f9bcc3ae9..dc7121b91 100644 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFAssetGeneratorTests.cs +++ b/Tests/Runtime/legacy~/GLTFAssetGeneratorTests.cs @@ -1,4 +1,4 @@ -#if UNITY_EDITOR +#if UNITY_EDITOR && HAVE_ASSET_GENERATOR using AssetGenerator; using Newtonsoft.Json; using NUnit.Framework; diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFAssetGeneratorTests.cs.meta b/Tests/Runtime/legacy~/GLTFAssetGeneratorTests.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFAssetGeneratorTests.cs.meta rename to Tests/Runtime/legacy~/GLTFAssetGeneratorTests.cs.meta diff --git a/Tests/Runtime/legacy~/GLTFBenchmark.cs b/Tests/Runtime/legacy~/GLTFBenchmark.cs new file mode 100644 index 000000000..36610cef3 --- /dev/null +++ b/Tests/Runtime/legacy~/GLTFBenchmark.cs @@ -0,0 +1,82 @@ +#if UNITY_EDITOR +using System; +using UnityEngine; +using UnityEditor; +using System.Collections; +using UnityEngine.Networking; +using System.Text; +using System.IO; +using GLTF; +using GLTF.Schema; + +public class GLTFBenchmark : MonoBehaviour +{ + public string[] GLTFUrls = new string[] + { + "http://localhost:8080/BoomBox/glTF/BoomBox.gltf", + "http://localhost:8080/Lantern/glTF/Lantern.gltf", + "http://localhost:8080/Corset/glTF/Corset.gltf" + }; + public int NumberOfIterations = 5; + public bool SaveCSV = true; + +#if UNITY_WEBREQUEST + IEnumerator Start () + { + var timer = new System.Diagnostics.Stopwatch(); + + var csv = new StringBuilder(); + + csv.AppendLine("Name, Time (ms)"); + + Debug.Log("Start Parsing Benchmark."); + + foreach (var gltfUrl in GLTFUrls) + { + var www = UnityWebRequest.Get(gltfUrl); + +#if UNITY_2017_2_OR_NEWER + yield return www.SendWebRequest(); +#else + yield return www.Send(); +#endif + + Debug.LogFormat("Benchmarking: {0}", gltfUrl); + long totalTime = 0; + for (var i = 0; i < NumberOfIterations; i++) + { + timer.Start(); + GLTFRoot gltfRoot = null; + GLTFParser.ParseJson(new MemoryStream(www.downloadHandler.data), out gltfRoot); + timer.Stop(); + + Debug.LogFormat("Iteration {0} took: {1}ms", i, timer.ElapsedMilliseconds); + totalTime += timer.ElapsedMilliseconds; + } + + var avgTime = (float)totalTime / NumberOfIterations; + Debug.LogFormat("Average parse time {0}ms", avgTime); + csv.AppendFormat("{0}, {1}\n", gltfUrl, avgTime); + } + + + + Debug.Log("End Parsing Benchmark."); + + Debug.Log("Done."); + + if (SaveCSV) + { + var fileName = string.Format("glTFBench_{0}iter", NumberOfIterations); + var path = EditorUtility.SaveFilePanel("Save GLTF Benchmark .csv", "", fileName, "csv"); + + if (path != null) + { + File.WriteAllText(path, csv.ToString()); + Debug.LogFormat("Benchmark written to: {0}", path); + } + } + } +#endif +} +#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFBenchmark.cs.meta b/Tests/Runtime/legacy~/GLTFBenchmark.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFBenchmark.cs.meta rename to Tests/Runtime/legacy~/GLTFBenchmark.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFExporterIntegrationTest.cs b/Tests/Runtime/legacy~/GLTFExporterIntegrationTest.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFExporterIntegrationTest.cs rename to Tests/Runtime/legacy~/GLTFExporterIntegrationTest.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFExporterIntegrationTest.cs.meta b/Tests/Runtime/legacy~/GLTFExporterIntegrationTest.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFExporterIntegrationTest.cs.meta rename to Tests/Runtime/legacy~/GLTFExporterIntegrationTest.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.cs b/Tests/Runtime/legacy~/GLTFTestComponent.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.cs rename to Tests/Runtime/legacy~/GLTFTestComponent.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.cs.meta b/Tests/Runtime/legacy~/GLTFTestComponent.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.cs.meta rename to Tests/Runtime/legacy~/GLTFTestComponent.cs.meta diff --git a/Tests/Runtime/legacy~/GLTFTestComponent.prefab b/Tests/Runtime/legacy~/GLTFTestComponent.prefab new file mode 100644 index 000000000..41fef94c2 --- /dev/null +++ b/Tests/Runtime/legacy~/GLTFTestComponent.prefab @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1000013333174952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000010219582968} + m_Layer: 0 + m_Name: GLTFTestComponent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010219582968 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013333174952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.prefab.meta b/Tests/Runtime/legacy~/GLTFTestComponent.prefab.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.prefab.meta rename to Tests/Runtime/legacy~/GLTFTestComponent.prefab.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Manifest.cs b/Tests/Runtime/legacy~/Manifest.cs similarity index 96% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Manifest.cs rename to Tests/Runtime/legacy~/Manifest.cs index c8226d7ee..50925a1c6 100644 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Manifest.cs +++ b/Tests/Runtime/legacy~/Manifest.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AssetGenerator +namespace UnityGLTF.AssetGenerator { internal class Manifest { diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Manifest.cs.meta b/Tests/Runtime/legacy~/Manifest.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Manifest.cs.meta rename to Tests/Runtime/legacy~/Manifest.cs.meta diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SceneSettingsLoader.cs b/Tests/Runtime/legacy~/SceneSettingsLoader.cs similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SceneSettingsLoader.cs rename to Tests/Runtime/legacy~/SceneSettingsLoader.cs diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SceneSettingsLoader.cs.meta b/Tests/Runtime/legacy~/SceneSettingsLoader.cs.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SceneSettingsLoader.cs.meta rename to Tests/Runtime/legacy~/SceneSettingsLoader.cs.meta diff --git a/UnityGLTF/.gitignore b/UnityGLTF/.gitignore deleted file mode 100644 index 334adc544..000000000 --- a/UnityGLTF/.gitignore +++ /dev/null @@ -1,52 +0,0 @@ -/[Ll]ibrary/ -/[Tt]emp/ -/[Oo]bj/ -/[Bb]uild/ -/[Bb]uilds/ -/[Pp]lugins/ -/Assets/AssetStoreTools* -/Assets/ShaderForge* -/Assets/VSCode* -/UnityPackageManager/ - -# Visual Studio 2015 cache directory -/.vs/ -# Visual Studio Code directory -/.vscode/ - -# Autogenerated VS/MD/Consulo solution and project files -ExportedObj/ -.consulo/ -*.csproj -*.unityproj -*.sln -*.suo -*.tmp -*.user -*.userprefs -*.pidb -*.booproj -*.svd -*.pdb -*.pfx* - -!*-dll.csproj -!*-dll.sln - -# Unity3D generated meta files -*.pidb.meta - -# Unity3D Generated File On Crash Reports -sysinfo.txt - -# Builds -*.apk -*.unitypackage - -/www/node_modules/ - -# UWP-specific folders and files -/[Aa]pp/ -/UWP/ -/WSA/ -WSATestCertificate.pfx* diff --git a/UnityGLTF/Assets/Main.unity b/UnityGLTF/Assets/Main.unity deleted file mode 100644 index 5cc8c1520..000000000 --- a/UnityGLTF/Assets/Main.unity +++ /dev/null @@ -1,383 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45140028, g: 0.5008927, b: 0.5723123, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &468343020 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4225727463385260, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114843937143698750, guid: 426ae0d14f1f31f48af072147ac6abe9, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Asset-Generator/Output/Positive/Material/Material_01.gltf - objectReference: {fileID: 0} - - target: {fileID: 114843937143698750, guid: 426ae0d14f1f31f48af072147ac6abe9, - type: 3} - propertyPath: UseStream - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 114843937143698750, guid: 426ae0d14f1f31f48af072147ac6abe9, - type: 3} - propertyPath: loadOnStart - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 426ae0d14f1f31f48af072147ac6abe9, type: 3} ---- !u!1 &979359784 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 979359786} - - component: {fileID: 979359785} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &979359785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &979359786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1013584300 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1013584302} - - component: {fileID: 1013584301} - - component: {fileID: 1013584303} - m_Layer: 0 - m_Name: Model List - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1013584301 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1013584300} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: df99c459245b3cd40be06aca24a19170, type: 3} - m_Name: - m_EditorClassIdentifier: - loader: {fileID: 1226067820} - pathRoot: http://localhost:8080/glTF-Sample-Models/2.0/ - manifestRelativePath: model-index.json - modelRelativePath: - loadThisFrame: 0 ---- !u!4 &1013584302 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1013584300} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1013584303 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1013584300} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: df99c459245b3cd40be06aca24a19170, type: 3} - m_Name: - m_EditorClassIdentifier: - loader: {fileID: 1226067820} - pathRoot: http://localhost:8080/glTF-Asset-Generator/Output/Positive/ - manifestRelativePath: Manifest.json - modelRelativePath: - loadThisFrame: 0 ---- !u!114 &1226067820 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 114843937143698750, guid: 426ae0d14f1f31f48af072147ac6abe9, - type: 3} - m_PrefabInstance: {fileID: 468343020} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9087a95f22bcee64ebc45f6deec08714, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/Main.unity.meta b/UnityGLTF/Assets/Main.unity.meta deleted file mode 100644 index 8ab405a13..000000000 --- a/UnityGLTF/Assets/Main.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 4b3020fb0b0588247a945afb3e2d8de7 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets.meta b/UnityGLTF/Assets/StreamingAssets.meta deleted file mode 100644 index e6fda221c..000000000 --- a/UnityGLTF/Assets/StreamingAssets.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6f4563e6758c7604cba682950b53d5c9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox.meta deleted file mode 100644 index 65591a2b8..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b40cd46badfb49843afe63fbb89aca0c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md b/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md deleted file mode 100644 index e8eb10e2c..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Boom Box -## Screenshot - -![screenshot](screenshot/screenshot.jpg) - - -## License Information - -Donated by Microsoft for glTF testing. \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md.meta deleted file mode 100644 index 7dafbcb76..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 048ee8a2781da0f4f81730e6eba4e364 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary.meta deleted file mode 100644 index 8e1e505fd..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: be3fd5fdecc42a64e83cb143556b3152 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb deleted file mode 100644 index 3165ba3d3..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb.meta deleted file mode 100644 index 6d536d22a..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-Binary/BoomBox.glb.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: cf65e19d06b890e408058820d80a7827 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness.meta deleted file mode 100644 index f4114f8fd..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9c43a4c4700bbb141b1a78baf9b5b0dd -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin deleted file mode 100644 index 6e4c9026b..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin.meta deleted file mode 100644 index 47c0e8db3..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.bin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 46471996d126eee48959e60b49b42c6c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf deleted file mode 100644 index fa9826f70..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf +++ /dev/null @@ -1,251 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC2", - "max": [ - 0.9999003, - -0.0221377648 - ], - "min": [ - 0.0006585993, - -0.996773958 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.9999782 - ], - "min": [ - -1.0, - -1.0, - -0.9980823 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC4", - "max": [ - 1.0, - 0.9999976, - 1.0, - 1.0 - ], - "min": [ - -0.9991289, - -0.999907851, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 0.009921154, - 0.00977163, - 0.0100762453 - ], - "min": [ - -0.009921154, - -0.00977163, - -0.0100762453 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 18108, - "type": "SCALAR", - "max": [ - 3574 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 28600 - }, - { - "buffer": 0, - "byteOffset": 28600, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 71500, - "byteLength": 57200 - }, - { - "buffer": 0, - "byteOffset": 128700, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 171600, - "byteLength": 36216 - } - ], - "buffers": [ - { - "uri": "BoomBox.bin", - "byteLength": 207816 - } - ], - "extensionsUsed": [ - "KHR_materials_pbrSpecularGlossiness" - ], - "images": [ - { - "uri": "BoomBox_baseColor.png" - }, - { - "uri": "BoomBox_roughnessMetallic.png" - }, - { - "uri": "BoomBox_normal.png" - }, - { - "uri": "BoomBox_emissive.png" - }, - { - "uri": "BoomBox_occlusion.png" - }, - { - "uri": "BoomBox_diffuse.png" - }, - { - "uri": "BoomBox_specularGlossiness.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "BoomBox" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "occlusionTexture": { - "index": 4 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "BoomBox_Mat", - "extensions": { - "KHR_materials_pbrSpecularGlossiness": { - "diffuseTexture": { - "index": 5 - }, - "specularGlossinessTexture": { - "index": 6 - } - } - } - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "scale": [ - 80.0, - 80.0, - 80.0 - ], - "translation": [ - 0.0, - 0.163, - 0.053 - ], - "name": "BoomBox" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 0 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - }, - { - "source": 4 - }, - { - "source": 5 - }, - { - "source": 6 - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf.meta deleted file mode 100644 index 9c06ab258..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox.gltf.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f8fd8b03b38448f4caa830da5d4c112e -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png deleted file mode 100644 index 992429df5..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png.meta deleted file mode 100644 index ee9f7688e..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_baseColor.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: feee051df7202634aa9a122e9c0c0052 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png deleted file mode 100644 index 6beb436af..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png.meta deleted file mode 100644 index d322116c8..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_diffuse.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 5081c8f145a06694b93a90739753fb3b -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png deleted file mode 100644 index 315a49940..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png.meta deleted file mode 100644 index dcba5e52f..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_emissive.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 77da8e2e19bf040438803256b1d7d0e2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png deleted file mode 100644 index 19d7afbe7..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png.meta deleted file mode 100644 index 9fb46cb6e..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_normal.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b456bdf51ce868b489e83727fc07bb50 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png deleted file mode 100644 index 3500a85ee..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png.meta deleted file mode 100644 index a09739e9c..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_occlusion.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 4b3708394e99ebf4b8f39c390e14c320 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png deleted file mode 100644 index d6ca30922..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png.meta deleted file mode 100644 index c1d2cfc50..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_roughnessMetallic.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 19fe3c9defd2cd24c91de84977f7db82 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png deleted file mode 100644 index 9bea8b9e5..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png.meta deleted file mode 100644 index f7f0dee29..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF-pbrSpecularGlossiness/BoomBox_specularGlossiness.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a14433e6f49a419448cc212fa87ab703 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF.meta deleted file mode 100644 index 7816c4423..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a878a7e10ac79784e9be58b46cab386f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin deleted file mode 100644 index 6e4c9026b..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin.meta deleted file mode 100644 index 283adb6cd..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.bin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9e504b769e4b24b48880ade5276b932e -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf deleted file mode 100644 index 9860299b1..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf +++ /dev/null @@ -1,220 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC2", - "max": [ - 0.9999003, - -0.0221377648 - ], - "min": [ - 0.0006585993, - -0.996773958 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.9999782 - ], - "min": [ - -1.0, - -1.0, - -0.9980823 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC4", - "max": [ - 1.0, - 0.9999976, - 1.0, - 1.0 - ], - "min": [ - -0.9991289, - -0.999907851, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 3575, - "type": "VEC3", - "max": [ - 0.009921154, - 0.00977163, - 0.0100762453 - ], - "min": [ - -0.009921154, - -0.00977163, - -0.0100762453 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 18108, - "type": "SCALAR", - "max": [ - 3574 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 28600 - }, - { - "buffer": 0, - "byteOffset": 28600, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 71500, - "byteLength": 57200 - }, - { - "buffer": 0, - "byteOffset": 128700, - "byteLength": 42900 - }, - { - "buffer": 0, - "byteOffset": 171600, - "byteLength": 36216 - } - ], - "buffers": [ - { - "uri": "BoomBox.bin", - "byteLength": 207816 - } - ], - "images": [ - { - "uri": "BoomBox_baseColor.png" - }, - { - "uri": "BoomBox_occlusionRoughnessMetallic.png" - }, - { - "uri": "BoomBox_normal.png" - }, - { - "uri": "BoomBox_emissive.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "BoomBox" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "occlusionTexture": { - "index": 1 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "BoomBox_Mat" - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "scale": [ - 80.0, - 80.0, - 80.0 - ], - "translation": [ - 0.0, - 0.163, - 0.053 - ], - "name": "BoomBox" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 0 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf.meta deleted file mode 100644 index b305f9984..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox.gltf.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b4758ba561754024a8ac806a62bd9013 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png deleted file mode 100644 index 992429df5..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png.meta deleted file mode 100644 index fe187f8ee..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_baseColor.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 105c4236410325d4fbabec910dd66592 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png deleted file mode 100644 index 315a49940..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png.meta deleted file mode 100644 index 95c6068f5..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_emissive.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 5f15c93a647226e478b2b105c150d244 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png deleted file mode 100644 index 19d7afbe7..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png.meta deleted file mode 100644 index faff21f35..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_normal.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 16ac361b16c20604abbda8152db5a8ae -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png deleted file mode 100644 index 25b5b9504..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png.meta deleted file mode 100644 index e67510aa2..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/glTF/BoomBox_occlusionRoughnessMetallic.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 3e19bc83d018c0a4dbecd334c83dbe9c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot.meta deleted file mode 100644 index 689f0db09..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b9ec50ac376a47a459057d1abf8b1f14 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg b/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg deleted file mode 100644 index fa20ccc15..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg.meta b/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg.meta deleted file mode 100644 index dbd2ac1a1..000000000 --- a/UnityGLTF/Assets/StreamingAssets/BoomBox/screenshot/screenshot.jpg.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b64014b844a771945a719a0be89559d9 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern.meta b/UnityGLTF/Assets/StreamingAssets/Lantern.meta deleted file mode 100644 index 8e767c7eb..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3e64a06a44d5025429c840ebb67c1ab0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/README.md b/UnityGLTF/Assets/StreamingAssets/Lantern/README.md deleted file mode 100644 index e4717fc10..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Lantern -## Screenshot - -![screenshot](screenshot/screenshot.jpg) - - -## License Information - -Donated by Microsoft for glTF testing. \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/README.md.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/README.md.meta deleted file mode 100644 index c7e8e9d14..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2af11b75a64881a47a61a45cba796a4c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary.meta deleted file mode 100644 index f61519075..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 696e0a49898134743b946d09620f0129 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb deleted file mode 100644 index 4063d27e7..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb.meta deleted file mode 100644 index dd481259a..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f5832fc0335be4a4e83d082030973bba -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness.meta deleted file mode 100644 index 045d51dc4..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b37c93b1a06b95a469a6b36c7226861f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin deleted file mode 100644 index 3efe950ce..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin.meta deleted file mode 100644 index 7a7841559..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.bin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d65fa840ebe5f3949af6ac69efc64a75 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf deleted file mode 100644 index c2face9c4..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf +++ /dev/null @@ -1,525 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC2", - "max": [ - 0.992169142, - -0.007998445 - ], - "min": [ - 0.0107366741, - -0.992534757 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC4", - "max": [ - 1.0, - 0.9999658, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.962171, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 7.74559927, - 12.8321095, - 2.31570983 - ], - "min": [ - -7.74559927, - -12.8321095, - -2.31570983 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 2616, - "type": "SCALAR", - "max": [ - 925 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 5, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC2", - "max": [ - 0.8007193, - -0.0581455827 - ], - "min": [ - 0.351246148, - -0.361011624 - ] - }, - { - "bufferView": 6, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.999998 - ], - "min": [ - -1.0, - -1.0, - -0.999998 - ] - }, - { - "bufferView": 7, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC4", - "max": [ - 0.9997526, - 1.0, - 0.999752462, - 1.0 - ], - "min": [ - -0.9995128, - -1.0, - -0.999752462, - 1.0 - ] - }, - { - "bufferView": 8, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 0.129208073, - 0.6523504, - 0.129208073 - ], - "min": [ - -0.129208073, - -0.6523504, - -0.129208073 - ] - }, - { - "bufferView": 9, - "byteOffset": 0, - "componentType": 5123, - "count": 3744, - "type": "SCALAR", - "max": [ - 755 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 10, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC2", - "max": [ - 0.9923278, - -0.00728821754 - ], - "min": [ - 0.3673209, - -0.413352221 - ] - }, - { - "bufferView": 11, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 12, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC4", - "max": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 13, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.03408229, - 2.529281, - 1.03408468 - ], - "min": [ - -1.03408229, - -2.529281, - -1.03408468 - ] - }, - { - "bufferView": 14, - "byteOffset": 0, - "componentType": 5123, - "count": 9822, - "type": "SCALAR", - "max": [ - 2462 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 7408 - }, - { - "buffer": 0, - "byteOffset": 7408, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 18520, - "byteLength": 14816 - }, - { - "buffer": 0, - "byteOffset": 33336, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 44448, - "byteLength": 5232 - }, - { - "buffer": 0, - "byteOffset": 49680, - "byteLength": 6048 - }, - { - "buffer": 0, - "byteOffset": 55728, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 64800, - "byteLength": 12096 - }, - { - "buffer": 0, - "byteOffset": 76896, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 85968, - "byteLength": 7488 - }, - { - "buffer": 0, - "byteOffset": 93456, - "byteLength": 19704 - }, - { - "buffer": 0, - "byteOffset": 113160, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 142716, - "byteLength": 39408 - }, - { - "buffer": 0, - "byteOffset": 182124, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 211680, - "byteLength": 19644 - } - ], - "buffers": [ - { - "uri": "Lantern.bin", - "byteLength": 231324 - } - ], - "extensionsUsed": [ - "KHR_materials_pbrSpecularGlossiness" - ], - "images": [ - { - "uri": "Lantern_baseColor.png" - }, - { - "uri": "Lantern_roughnessMetallic.png" - }, - { - "uri": "Lantern_normal.png" - }, - { - "uri": "Lantern_emissive.png" - }, - { - "uri": "Lantern_diffuse.png" - }, - { - "uri": "Lantern_specularGlossiness.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Body" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 5, - "NORMAL": 6, - "TANGENT": 7, - "POSITION": 8 - }, - "indices": 9, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Chain" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 10, - "NORMAL": 11, - "TANGENT": 12, - "POSITION": 13 - }, - "indices": 14, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Lantern" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.214041144, - 0.214041144, - 0.214041144, - 1.0 - ], - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "LanternPost_Mat", - "extensions": { - "KHR_materials_pbrSpecularGlossiness": { - "diffuseTexture": { - "index": 4 - }, - "specularGlossinessTexture": { - "index": 5 - } - } - } - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "translation": [ - -3.82315421, - 13.01603, - 0.0 - ], - "name": "LanternPole_Body" - }, - { - "children": [], - "mesh": 1, - "translation": [ - -9.582001, - 21.0378723, - 0.0 - ], - "name": "LanternPole_Chain" - }, - { - "children": [], - "mesh": 2, - "translation": [ - -9.582007, - 18.0091515, - 0.0 - ], - "name": "LanternPole_Lantern" - }, - { - "children": [ - 0, - 1, - 2 - ], - "scale": [ - 0.06, - 0.06, - 0.06 - ], - "translation": [ - 0.237, - -0.758, - 0.0 - ], - "name": "Lantern" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 3 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - }, - { - "source": 4 - }, - { - "source": 5 - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf.meta deleted file mode 100644 index abe68cbba..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f0164ca8a2d9ce44d9b82fb192a8b6cd -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png deleted file mode 100644 index 013ec22d4..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png.meta deleted file mode 100644 index ee99fe5bc..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_baseColor.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: feab6dcfbc420034eaa08a62a57dbc2c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png deleted file mode 100644 index 963380953..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png.meta deleted file mode 100644 index 8e15feb52..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_diffuse.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b408ddbe6d67382408aab2f4613170d4 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png deleted file mode 100644 index e1878cad2..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png.meta deleted file mode 100644 index 61598bc83..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_emissive.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: db2d94f1ef6d97c43984eac8e0489567 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png deleted file mode 100644 index 5818db91b..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png.meta deleted file mode 100644 index 65003eee5..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_normal.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 272c3c42a0c196d4d93033e05a1adef1 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png deleted file mode 100644 index 769132d3c..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png.meta deleted file mode 100644 index 2dd919e4d..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_roughnessMetallic.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 925411fe096a4614eb7abec38e5de6ee -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png deleted file mode 100644 index 8af6558f8..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png.meta deleted file mode 100644 index 50edbde4f..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-pbrSpecularGlossiness/Lantern_specularGlossiness.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 23db50bd510ef7f489586b3d687ba28c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF.meta deleted file mode 100644 index 5a91db939..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 87e9cade7334b8e408eff6020b1993b0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin deleted file mode 100644 index 3efe950ce..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin.meta deleted file mode 100644 index 9bd51ea5c..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.bin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: bfac187f2538edd489d7518e28b07c80 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf deleted file mode 100644 index e8f08e54f..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf +++ /dev/null @@ -1,500 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC2", - "max": [ - 0.992169142, - -0.007998445 - ], - "min": [ - 0.0107366741, - -0.992534757 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC4", - "max": [ - 1.0, - 0.9999658, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.962171, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 926, - "type": "VEC3", - "max": [ - 7.74559927, - 12.8321095, - 2.31570983 - ], - "min": [ - -7.74559927, - -12.8321095, - -2.31570983 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 2616, - "type": "SCALAR", - "max": [ - 925 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 5, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC2", - "max": [ - 0.8007193, - -0.0581455827 - ], - "min": [ - 0.351246148, - -0.361011624 - ] - }, - { - "bufferView": 6, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 0.999998 - ], - "min": [ - -1.0, - -1.0, - -0.999998 - ] - }, - { - "bufferView": 7, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC4", - "max": [ - 0.9997526, - 1.0, - 0.999752462, - 1.0 - ], - "min": [ - -0.9995128, - -1.0, - -0.999752462, - 1.0 - ] - }, - { - "bufferView": 8, - "byteOffset": 0, - "componentType": 5126, - "count": 756, - "type": "VEC3", - "max": [ - 0.129208073, - 0.6523504, - 0.129208073 - ], - "min": [ - -0.129208073, - -0.6523504, - -0.129208073 - ] - }, - { - "bufferView": 9, - "byteOffset": 0, - "componentType": 5123, - "count": 3744, - "type": "SCALAR", - "max": [ - 755 - ], - "min": [ - 0 - ] - }, - { - "bufferView": 10, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC2", - "max": [ - 0.9923278, - -0.00728821754 - ], - "min": [ - 0.3673209, - -0.413352221 - ] - }, - { - "bufferView": 11, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 12, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC4", - "max": [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 13, - "byteOffset": 0, - "componentType": 5126, - "count": 2463, - "type": "VEC3", - "max": [ - 1.03408229, - 2.529281, - 1.03408468 - ], - "min": [ - -1.03408229, - -2.529281, - -1.03408468 - ] - }, - { - "bufferView": 14, - "byteOffset": 0, - "componentType": 5123, - "count": 9822, - "type": "SCALAR", - "max": [ - 2462 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 7408 - }, - { - "buffer": 0, - "byteOffset": 7408, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 18520, - "byteLength": 14816 - }, - { - "buffer": 0, - "byteOffset": 33336, - "byteLength": 11112 - }, - { - "buffer": 0, - "byteOffset": 44448, - "byteLength": 5232 - }, - { - "buffer": 0, - "byteOffset": 49680, - "byteLength": 6048 - }, - { - "buffer": 0, - "byteOffset": 55728, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 64800, - "byteLength": 12096 - }, - { - "buffer": 0, - "byteOffset": 76896, - "byteLength": 9072 - }, - { - "buffer": 0, - "byteOffset": 85968, - "byteLength": 7488 - }, - { - "buffer": 0, - "byteOffset": 93456, - "byteLength": 19704 - }, - { - "buffer": 0, - "byteOffset": 113160, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 142716, - "byteLength": 39408 - }, - { - "buffer": 0, - "byteOffset": 182124, - "byteLength": 29556 - }, - { - "buffer": 0, - "byteOffset": 211680, - "byteLength": 19644 - } - ], - "buffers": [ - { - "uri": "Lantern.bin", - "byteLength": 231324 - } - ], - "images": [ - { - "uri": "Lantern_baseColor.png" - }, - { - "uri": "Lantern_roughnessMetallic.png" - }, - { - "uri": "Lantern_normal.png" - }, - { - "uri": "Lantern_emissive.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Body" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 5, - "NORMAL": 6, - "TANGENT": 7, - "POSITION": 8 - }, - "indices": 9, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Chain" - }, - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 10, - "NORMAL": 11, - "TANGENT": 12, - "POSITION": 13 - }, - "indices": 14, - "material": 0, - "mode": 4 - } - ], - "name": "LanternPole_Lantern" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.214041144, - 0.214041144, - 0.214041144, - 1.0 - ], - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "emissiveFactor": [ - 1.0, - 1.0, - 1.0 - ], - "emissiveTexture": { - "index": 3 - }, - "name": "LanternPost_Mat" - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "translation": [ - -3.82315421, - 13.01603, - 0.0 - ], - "name": "LanternPole_Body" - }, - { - "children": [], - "mesh": 1, - "translation": [ - -9.582001, - 21.0378723, - 0.0 - ], - "name": "LanternPole_Chain" - }, - { - "children": [], - "mesh": 2, - "translation": [ - -9.582007, - 18.0091515, - 0.0 - ], - "name": "LanternPole_Lantern" - }, - { - "children": [ - 0, - 1, - 2 - ], - "scale": [ - 0.06, - 0.06, - 0.06 - ], - "translation": [ - 0.237, - -0.758, - 0.0 - ], - "name": "Lantern" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 3 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - }, - { - "source": 3 - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf.meta deleted file mode 100644 index c7f07c557..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern.gltf.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 522dbbfb1e92b4b4a80ecb2b3996c4f9 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png deleted file mode 100644 index 013ec22d4..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png.meta deleted file mode 100644 index 87e7f668c..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_baseColor.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: dd2f9fa78b778bb4bae0d1ea85f8f59b -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png deleted file mode 100644 index e1878cad2..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png.meta deleted file mode 100644 index 7e08a0a35..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_emissive.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 4e289a6dd9957274a9d98f65de97787e -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png deleted file mode 100644 index 5818db91b..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png.meta deleted file mode 100644 index 172769ea0..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_normal.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 388831a227364a94bb4dda91141a7569 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png deleted file mode 100644 index 769132d3c..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png.meta deleted file mode 100644 index ee1460738..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/glTF/Lantern_roughnessMetallic.png.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 57969f205e883b64cad54465dba183e1 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot.meta deleted file mode 100644 index a4dc4b278..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8707ddb823aff8940915a0945b645a2f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg b/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg deleted file mode 100644 index 52e4b4c9a..000000000 Binary files a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg.meta b/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg.meta deleted file mode 100644 index 8df0179dd..000000000 --- a/UnityGLTF/Assets/StreamingAssets/Lantern/screenshot/screenshot.jpg.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7f35ef67284af3942b8eabb18c853cb9 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF.meta b/UnityGLTF/Assets/UnityGLTF.meta deleted file mode 100644 index 4e9b2bc40..000000000 --- a/UnityGLTF/Assets/UnityGLTF.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a4310d429f4807e418f00f304ae7387a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFExportMenu.cs b/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFExportMenu.cs deleted file mode 100644 index 1984d729f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFExportMenu.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using UnityEditor; -using UnityGLTF; -using UnityEngine; -using UnityEngine.SceneManagement; - -public class GLTFExportMenu : EditorWindow -{ - public static string RetrieveTexturePath(UnityEngine.Texture texture) - { - return AssetDatabase.GetAssetPath(texture); - } - - [MenuItem("GLTF/Settings")] - static void Init() - { - GLTFExportMenu window = (GLTFExportMenu)EditorWindow.GetWindow(typeof(GLTFExportMenu), false, "GLTF Settings"); - window.Show(); - } - - void OnGUI() - { - EditorGUILayout.LabelField("Exporter", EditorStyles.boldLabel); - GLTFSceneExporter.ExportFullPath = EditorGUILayout.Toggle("Export using original path", GLTFSceneExporter.ExportFullPath); - GLTFSceneExporter.ExportNames = EditorGUILayout.Toggle("Export names of nodes", GLTFSceneExporter.ExportNames); - GLTFSceneExporter.RequireExtensions= EditorGUILayout.Toggle("Require extensions", GLTFSceneExporter.RequireExtensions); - EditorGUILayout.Separator(); - EditorGUILayout.LabelField("Importer", EditorStyles.boldLabel); - EditorGUILayout.Separator(); - EditorGUILayout.HelpBox("UnityGLTF version 0.1", MessageType.Info); - EditorGUILayout.HelpBox("Supported extensions: KHR_material_pbrSpecularGlossiness, ExtTextureTransform", MessageType.Info); - } - - [MenuItem("GLTF/Export Selected")] - static void ExportSelected() - { - string name; - if (Selection.transforms.Length > 1) - name = SceneManager.GetActiveScene().name; - else if (Selection.transforms.Length == 1) - name = Selection.activeGameObject.name; - else - throw new Exception("No objects selected, cannot export."); - - var exportOptions = new ExportOptions { TexturePathRetriever = RetrieveTexturePath }; - var exporter = new GLTFSceneExporter(Selection.transforms, exportOptions); - - var path = EditorUtility.OpenFolderPanel("glTF Export Path", "", ""); - if (!string.IsNullOrEmpty(path)) { - exporter.SaveGLTFandBin (path, name); - } - } - - [MenuItem("GLTF/ExportGLB Selected")] - static void ExportGLBSelected() - { - string name; - if (Selection.transforms.Length > 1) - name = SceneManager.GetActiveScene().name; - else if (Selection.transforms.Length == 1) - name = Selection.activeGameObject.name; - else - throw new Exception("No objects selected, cannot export."); - - var exportOptions = new ExportOptions { TexturePathRetriever = RetrieveTexturePath }; - var exporter = new GLTFSceneExporter(Selection.transforms, exportOptions); - - var path = EditorUtility.OpenFolderPanel("glTF Export Path", "", ""); - if (!string.IsNullOrEmpty(path)) - { - exporter.SaveGLB(path, name); - } - } - - [MenuItem("GLTF/Export Scene")] - static void ExportScene() - { - var scene = SceneManager.GetActiveScene(); - var gameObjects = scene.GetRootGameObjects(); - var transforms = Array.ConvertAll(gameObjects, gameObject => gameObject.transform); - - var exportOptions = new ExportOptions { TexturePathRetriever = RetrieveTexturePath }; - var exporter = new GLTFSceneExporter(transforms, exportOptions); - var path = EditorUtility.OpenFolderPanel("glTF Export Path", "", ""); - if (path != "") { - exporter.SaveGLTFandBin (path, scene.name); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporter.cs b/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporter.cs deleted file mode 100644 index 69a53f8ca..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporter.cs +++ /dev/null @@ -1,383 +0,0 @@ -#if UNITY_2017_1_OR_NEWER -using UnityEditor.Experimental.AssetImporters; -using UnityEditor; -using System.IO; -using UnityEngine; -using System.Collections.Generic; -using System.Linq; -using System; -using Object = UnityEngine.Object; -using System.Collections; -using UnityGLTF.Loader; -using GLTF.Schema; -using GLTF; -using System.Threading.Tasks; - -namespace UnityGLTF -{ - [ScriptedImporter(1, new[] { "glb" })] - public class GLTFImporter : ScriptedImporter - { - [SerializeField] private bool _removeEmptyRootObjects = true; - [SerializeField] private float _scaleFactor = 1.0f; - [SerializeField] private int _maximumLod = 300; - [SerializeField] private bool _readWriteEnabled = true; - [SerializeField] private bool _generateColliders = false; - [SerializeField] private bool _swapUvs = false; - [SerializeField] private GLTFImporterNormals _importNormals = GLTFImporterNormals.Import; - [SerializeField] private bool _importMaterials = true; - [SerializeField] private bool _useJpgTextures = false; - - public override void OnImportAsset(AssetImportContext ctx) - { - string sceneName = null; - GameObject gltfScene = null; - UnityEngine.Mesh[] meshes = null; - try - { - sceneName = Path.GetFileNameWithoutExtension(ctx.assetPath); - gltfScene = CreateGLTFScene(ctx.assetPath); - - // Remove empty roots - if (_removeEmptyRootObjects) - { - var t = gltfScene.transform; - while ( - gltfScene.transform.childCount == 1 && - gltfScene.GetComponents().Length == 1) - { - var parent = gltfScene; - gltfScene = gltfScene.transform.GetChild(0).gameObject; - t = gltfScene.transform; - t.parent = null; // To keep transform information in the new parent - Object.DestroyImmediate(parent); // Get rid of the parent - } - } - - // Ensure there are no hide flags present (will cause problems when saving) - gltfScene.hideFlags &= ~(HideFlags.HideAndDontSave); - foreach (Transform child in gltfScene.transform) - { - child.gameObject.hideFlags &= ~(HideFlags.HideAndDontSave); - } - - // Zero position - gltfScene.transform.position = Vector3.zero; - - // Get meshes - var meshNames = new List(); - var meshHash = new HashSet(); - var meshFilters = gltfScene.GetComponentsInChildren(); - var vertexBuffer = new List(); - meshes = meshFilters.Select(mf => - { - var mesh = mf.sharedMesh; - vertexBuffer.Clear(); - mesh.GetVertices(vertexBuffer); - for (var i = 0; i < vertexBuffer.Count; ++i) - { - vertexBuffer[i] *= _scaleFactor; - } - mesh.SetVertices(vertexBuffer); - if (_swapUvs) - { - var uv = mesh.uv; - var uv2 = mesh.uv2; - mesh.uv = uv2; - mesh.uv2 = uv2; - } - if (_importNormals == GLTFImporterNormals.None) - { - mesh.normals = new Vector3[0]; - } - if (_importNormals == GLTFImporterNormals.Calculate && mesh.GetTopology(0) == MeshTopology.Triangles) - { - mesh.RecalculateNormals(); - } - mesh.UploadMeshData(!_readWriteEnabled); - - if (_generateColliders) - { - var collider = mf.gameObject.AddComponent(); - collider.sharedMesh = mesh; - } - - if (meshHash.Add(mesh)) - { - var meshName = string.IsNullOrEmpty(mesh.name) ? mf.gameObject.name : mesh.name; - mesh.name = ObjectNames.GetUniqueName(meshNames.ToArray(), meshName); - meshNames.Add(mesh.name); - } - - return mesh; - }).ToArray(); - - var renderers = gltfScene.GetComponentsInChildren(); - - if (_importMaterials) - { - // Get materials - var materialNames = new List(); - var materialHash = new HashSet(); - var materials = renderers.SelectMany(r => - { - return r.sharedMaterials.Select(mat => - { - if (materialHash.Add(mat)) - { - var matName = string.IsNullOrEmpty(mat.name) ? mat.shader.name : mat.name; - if (matName == mat.shader.name) - { - matName = matName.Substring(Mathf.Min(matName.LastIndexOf("/") + 1, matName.Length - 1)); - } - - // Ensure name is unique - matName = string.Format("{0} {1}", sceneName, ObjectNames.NicifyVariableName(matName)); - matName = ObjectNames.GetUniqueName(materialNames.ToArray(), matName); - - mat.name = matName; - materialNames.Add(matName); - } - - return mat; - }); - }).ToArray(); - - // Get textures - var textureNames = new List(); - var textureHash = new HashSet(); - var texMaterialMap = new Dictionary>(); - var textures = materials.SelectMany(mat => - { - var shader = mat.shader; - if (!shader) return Enumerable.Empty(); - - var matTextures = new List(); - for (var i = 0; i < ShaderUtil.GetPropertyCount(shader); ++i) - { - if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv) - { - var propertyName = ShaderUtil.GetPropertyName(shader, i); - var tex = mat.GetTexture(propertyName) as Texture2D; - if (tex) - { - if (textureHash.Add(tex)) - { - var texName = tex.name; - if (string.IsNullOrEmpty(texName)) - { - if (propertyName.StartsWith("_")) texName = propertyName.Substring(Mathf.Min(1, propertyName.Length - 1)); - } - - // Ensure name is unique - texName = string.Format("{0} {1}", sceneName, ObjectNames.NicifyVariableName(texName)); - texName = ObjectNames.GetUniqueName(textureNames.ToArray(), texName); - - tex.name = texName; - textureNames.Add(texName); - matTextures.Add(tex); - } - - List materialMaps; - if (!texMaterialMap.TryGetValue(tex, out materialMaps)) - { - materialMaps = new List(); - texMaterialMap.Add(tex, materialMaps); - } - - materialMaps.Add(new TexMaterialMap(mat, propertyName, propertyName == "_BumpMap")); - } - } - } - return matTextures; - }).ToArray(); - - var folderName = Path.GetDirectoryName(ctx.assetPath); - - // Save textures as separate assets and rewrite refs - // TODO: Support for other texture types - if (textures.Length > 0) - { - var texturesRoot = string.Concat(folderName, "/", "Textures/"); - Directory.CreateDirectory(texturesRoot); - - foreach (var tex in textures) - { - var ext = _useJpgTextures ? ".jpg" : ".png"; - var texPath = string.Concat(texturesRoot, tex.name, ext); - File.WriteAllBytes(texPath, _useJpgTextures ? tex.EncodeToJPG() : tex.EncodeToPNG()); - - AssetDatabase.ImportAsset(texPath); - } - } - - // Save materials as separate assets and rewrite refs - if (materials.Length > 0) - { - var materialRoot = string.Concat(folderName, "/", "Materials/"); - Directory.CreateDirectory(materialRoot); - - foreach (var mat in materials) - { - var materialPath = string.Concat(materialRoot, mat.name, ".mat"); - var newMat = mat; - CopyOrNew(mat, materialPath, m => - { - // Fix references - newMat = m; - foreach (var r in renderers) - { - var sharedMaterials = r.sharedMaterials; - for (var i = 0; i < sharedMaterials.Length; ++i) - { - var sharedMaterial = sharedMaterials[i]; - if (sharedMaterial.name == mat.name) sharedMaterials[i] = m; - } - sharedMaterials = sharedMaterials.Where(sm => sm).ToArray(); - r.sharedMaterials = sharedMaterials; - } - }); - // Fix textures - // HACK: This needs to be a delayed call. - // Unity needs a frame to kick off the texture import so we can rewrite the ref - if (textures.Length > 0) - { - EditorApplication.delayCall += () => - { - for (var i = 0; i < textures.Length; ++i) - { - var tex = textures[i]; - var texturesRoot = string.Concat(folderName, "/", "Textures/"); - var ext = _useJpgTextures ? ".jpg" : ".png"; - var texPath = string.Concat(texturesRoot, tex.name, ext); - - // Grab new imported texture - var materialMaps = texMaterialMap[tex]; - var importer = (TextureImporter)TextureImporter.GetAtPath(texPath); - var importedTex = AssetDatabase.LoadAssetAtPath(texPath); - if (importer != null) - { - var isNormalMap = false; - foreach (var materialMap in materialMaps) - { - if (materialMap.Material == mat) - { - isNormalMap |= materialMap.IsNormalMap; - newMat.SetTexture(materialMap.Property, importedTex); - } - }; - - if (isNormalMap) - { - // Try to auto-detect normal maps - importer.textureType = TextureImporterType.NormalMap; - } - else if (importer.textureType == TextureImporterType.Sprite) - { - // Force disable sprite mode, even for 2D projects - importer.textureType = TextureImporterType.Default; - } - - importer.SaveAndReimport(); - } - else - { - Debug.LogWarning("GLTFImporter: Unable to import texture from path reference"); - } - } - }; - } - } - } - } - else - { - var temp = GameObject.CreatePrimitive(PrimitiveType.Plane); - temp.SetActive(false); - var defaultMat = new[] { temp.GetComponent().sharedMaterial }; - DestroyImmediate(temp); - - foreach (var rend in renderers) - { - rend.sharedMaterials = defaultMat; - } - } - } - catch - { - if (gltfScene) DestroyImmediate(gltfScene); - throw; - } - -#if UNITY_2017_3_OR_NEWER - // Set main asset - ctx.AddObjectToAsset("main asset", gltfScene); - - // Add meshes - foreach (var mesh in meshes) - { - ctx.AddObjectToAsset("mesh " + mesh.name, mesh); - } - - ctx.SetMainObject(gltfScene); -#else - // Set main asset - ctx.SetMainAsset("main asset", gltfScene); - - // Add meshes - foreach (var mesh in meshes) - { - ctx.AddSubAsset("mesh " + mesh.name, mesh); - } -#endif - } - - private GameObject CreateGLTFScene(string projectFilePath) - { - var importOptions = new ImportOptions - { - DataLoader = new FileLoader(Path.GetDirectoryName(projectFilePath)), - }; - using (var stream = File.OpenRead(projectFilePath)) - { - GLTFRoot gLTFRoot; - GLTFParser.ParseJson(stream, out gLTFRoot); - stream.Position = 0; // Make sure the read position is changed back to the beginning of the file - var loader = new GLTFSceneImporter(gLTFRoot, stream, importOptions); - loader.MaximumLod = _maximumLod; - loader.IsMultithreaded = true; - - loader.LoadSceneAsync().Wait(); - return loader.LastLoadedScene; - } - } - - private void CopyOrNew(T asset, string assetPath, Action replaceReferences) where T : Object - { - var existingAsset = AssetDatabase.LoadAssetAtPath(assetPath); - if (existingAsset) - { - EditorUtility.CopySerialized(asset, existingAsset); - replaceReferences(existingAsset); - return; - } - - AssetDatabase.CreateAsset(asset, assetPath); - } - - private class TexMaterialMap - { - public UnityEngine.Material Material { get; set; } - public string Property { get; set; } - public bool IsNormalMap { get; set; } - - public TexMaterialMap(UnityEngine.Material material, string property, bool isNormalMap) - { - Material = material; - Property = property; - IsNormalMap = isNormalMap; - } - } - } -} -#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterInspector.cs b/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterInspector.cs deleted file mode 100644 index d408b0452..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Editor/Scripts/GLTFImporterInspector.cs +++ /dev/null @@ -1,49 +0,0 @@ -#if UNITY_2017_1_OR_NEWER -using System; -using System.Linq; -using UnityEditor; -using UnityEditor.Experimental.AssetImporters; -using UnityEngine; - -namespace UnityGLTF -{ - [CustomEditor(typeof(GLTFImporter))] - [CanEditMultipleObjects] - public class GLTFImporterInspector : AssetImporterEditor - { - private string[] _importNormalsNames; - - public override void OnInspectorGUI() - { - if (_importNormalsNames == null) - { - _importNormalsNames = Enum.GetNames(typeof(GLTFImporterNormals)) - .Select(n => ObjectNames.NicifyVariableName(n)) - .ToArray(); - } - EditorGUILayout.LabelField("Meshes", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_removeEmptyRootObjects")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_scaleFactor")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_maximumLod"), new GUIContent("Maximum LOD")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_readWriteEnabled"), new GUIContent("Read/Write Enabled")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_generateColliders")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_swapUvs"), new GUIContent("Swap UVs")); - EditorGUILayout.Separator(); - EditorGUILayout.LabelField("Normals", EditorStyles.boldLabel); - EditorGUI.BeginChangeCheck(); - var importNormalsProp = serializedObject.FindProperty("_importNormals"); - var importNormals = EditorGUILayout.Popup(importNormalsProp.displayName, importNormalsProp.intValue, _importNormalsNames); - if (EditorGUI.EndChangeCheck()) - { - importNormalsProp.intValue = importNormals; - } - EditorGUILayout.Separator(); - EditorGUILayout.LabelField("Materials", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_importMaterials")); - EditorGUILayout.PropertyField(serializedObject.FindProperty("_useJpgTextures"), new GUIContent("Use JPG Textures")); - - ApplyRevertGUI(); - } - } -} -#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Editor/UnityGLTFEditor.asmdef b/UnityGLTF/Assets/UnityGLTF/Editor/UnityGLTFEditor.asmdef deleted file mode 100644 index c9a3347a7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Editor/UnityGLTFEditor.asmdef +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "UnityGLTFEditor", - "references": [ - "UnityGLTFScripts" - ], - "optionalUnityReferences": [], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/.gitignore b/UnityGLTF/Assets/UnityGLTF/Runtime/.gitignore deleted file mode 100644 index 0dceab322..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/Plugins/ \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Plugins.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Plugins.meta deleted file mode 100644 index e3c1a174e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 79baf28a0f0463e499773aa70c39227f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/NormalChannel.shader b/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/NormalChannel.shader deleted file mode 100644 index 5910efdb0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Resources/NormalChannel.shader +++ /dev/null @@ -1,52 +0,0 @@ -Shader "Hidden/NormalChannel" -{ - Properties - { - _MainTex ("Texture", 2D) = "white" {} - } - SubShader - { - // No culling or depth - Cull Off ZWrite Off ZTest Always - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - - #include "UnityCG.cginc" - - struct appdata - { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - }; - - struct v2f - { - float2 uv : TEXCOORD0; - float4 vertex : SV_POSITION; - }; - - v2f vert (appdata v) - { - v2f o; - o.vertex = UnityObjectToClipPos(v.vertex); - o.uv = v.uv; - return o; - } - - sampler2D _MainTex; - - fixed4 frag (v2f i) : SV_Target - { - float4 col = tex2D(_MainTex, i.uv); - // If a texture is marked as a normal map - // the values are stored in the A and G channel. - return float4(col.a, col.g, 1, 1); - } - ENDCG - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFComponent.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFComponent.cs deleted file mode 100644 index 0f1242e9f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFComponent.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Threading.Tasks; -using UnityEngine; -using UnityGLTF.Loader; - -namespace UnityGLTF -{ - /// - /// Component to load a GLTF scene with - /// - public class GLTFComponent : MonoBehaviour - { - public string GLTFUri = null; - public bool Multithreaded = true; - public bool UseStream = false; - public bool AppendStreamingAssets = true; - public bool PlayAnimationOnLoad = true; - public ImporterFactory Factory = null; - - public IEnumerable Animations { get; private set; } - - [SerializeField] - private bool loadOnStart = true; - - [SerializeField] private bool MaterialsOnly = false; - - [SerializeField] private int RetryCount = 10; - [SerializeField] private float RetryTimeout = 2.0f; - private int numRetries = 0; - - - public int MaximumLod = 300; - public int Timeout = 8; - public GLTFSceneImporter.ColliderType Collider = GLTFSceneImporter.ColliderType.None; - public GameObject LastLoadedScene { get; private set; } = null; - - [SerializeField] - private Shader shaderOverride = null; - - private async void Start() - { - if (!loadOnStart) return; - - try - { - await Load(); - } -#if WINDOWS_UWP - catch (Exception) -#else - catch (HttpRequestException) -#endif - { - if (numRetries++ >= RetryCount) - throw; - - Debug.LogWarning("Load failed, retrying"); - await Task.Delay((int)(RetryTimeout * 1000)); - Start(); - } - } - - public async Task Load() - { - var importOptions = new ImportOptions - { - AsyncCoroutineHelper = gameObject.GetComponent() ?? gameObject.AddComponent() - }; - - GLTFSceneImporter sceneImporter = null; - try - { - Factory = Factory ?? ScriptableObject.CreateInstance(); - - if (UseStream) - { - string fullPath; - if (AppendStreamingAssets) - { - // Path.Combine treats paths that start with the separator character - // as absolute paths, ignoring the first path passed in. This removes - // that character to properly handle a filename written with it. - fullPath = Path.Combine(Application.streamingAssetsPath, GLTFUri.TrimStart(new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar })); - } - else - { - fullPath = GLTFUri; - } - string directoryPath = URIHelper.GetDirectoryName(fullPath); - importOptions.DataLoader = new FileLoader(directoryPath); - sceneImporter = Factory.CreateSceneImporter( - Path.GetFileName(GLTFUri), - importOptions - ); - } - else - { - string directoryPath = URIHelper.GetDirectoryName(GLTFUri); - importOptions.DataLoader = new WebRequestLoader(directoryPath); - - sceneImporter = Factory.CreateSceneImporter( - URIHelper.GetFileFromUri(new Uri(GLTFUri)), - importOptions - ); - - } - - sceneImporter.SceneParent = gameObject.transform; - sceneImporter.Collider = Collider; - sceneImporter.MaximumLod = MaximumLod; - sceneImporter.Timeout = Timeout; - sceneImporter.IsMultithreaded = Multithreaded; - sceneImporter.CustomShaderName = shaderOverride ? shaderOverride.name : null; - - if (MaterialsOnly) - { - var mat = await sceneImporter.LoadMaterialAsync(0); - var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); - cube.transform.SetParent(gameObject.transform); - var renderer = cube.GetComponent(); - renderer.sharedMaterial = mat; - } - else - { - await sceneImporter.LoadSceneAsync(); - } - - // Override the shaders on all materials if a shader is provided - if (shaderOverride != null) - { - Renderer[] renderers = gameObject.GetComponentsInChildren(); - foreach (Renderer renderer in renderers) - { - renderer.sharedMaterial.shader = shaderOverride; - } - } - - print("model loaded with vertices: " + sceneImporter.Statistics.VertexCount.ToString() + ", triangles: " + sceneImporter.Statistics.TriangleCount.ToString()); - LastLoadedScene = sceneImporter.LastLoadedScene; - - Animations = sceneImporter.LastLoadedScene.GetComponents(); - - if (PlayAnimationOnLoad && Animations.Any()) - { - Animations.FirstOrDefault().Play(); - } - } - finally - { - if(importOptions.DataLoader != null) - { - sceneImporter?.Dispose(); - sceneImporter = null; - importOptions.DataLoader = null; - } - } - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneExporter.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneExporter.cs deleted file mode 100644 index a63448de5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneExporter.cs +++ /dev/null @@ -1,1987 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using GLTF.Schema; -using UnityEngine; -using UnityEngine.Rendering; -using UnityGLTF.Extensions; -using CameraType = GLTF.Schema.CameraType; -using WrapMode = GLTF.Schema.WrapMode; - -namespace UnityGLTF -{ - public class ExportOptions - { - public GLTFSceneExporter.RetrieveTexturePathDelegate TexturePathRetriever = (texture) => texture.name; - public bool ExportInactivePrimitives = true; - } - - public class GLTFSceneExporter - { - public delegate string RetrieveTexturePathDelegate(Texture texture); - - private enum IMAGETYPE - { - RGB, - RGBA, - R, - G, - B, - A, - G_INVERT - } - - private enum TextureMapType - { - Main, - Bump, - SpecGloss, - Emission, - MetallicGloss, - Light, - Occlusion - } - - private struct ImageInfo - { - public Texture2D texture; - public TextureMapType textureMapType; - } - - private Transform[] _rootTransforms; - private GLTFRoot _root; - private BufferId _bufferId; - private GLTFBuffer _buffer; - private BinaryWriter _bufferWriter; - private List _imageInfos; - private List _textures; - private List _materials; - private bool _shouldUseInternalBufferForImages; - - private ExportOptions _exportOptions; - - private Material _metalGlossChannelSwapMaterial; - private Material _normalChannelMaterial; - - private const uint MagicGLTF = 0x46546C67; - private const uint Version = 2; - private const uint MagicJson = 0x4E4F534A; - private const uint MagicBin = 0x004E4942; - private const int GLTFHeaderSize = 12; - private const int SectionHeaderSize = 8; - - protected struct PrimKey - { - public Mesh Mesh; - public Material Material; - } - private readonly Dictionary _primOwner = new Dictionary(); - private readonly Dictionary _meshToPrims = new Dictionary(); - - // Settings - public static bool ExportNames = true; - public static bool ExportFullPath = true; - public static bool RequireExtensions = false; - - /// - /// Create a GLTFExporter that exports out a transform - /// - /// Root transform of object to export - [Obsolete("Please switch to GLTFSceneExporter(Transform[] rootTransforms, ExportOptions options). This constructor is deprecated and will be removed in a future release.")] - public GLTFSceneExporter(Transform[] rootTransforms, RetrieveTexturePathDelegate texturePathRetriever) - : this(rootTransforms, new ExportOptions { TexturePathRetriever = texturePathRetriever }) - { - } - - /// - /// Create a GLTFExporter that exports out a transform - /// - /// Root transform of object to export - public GLTFSceneExporter(Transform[] rootTransforms, ExportOptions options) - { - _exportOptions = options; - - var metalGlossChannelSwapShader = Resources.Load("MetalGlossChannelSwap", typeof(Shader)) as Shader; - _metalGlossChannelSwapMaterial = new Material(metalGlossChannelSwapShader); - - var normalChannelShader = Resources.Load("NormalChannel", typeof(Shader)) as Shader; - _normalChannelMaterial = new Material(normalChannelShader); - - _rootTransforms = rootTransforms; - _root = new GLTFRoot - { - Accessors = new List(), - Asset = new Asset - { - Version = "2.0" - }, - Buffers = new List(), - BufferViews = new List(), - Cameras = new List(), - Images = new List(), - Materials = new List(), - Meshes = new List(), - Nodes = new List(), - Samplers = new List(), - Scenes = new List(), - Textures = new List() - }; - - _imageInfos = new List(); - _materials = new List(); - _textures = new List(); - - _buffer = new GLTFBuffer(); - _bufferId = new BufferId - { - Id = _root.Buffers.Count, - Root = _root - }; - _root.Buffers.Add(_buffer); - } - - /// - /// Gets the root object of the exported GLTF - /// - /// Root parsed GLTF Json - public GLTFRoot GetRoot() - { - return _root; - } - - /// - /// Writes a binary GLB file with filename at path. - /// - /// File path for saving the binary file - /// The name of the GLTF file - public void SaveGLB(string path, string fileName) - { - _shouldUseInternalBufferForImages = true; - string fullPath = Path.Combine(path, Path.ChangeExtension(fileName, "glb")); - - using (FileStream glbFile = new FileStream(fullPath, FileMode.Create)) - { - SaveGLBToStream(glbFile, fileName); - } - - if (!_shouldUseInternalBufferForImages) - { - ExportImages(path); - } - } - - /// - /// In-memory GLB creation helper. Useful for platforms where no filesystem is available (e.g. WebGL). - /// - /// - /// - public byte[] SaveGLBToByteArray(string sceneName) - { - using (var stream = new MemoryStream()) - { - SaveGLBToStream(stream, sceneName); - return stream.ToArray(); - } - } - - /// - /// Writes a binary GLB file into a stream (memory stream, filestream, ...) - /// - /// File path for saving the binary file - /// The name of the GLTF file - public void SaveGLBToStream(Stream stream, string sceneName) - { - Stream binStream = new MemoryStream(); - Stream jsonStream = new MemoryStream(); - - _bufferWriter = new BinaryWriter(binStream); - - TextWriter jsonWriter = new StreamWriter(jsonStream, Encoding.ASCII); - - _root.Scene = ExportScene(sceneName, _rootTransforms); - - _buffer.ByteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Length, 4); - - _root.Serialize(jsonWriter, true); - - _bufferWriter.Flush(); - jsonWriter.Flush(); - - // align to 4-byte boundary to comply with spec. - AlignToBoundary(jsonStream); - AlignToBoundary(binStream, 0x00); - - int glbLength = (int)(GLTFHeaderSize + SectionHeaderSize + - jsonStream.Length + SectionHeaderSize + binStream.Length); - - BinaryWriter writer = new BinaryWriter(stream); - - // write header - writer.Write(MagicGLTF); - writer.Write(Version); - writer.Write(glbLength); - - // write JSON chunk header. - writer.Write((int)jsonStream.Length); - writer.Write(MagicJson); - - jsonStream.Position = 0; - CopyStream(jsonStream, writer); - - writer.Write((int)binStream.Length); - writer.Write(MagicBin); - - binStream.Position = 0; - CopyStream(binStream, writer); - - writer.Flush(); - } - - /// - /// Convenience function to copy from a stream to a binary writer, for - /// compatibility with pre-.NET 4.0. - /// Note: Does not set position/seek in either stream. After executing, - /// the input buffer's position should be the end of the stream. - /// - /// Stream to copy from - /// Stream to copy to. - private static void CopyStream(Stream input, BinaryWriter output) - { - byte[] buffer = new byte[8 * 1024]; - int length; - while ((length = input.Read(buffer, 0, buffer.Length)) > 0) - { - output.Write(buffer, 0, length); - } - } - - /// - /// Pads a stream with additional bytes. - /// - /// The stream to be modified. - /// The padding byte to append. Defaults to ASCII - /// space (' '). - /// The boundary to align with, in bytes. - /// - private static void AlignToBoundary(Stream stream, byte pad = (byte)' ', uint boundary = 4) - { - uint currentLength = (uint)stream.Length; - uint newLength = CalculateAlignment(currentLength, boundary); - for (int i = 0; i < newLength - currentLength; i++) - { - stream.WriteByte(pad); - } - } - - /// - /// Calculates the number of bytes of padding required to align the - /// size of a buffer with some multiple of byteAllignment. - /// - /// The current size of the buffer. - /// The number of bytes to align with. - /// - public static uint CalculateAlignment(uint currentSize, uint byteAlignment) - { - return (currentSize + byteAlignment - 1) / byteAlignment * byteAlignment; - } - - - /// - /// Specifies the path and filename for the GLTF Json and binary - /// - /// File path for saving the GLTF and binary files - /// The name of the GLTF file - public void SaveGLTFandBin(string path, string fileName) - { - _shouldUseInternalBufferForImages = false; - var binFile = File.Create(Path.Combine(path, fileName + ".bin")); - _bufferWriter = new BinaryWriter(binFile); - - _root.Scene = ExportScene(fileName, _rootTransforms); - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - _buffer.Uri = fileName + ".bin"; - _buffer.ByteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Length, 4); - - var gltfFile = File.CreateText(Path.Combine(path, fileName + ".gltf")); - _root.Serialize(gltfFile); - -#if WINDOWS_UWP - gltfFile.Dispose(); - binFile.Dispose(); -#else - gltfFile.Close(); - binFile.Close(); -#endif - ExportImages(path); - - } - - private void ExportImages(string outputPath) - { - for (int t = 0; t < _imageInfos.Count; ++t) - { - var image = _imageInfos[t].texture; - int height = image.height; - int width = image.width; - - switch (_imageInfos[t].textureMapType) - { - case TextureMapType.MetallicGloss: - ExportMetallicGlossTexture(image, outputPath); - break; - case TextureMapType.Bump: - ExportNormalTexture(image, outputPath); - break; - default: - ExportTexture(image, outputPath); - break; - } - } - } - - /// - /// This converts Unity's metallic-gloss texture representation into GLTF's metallic-roughness specifications. - /// Unity's metallic-gloss A channel (glossiness) is inverted and goes into GLTF's metallic-roughness G channel (roughness). - /// Unity's metallic-gloss R channel (metallic) goes into GLTF's metallic-roughess B channel. - /// - /// Unity's metallic-gloss texture to be exported - /// The location to export the texture - private void ExportMetallicGlossTexture(Texture2D texture, string outputPath) - { - var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); - - Graphics.Blit(texture, destRenderTexture, _metalGlossChannelSwapMaterial); - - var exportTexture = new Texture2D(texture.width, texture.height); - exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); - exportTexture.Apply(); - - var finalFilenamePath = ConstructImageFilenamePath(texture, outputPath); - File.WriteAllBytes(finalFilenamePath, exportTexture.EncodeToPNG()); - - RenderTexture.ReleaseTemporary(destRenderTexture); - if (Application.isEditor) - { - GameObject.DestroyImmediate(exportTexture); - } - else - { - GameObject.Destroy(exportTexture); - } - } - - /// - /// This export's the normal texture. If a texture is marked as a normal map, the values are stored in the A and G channel. - /// To output the correct normal texture, the A channel is put into the R channel. - /// - /// Unity's normal texture to be exported - /// The location to export the texture - private void ExportNormalTexture(Texture2D texture, string outputPath) - { - var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); - - Graphics.Blit(texture, destRenderTexture, _normalChannelMaterial); - - var exportTexture = new Texture2D(texture.width, texture.height); - exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); - exportTexture.Apply(); - - var finalFilenamePath = ConstructImageFilenamePath(texture, outputPath); - File.WriteAllBytes(finalFilenamePath, exportTexture.EncodeToPNG()); - - RenderTexture.ReleaseTemporary(destRenderTexture); - if (Application.isEditor) - { - GameObject.DestroyImmediate(exportTexture); - } - else - { - GameObject.Destroy(exportTexture); - } - } - - private void ExportTexture(Texture2D texture, string outputPath) - { - var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); - - Graphics.Blit(texture, destRenderTexture); - - var exportTexture = new Texture2D(texture.width, texture.height); - exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); - exportTexture.Apply(); - - var finalFilenamePath = ConstructImageFilenamePath(texture, outputPath); - File.WriteAllBytes(finalFilenamePath, exportTexture.EncodeToPNG()); - - RenderTexture.ReleaseTemporary(destRenderTexture); - if (Application.isEditor) - { - GameObject.DestroyImmediate(exportTexture); - } - else - { - GameObject.Destroy(exportTexture); - } - } - - private string ConstructImageFilenamePath(Texture2D texture, string outputPath) - { - var imagePath = _exportOptions.TexturePathRetriever(texture); - if (string.IsNullOrEmpty(imagePath)) - { - imagePath = Path.Combine(outputPath, texture.name); - } - - var filenamePath = Path.Combine(outputPath, imagePath); - if (!ExportFullPath) - { - filenamePath = outputPath + "/" + texture.name; - } - var file = new FileInfo(filenamePath); - file.Directory.Create(); - return Path.ChangeExtension(filenamePath, ".png"); - } - - private SceneId ExportScene(string name, Transform[] rootObjTransforms) - { - var scene = new GLTFScene(); - - if (ExportNames) - { - scene.Name = name; - } - - scene.Nodes = new List(rootObjTransforms.Length); - foreach (var transform in rootObjTransforms) - { - scene.Nodes.Add(ExportNode(transform)); - } - - _root.Scenes.Add(scene); - - return new SceneId - { - Id = _root.Scenes.Count - 1, - Root = _root - }; - } - - private NodeId ExportNode(Transform nodeTransform) - { - var node = new Node(); - - if (ExportNames) - { - node.Name = nodeTransform.name; - } - - //export camera attached to node - Camera unityCamera = nodeTransform.GetComponent(); - if (unityCamera != null) - { - node.Camera = ExportCamera(unityCamera); - } - - node.SetUnityTransform(nodeTransform); - - var id = new NodeId - { - Id = _root.Nodes.Count, - Root = _root - }; - _root.Nodes.Add(node); - - // children that are primitives get put in a mesh - GameObject[] primitives, nonPrimitives; - FilterPrimitives(nodeTransform, out primitives, out nonPrimitives); - if (primitives.Length > 0) - { - node.Mesh = ExportMesh(nodeTransform.name, primitives); - - // associate unity meshes with gltf mesh id - foreach (var prim in primitives) - { - var smr = prim.GetComponent(); - if (smr != null) - { - _primOwner[new PrimKey { Mesh = smr.sharedMesh, Material = smr.sharedMaterial }] = node.Mesh; - } - else - { - var filter = prim.GetComponent(); - var renderer = prim.GetComponent(); - _primOwner[new PrimKey { Mesh = filter.sharedMesh, Material = renderer.sharedMaterial }] = node.Mesh; - } - } - } - - // children that are not primitives get added as child nodes - if (nonPrimitives.Length > 0) - { - node.Children = new List(nonPrimitives.Length); - foreach (var child in nonPrimitives) - { - node.Children.Add(ExportNode(child.transform)); - } - } - - return id; - } - - private CameraId ExportCamera(Camera unityCamera) - { - GLTFCamera camera = new GLTFCamera(); - //name - camera.Name = unityCamera.name; - - //type - bool isOrthographic = unityCamera.orthographic; - camera.Type = isOrthographic ? CameraType.orthographic : CameraType.perspective; - Matrix4x4 matrix = unityCamera.projectionMatrix; - - //matrix properties: compute the fields from the projection matrix - if (isOrthographic) - { - CameraOrthographic ortho = new CameraOrthographic(); - - ortho.XMag = 1 / matrix[0, 0]; - ortho.YMag = 1 / matrix[1, 1]; - - float farClip = (matrix[2, 3] / matrix[2, 2]) - (1 / matrix[2, 2]); - float nearClip = farClip + (2 / matrix[2, 2]); - ortho.ZFar = farClip; - ortho.ZNear = nearClip; - - camera.Orthographic = ortho; - } - else - { - CameraPerspective perspective = new CameraPerspective(); - float fov = 2 * Mathf.Atan(1 / matrix[1, 1]); - float aspectRatio = matrix[1, 1] / matrix[0, 0]; - perspective.YFov = fov; - perspective.AspectRatio = aspectRatio; - - if (matrix[2, 2] == -1) - { - //infinite projection matrix - float nearClip = matrix[2, 3] * -0.5f; - perspective.ZNear = nearClip; - } - else - { - //finite projection matrix - float farClip = matrix[2, 3] / (matrix[2, 2] + 1); - float nearClip = farClip * (matrix[2, 2] + 1) / (matrix[2, 2] - 1); - perspective.ZFar = farClip; - perspective.ZNear = nearClip; - } - camera.Perspective = perspective; - } - - var id = new CameraId - { - Id = _root.Cameras.Count, - Root = _root - }; - - _root.Cameras.Add(camera); - - return id; - } - - private static bool ContainsValidRenderer (GameObject gameObject) - { - return (gameObject.GetComponent() != null && gameObject.GetComponent() != null) - || (gameObject.GetComponent() != null); - } - - private void FilterPrimitives(Transform transform, out GameObject[] primitives, out GameObject[] nonPrimitives) - { - var childCount = transform.childCount; - var prims = new List(childCount + 1); - var nonPrims = new List(childCount); - - // add another primitive if the root object also has a mesh - if (transform.gameObject.activeSelf) - { - if (ContainsValidRenderer(transform.gameObject)) - { - prims.Add(transform.gameObject); - } - } - for (var i = 0; i < childCount; i++) - { - var go = transform.GetChild(i).gameObject; - if (IsPrimitive(go)) - prims.Add(go); - else - nonPrims.Add(go); - } - - primitives = prims.ToArray(); - nonPrimitives = nonPrims.ToArray(); - } - - private static bool IsPrimitive(GameObject gameObject) - { - /* - * Primitives have the following properties: - * - have no children - * - have no non-default local transform properties - * - have MeshFilter and MeshRenderer components OR has SkinnedMeshRenderer component - */ - return gameObject.transform.childCount == 0 - && gameObject.transform.localPosition == Vector3.zero - && gameObject.transform.localRotation == Quaternion.identity - && gameObject.transform.localScale == Vector3.one - && ContainsValidRenderer(gameObject); - - } - - private MeshId ExportMesh(string name, GameObject[] primitives) - { - // check if this set of primitives is already a mesh - MeshId existingMeshId = null; - var key = new PrimKey(); - foreach (var prim in primitives) - { - var smr = prim.GetComponent(); - if (smr != null) - { - key.Mesh = smr.sharedMesh; - key.Material = smr.sharedMaterial; - } - else - { - var filter = prim.GetComponent(); - var renderer = prim.GetComponent(); - key.Mesh = filter.sharedMesh; - key.Material = renderer.sharedMaterial; - } - - MeshId tempMeshId; - if (_primOwner.TryGetValue(key, out tempMeshId) && (existingMeshId == null || tempMeshId == existingMeshId)) - { - existingMeshId = tempMeshId; - } - else - { - existingMeshId = null; - break; - } - } - - // if so, return that mesh id - if (existingMeshId != null) - { - return existingMeshId; - } - - // if not, create new mesh and return its id - var mesh = new GLTFMesh(); - - if (ExportNames) - { - mesh.Name = name; - } - - mesh.Primitives = new List(primitives.Length); - foreach (var prim in primitives) - { - MeshPrimitive[] meshPrimitives = ExportPrimitive(prim, mesh); - if (meshPrimitives != null) - { - mesh.Primitives.AddRange(meshPrimitives); - } - } - - var id = new MeshId - { - Id = _root.Meshes.Count, - Root = _root - }; - _root.Meshes.Add(mesh); - - return id; - } - - // a mesh *might* decode to multiple prims if there are submeshes - private MeshPrimitive[] ExportPrimitive(GameObject gameObject, GLTFMesh mesh) - { - Mesh meshObj = null; - SkinnedMeshRenderer smr = null; - var filter = gameObject.GetComponent(); - if (filter != null) - { - meshObj = filter.sharedMesh; - } - else - { - smr = gameObject.GetComponent(); - meshObj = smr.sharedMesh; - } - if (meshObj == null) - { - Debug.LogError(string.Format("MeshFilter.sharedMesh on gameobject:{0} is missing , skipping", gameObject.name)); - return null; - } - - var renderer = gameObject.GetComponent(); - var materialsObj = renderer != null ? renderer.sharedMaterials : smr.sharedMaterials; - - var prims = new MeshPrimitive[meshObj.subMeshCount]; - - // don't export any more accessors if this mesh is already exported - MeshPrimitive[] primVariations; - if (_meshToPrims.TryGetValue(meshObj, out primVariations) - && meshObj.subMeshCount == primVariations.Length) - { - for (var i = 0; i < primVariations.Length; i++) - { - prims[i] = new MeshPrimitive(primVariations[i], _root) - { - Material = ExportMaterial(materialsObj[i]) - }; - } - - return prims; - } - - AccessorId aPosition = null, aNormal = null, aTangent = null, - aTexcoord0 = null, aTexcoord1 = null, aColor0 = null; - - aPosition = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.vertices, SchemaExtensions.CoordinateSpaceConversionScale)); - - if (meshObj.normals.Length != 0) - aNormal = ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(meshObj.normals, SchemaExtensions.CoordinateSpaceConversionScale)); - - if (meshObj.tangents.Length != 0) - aTangent = ExportAccessor(SchemaExtensions.ConvertVector4CoordinateSpaceAndCopy(meshObj.tangents, SchemaExtensions.TangentSpaceConversionScale)); - - if (meshObj.uv.Length != 0) - aTexcoord0 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv)); - - if (meshObj.uv2.Length != 0) - aTexcoord1 = ExportAccessor(SchemaExtensions.FlipTexCoordArrayVAndCopy(meshObj.uv2)); - - if (meshObj.colors.Length != 0) - aColor0 = ExportAccessor(meshObj.colors); - - MaterialId lastMaterialId = null; - - for (var submesh = 0; submesh < meshObj.subMeshCount; submesh++) - { - var primitive = new MeshPrimitive(); - - var topology = meshObj.GetTopology(submesh); - var indices = meshObj.GetIndices(submesh); - if (topology == MeshTopology.Triangles) SchemaExtensions.FlipTriangleFaces(indices); - - primitive.Mode = GetDrawMode(topology); - primitive.Indices = ExportAccessor(indices, true); - - primitive.Attributes = new Dictionary(); - primitive.Attributes.Add(SemanticProperties.POSITION, aPosition); - - if (aNormal != null) - primitive.Attributes.Add(SemanticProperties.NORMAL, aNormal); - if (aTangent != null) - primitive.Attributes.Add(SemanticProperties.TANGENT, aTangent); - if (aTexcoord0 != null) - primitive.Attributes.Add(SemanticProperties.TEXCOORD_0, aTexcoord0); - if (aTexcoord1 != null) - primitive.Attributes.Add(SemanticProperties.TEXCOORD_1, aTexcoord1); - if (aColor0 != null) - primitive.Attributes.Add(SemanticProperties.COLOR_0, aColor0); - - if (submesh < materialsObj.Length) - { - primitive.Material = ExportMaterial(materialsObj[submesh]); - lastMaterialId = primitive.Material; - } - else - { - primitive.Material = lastMaterialId; - } - - ExportBlendShapes(smr, meshObj, primitive, mesh); - - prims[submesh] = primitive; - } - - _meshToPrims[meshObj] = prims; - - return prims; - } - - private MaterialId ExportMaterial(Material materialObj) - { - MaterialId id = GetMaterialId(_root, materialObj); - if (id != null) - { - return id; - } - - var material = new GLTFMaterial(); - - if (ExportNames) - { - material.Name = materialObj.name; - } - - if (materialObj.HasProperty("_Cutoff")) - { - material.AlphaCutoff = materialObj.GetFloat("_Cutoff"); - } - - switch (materialObj.GetTag("RenderType", false, "")) - { - case "TransparentCutout": - material.AlphaMode = AlphaMode.MASK; - break; - case "Transparent": - material.AlphaMode = AlphaMode.BLEND; - break; - default: - material.AlphaMode = AlphaMode.OPAQUE; - break; - } - - material.DoubleSided = materialObj.HasProperty("_Cull") && - materialObj.GetInt("_Cull") == (float)CullMode.Off; - - if(materialObj.IsKeywordEnabled("_EMISSION")) - { - if (materialObj.HasProperty("_EmissionColor")) - { - material.EmissiveFactor = materialObj.GetColor("_EmissionColor").ToNumericsColorRaw(); - } - - if (materialObj.HasProperty("_EmissionMap")) - { - var emissionTex = materialObj.GetTexture("_EmissionMap"); - - if (emissionTex != null) - { - if(emissionTex is Texture2D) - { - material.EmissiveTexture = ExportTextureInfo(emissionTex, TextureMapType.Emission); - - ExportTextureTransform(material.EmissiveTexture, materialObj, "_EmissionMap"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} emissive texture in material {1}", emissionTex.GetType(), materialObj.name); - } - - } - } - } - if (materialObj.HasProperty("_BumpMap") && materialObj.IsKeywordEnabled("_NORMALMAP")) - { - var normalTex = materialObj.GetTexture("_BumpMap"); - - if (normalTex != null) - { - if(normalTex is Texture2D) - { - material.NormalTexture = ExportNormalTextureInfo(normalTex, TextureMapType.Bump, materialObj); - ExportTextureTransform(material.NormalTexture, materialObj, "_BumpMap"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} normal texture in material {1}", normalTex.GetType(), materialObj.name); - } - } - } - - if (materialObj.HasProperty("_OcclusionMap")) - { - var occTex = materialObj.GetTexture("_OcclusionMap"); - if (occTex != null) - { - if(occTex is Texture2D) - { - material.OcclusionTexture = ExportOcclusionTextureInfo(occTex, TextureMapType.Occlusion, materialObj); - ExportTextureTransform(material.OcclusionTexture, materialObj, "_OcclusionMap"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} occlusion texture in material {1}", occTex.GetType(), materialObj.name); - } - } - } - - if (IsPBRMetallicRoughness(materialObj)) - { - material.PbrMetallicRoughness = ExportPBRMetallicRoughness(materialObj); - } - else if (IsCommonConstant(materialObj)) - { - material.CommonConstant = ExportCommonConstant(materialObj); - } - - _materials.Add(materialObj); - - id = new MaterialId - { - Id = _root.Materials.Count, - Root = _root - }; - _root.Materials.Add(material); - - return id; - } - - // Blend Shapes / Morph Targets - // Adopted from Gary Hsu (bghgary) - // https://github.com/bghgary/glTF-Tools-for-Unity/blob/master/UnityProject/Assets/Gltf/Editor/Exporter.cs - private void ExportBlendShapes(SkinnedMeshRenderer smr, Mesh meshObj, MeshPrimitive primitive, GLTFMesh mesh) - { - if (smr != null && meshObj.blendShapeCount > 0) - { - List> targets = new List>(meshObj.blendShapeCount); - List weights = new List(meshObj.blendShapeCount); - List targetNames = new List(meshObj.blendShapeCount); - - for (int blendShapeIndex = 0; blendShapeIndex < meshObj.blendShapeCount; blendShapeIndex++) - { - - targetNames.Add(meshObj.GetBlendShapeName(blendShapeIndex)); - // As described above, a blend shape can have multiple frames. Given that glTF only supports a single frame - // per blend shape, we'll always use the final frame (the one that would be for when 100% weight is applied). - int frameIndex = meshObj.GetBlendShapeFrameCount(blendShapeIndex) - 1; - - var deltaVertices = new Vector3[meshObj.vertexCount]; - var deltaNormals = new Vector3[meshObj.vertexCount]; - var deltaTangents = new Vector3[meshObj.vertexCount]; - meshObj.GetBlendShapeFrameVertices(blendShapeIndex, frameIndex, deltaVertices, deltaNormals, deltaTangents); - - targets.Add(new Dictionary - { - { SemanticProperties.POSITION, ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy( deltaVertices, SchemaExtensions.CoordinateSpaceConversionScale)) }, - { SemanticProperties.NORMAL, ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaNormals,SchemaExtensions.CoordinateSpaceConversionScale))}, - { SemanticProperties.TANGENT, ExportAccessor(SchemaExtensions.ConvertVector3CoordinateSpaceAndCopy(deltaTangents, SchemaExtensions.CoordinateSpaceConversionScale)) }, - }); - - // We need to get the weight from the SkinnedMeshRenderer because this represents the currently - // defined weight by the user to apply to this blend shape. If we instead got the value from - // the unityMesh, it would be a _per frame_ weight, and for a single-frame blend shape, that would - // always be 100. A blend shape might have more than one frame if a user wanted to more tightly - // control how a blend shape will be animated during weight changes (e.g. maybe they want changes - // between 0-50% to be really minor, but between 50-100 to be extreme, hence they'd have two frames - // where the first frame would have a weight of 50 (meaning any weight between 0-50 should be relative - // to the values in this frame) and then any weight between 50-100 would be relevant to the weights in - // the second frame. See Post 20 for more info: - // https://forum.unity3d.com/threads/is-there-some-method-to-add-blendshape-in-editor.298002/#post-2015679 - weights.Add(smr.GetBlendShapeWeight(blendShapeIndex) / 100); - } - - mesh.Weights = weights; - primitive.Targets = targets; - primitive.TargetNames = targetNames; - } - } - - private bool IsPBRMetallicRoughness(Material material) - { - return material.HasProperty("_Metallic") && material.HasProperty("_MetallicGlossMap"); - } - - private bool IsCommonConstant(Material material) - { - return material.HasProperty("_AmbientFactor") && - material.HasProperty("_LightMap") && - material.HasProperty("_LightFactor"); - } - - private void ExportTextureTransform(TextureInfo def, Material mat, string texName) - { - Vector2 offset = mat.GetTextureOffset(texName); - Vector2 scale = mat.GetTextureScale(texName); - - if (offset == Vector2.zero && scale == Vector2.one) return; - - if (_root.ExtensionsUsed == null) - { - _root.ExtensionsUsed = new List( - new[] { ExtTextureTransformExtensionFactory.EXTENSION_NAME } - ); - } - else if (!_root.ExtensionsUsed.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME)) - { - _root.ExtensionsUsed.Add(ExtTextureTransformExtensionFactory.EXTENSION_NAME); - } - - if (RequireExtensions) - { - if (_root.ExtensionsRequired == null) - { - _root.ExtensionsRequired = new List( - new[] { ExtTextureTransformExtensionFactory.EXTENSION_NAME } - ); - } - else if (!_root.ExtensionsRequired.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME)) - { - _root.ExtensionsRequired.Add(ExtTextureTransformExtensionFactory.EXTENSION_NAME); - } - } - - if (def.Extensions == null) - def.Extensions = new Dictionary(); - - def.Extensions[ExtTextureTransformExtensionFactory.EXTENSION_NAME] = new ExtTextureTransformExtension( - new GLTF.Math.Vector2(offset.x, -offset.y), - 0, // TODO: support rotation - new GLTF.Math.Vector2(scale.x, scale.y), - 0 // TODO: support UV channels - ); - } - - private NormalTextureInfo ExportNormalTextureInfo( - Texture texture, - TextureMapType textureMapType, - Material material) - { - var info = new NormalTextureInfo(); - - info.Index = ExportTexture(texture, textureMapType); - - if (material.HasProperty("_BumpScale")) - { - info.Scale = material.GetFloat("_BumpScale"); - } - - return info; - } - - private OcclusionTextureInfo ExportOcclusionTextureInfo( - Texture texture, - TextureMapType textureMapType, - Material material) - { - var info = new OcclusionTextureInfo(); - - info.Index = ExportTexture(texture, textureMapType); - - if (material.HasProperty("_OcclusionStrength")) - { - info.Strength = material.GetFloat("_OcclusionStrength"); - } - - return info; - } - - private PbrMetallicRoughness ExportPBRMetallicRoughness(Material material) - { - var pbr = new PbrMetallicRoughness(); - - if (material.HasProperty("_Color")) - { - pbr.BaseColorFactor = material.GetColor("_Color").ToNumericsColorRaw(); - } - - if (material.HasProperty("_MainTex")) - { - var mainTex = material.GetTexture("_MainTex"); - - if (mainTex != null) - { - if(mainTex is Texture2D) - { - pbr.BaseColorTexture = ExportTextureInfo(mainTex, TextureMapType.Main); - ExportTextureTransform(pbr.BaseColorTexture, material, "_MainTex"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} base texture in material {1}", mainTex.GetType(), material.name); - } - } - } - - if (material.HasProperty("_Metallic")) - { - var metallicGlossMap = material.GetTexture("_MetallicGlossMap"); - pbr.MetallicFactor = (metallicGlossMap != null) ? 1.0 : material.GetFloat("_Metallic"); - } - - if (material.HasProperty("_Glossiness")) - { - var metallicGlossMap = material.GetTexture("_MetallicGlossMap"); - pbr.RoughnessFactor = (metallicGlossMap != null) ? 1.0 : 1.0 - material.GetFloat("_Glossiness"); - } - - if (material.HasProperty("_MetallicGlossMap")) - { - var mrTex = material.GetTexture("_MetallicGlossMap"); - - if (mrTex != null) - { - if(mrTex is Texture2D) - { - pbr.MetallicRoughnessTexture = ExportTextureInfo(mrTex, TextureMapType.MetallicGloss); - ExportTextureTransform(pbr.MetallicRoughnessTexture, material, "_MetallicGlossMap"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} metallic smoothness texture in material {1}", mrTex.GetType(), material.name); - } - } - } - else if (material.HasProperty("_SpecGlossMap")) - { - var mgTex = material.GetTexture("_SpecGlossMap"); - - if (mgTex != null) - { - if(mgTex is Texture2D) - { - pbr.MetallicRoughnessTexture = ExportTextureInfo(mgTex, TextureMapType.SpecGloss); - ExportTextureTransform(pbr.MetallicRoughnessTexture, material, "_SpecGlossMap"); - } - else - { - Debug.LogErrorFormat("Can't export a {0} metallic roughness texture in material {1}", mgTex.GetType(), material.name); - } - } - } - - return pbr; - } - - private MaterialCommonConstant ExportCommonConstant(Material materialObj) - { - if (_root.ExtensionsUsed == null) - { - _root.ExtensionsUsed = new List(new[] { "KHR_materials_common" }); - } - else if (!_root.ExtensionsUsed.Contains("KHR_materials_common")) - { - _root.ExtensionsUsed.Add("KHR_materials_common"); - } - - if (RequireExtensions) - { - if (_root.ExtensionsRequired == null) - { - _root.ExtensionsRequired = new List(new[] { "KHR_materials_common" }); - } - else if (!_root.ExtensionsRequired.Contains("KHR_materials_common")) - { - _root.ExtensionsRequired.Add("KHR_materials_common"); - } - } - - var constant = new MaterialCommonConstant(); - - if (materialObj.HasProperty("_AmbientFactor")) - { - constant.AmbientFactor = materialObj.GetColor("_AmbientFactor").ToNumericsColorRaw(); - } - - if (materialObj.HasProperty("_LightMap")) - { - var lmTex = materialObj.GetTexture("_LightMap"); - - if (lmTex != null) - { - constant.LightmapTexture = ExportTextureInfo(lmTex, TextureMapType.Light); - ExportTextureTransform(constant.LightmapTexture, materialObj, "_LightMap"); - } - - } - - if (materialObj.HasProperty("_LightFactor")) - { - constant.LightmapFactor = materialObj.GetColor("_LightFactor").ToNumericsColorRaw(); - } - - return constant; - } - - private TextureInfo ExportTextureInfo(Texture texture, TextureMapType textureMapType) - { - var info = new TextureInfo(); - - info.Index = ExportTexture(texture, textureMapType); - - return info; - } - - private TextureId ExportTexture(Texture textureObj, TextureMapType textureMapType) - { - TextureId id = GetTextureId(_root, textureObj); - if (id != null) - { - return id; - } - - var texture = new GLTFTexture(); - - //If texture name not set give it a unique name using count - if (textureObj.name == "") - { - textureObj.name = (_root.Textures.Count + 1).ToString(); - } - - if (ExportNames) - { - texture.Name = textureObj.name; - } - - if (_shouldUseInternalBufferForImages) - { - texture.Source = ExportImageInternalBuffer(textureObj, textureMapType); - } - else - { - texture.Source = ExportImage(textureObj, textureMapType); - } - texture.Sampler = ExportSampler(textureObj); - - _textures.Add(textureObj); - - id = new TextureId - { - Id = _root.Textures.Count, - Root = _root - }; - - _root.Textures.Add(texture); - - return id; - } - - private ImageId ExportImage(Texture texture, TextureMapType texturMapType) - { - ImageId id = GetImageId(_root, texture); - if (id != null) - { - return id; - } - - var image = new GLTFImage(); - - if (ExportNames) - { - image.Name = texture.name; - } - - _imageInfos.Add(new ImageInfo - { - texture = texture as Texture2D, - textureMapType = texturMapType - }); - - var imagePath = _exportOptions.TexturePathRetriever(texture); - if (string.IsNullOrEmpty(imagePath)) - { - imagePath = texture.name; - } - - var filenamePath = Path.ChangeExtension(imagePath, ".png"); - if (!ExportFullPath) - { - filenamePath = Path.ChangeExtension(texture.name, ".png"); - } - image.Uri = Uri.EscapeUriString(filenamePath); - - id = new ImageId - { - Id = _root.Images.Count, - Root = _root - }; - - _root.Images.Add(image); - - return id; - } - - private ImageId ExportImageInternalBuffer(UnityEngine.Texture texture, TextureMapType texturMapType) - { - - if (texture == null) - { - throw new Exception("texture can not be NULL."); - } - - var image = new GLTFImage(); - image.MimeType = "image/png"; - - var byteOffset = _bufferWriter.BaseStream.Position; - - {// - var destRenderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); - GL.sRGBWrite = true; - switch (texturMapType) - { - case TextureMapType.MetallicGloss: - Graphics.Blit(texture, destRenderTexture, _metalGlossChannelSwapMaterial); - break; - case TextureMapType.Bump: - Graphics.Blit(texture, destRenderTexture, _normalChannelMaterial); - break; - default: - Graphics.Blit(texture, destRenderTexture); - break; - } - - var exportTexture = new Texture2D(texture.width, texture.height, TextureFormat.ARGB32, false); - exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); - exportTexture.Apply(); - - var pngImageData = exportTexture.EncodeToPNG(); - _bufferWriter.Write(pngImageData); - - RenderTexture.ReleaseTemporary(destRenderTexture); - - GL.sRGBWrite = false; - if (Application.isEditor) - { - UnityEngine.Object.DestroyImmediate(exportTexture); - } - else - { - UnityEngine.Object.Destroy(exportTexture); - } - } - - var byteLength = _bufferWriter.BaseStream.Position - byteOffset; - - byteLength = AppendToBufferMultiplyOf4(byteOffset, byteLength); - - image.BufferView = ExportBufferView((uint)byteOffset, (uint)byteLength); - - - var id = new ImageId - { - Id = _root.Images.Count, - Root = _root - }; - _root.Images.Add(image); - - return id; - } - private SamplerId ExportSampler(Texture texture) - { - var samplerId = GetSamplerId(_root, texture); - if (samplerId != null) - return samplerId; - - var sampler = new Sampler(); - - switch (texture.wrapMode) - { - case TextureWrapMode.Clamp: - sampler.WrapS = WrapMode.ClampToEdge; - sampler.WrapT = WrapMode.ClampToEdge; - break; - case TextureWrapMode.Repeat: - sampler.WrapS = WrapMode.Repeat; - sampler.WrapT = WrapMode.Repeat; - break; - case TextureWrapMode.Mirror: - sampler.WrapS = WrapMode.MirroredRepeat; - sampler.WrapT = WrapMode.MirroredRepeat; - break; - default: - Debug.LogWarning("Unsupported Texture.wrapMode: " + texture.wrapMode); - sampler.WrapS = WrapMode.Repeat; - sampler.WrapT = WrapMode.Repeat; - break; - } - - switch (texture.filterMode) - { - case FilterMode.Point: - sampler.MinFilter = MinFilterMode.NearestMipmapNearest; - sampler.MagFilter = MagFilterMode.Nearest; - break; - case FilterMode.Bilinear: - sampler.MinFilter = MinFilterMode.LinearMipmapNearest; - sampler.MagFilter = MagFilterMode.Linear; - break; - case FilterMode.Trilinear: - sampler.MinFilter = MinFilterMode.LinearMipmapLinear; - sampler.MagFilter = MagFilterMode.Linear; - break; - default: - Debug.LogWarning("Unsupported Texture.filterMode: " + texture.filterMode); - sampler.MinFilter = MinFilterMode.LinearMipmapLinear; - sampler.MagFilter = MagFilterMode.Linear; - break; - } - - samplerId = new SamplerId - { - Id = _root.Samplers.Count, - Root = _root - }; - - _root.Samplers.Add(sampler); - - return samplerId; - } - - private AccessorId ExportAccessor(int[] arr, bool isIndices = false) - { - uint count = (uint)arr.Length; - - if (count == 0) - { - throw new Exception("Accessors can not have a count of 0."); - } - - var accessor = new Accessor(); - accessor.Count = count; - accessor.Type = GLTFAccessorAttributeType.SCALAR; - - int min = arr[0]; - int max = arr[0]; - - for (var i = 1; i < count; i++) - { - var cur = arr[i]; - - if (cur < min) - { - min = cur; - } - if (cur > max) - { - max = cur; - } - } - - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); - - if (max <= byte.MaxValue && min >= byte.MinValue) - { - accessor.ComponentType = GLTFComponentType.UnsignedByte; - - foreach (var v in arr) - { - _bufferWriter.Write((byte)v); - } - } - else if (max <= sbyte.MaxValue && min >= sbyte.MinValue && !isIndices) - { - accessor.ComponentType = GLTFComponentType.Byte; - - foreach (var v in arr) - { - _bufferWriter.Write((sbyte)v); - } - } - else if (max <= short.MaxValue && min >= short.MinValue && !isIndices) - { - accessor.ComponentType = GLTFComponentType.Short; - - foreach (var v in arr) - { - _bufferWriter.Write((short)v); - } - } - else if (max <= ushort.MaxValue && min >= ushort.MinValue) - { - accessor.ComponentType = GLTFComponentType.UnsignedShort; - - foreach (var v in arr) - { - _bufferWriter.Write((ushort)v); - } - } - else if (min >= uint.MinValue) - { - accessor.ComponentType = GLTFComponentType.UnsignedInt; - - foreach (var v in arr) - { - _bufferWriter.Write((uint)v); - } - } - else - { - accessor.ComponentType = GLTFComponentType.Float; - - foreach (var v in arr) - { - _bufferWriter.Write((float)v); - } - } - - accessor.Min = new List { min }; - accessor.Max = new List { max }; - - uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); - - accessor.BufferView = ExportBufferView(byteOffset, byteLength); - - var id = new AccessorId - { - Id = _root.Accessors.Count, - Root = _root - }; - _root.Accessors.Add(accessor); - - return id; - } - - private long AppendToBufferMultiplyOf4(long byteOffset, long byteLength) - { - var moduloOffset = byteLength % 4; - if (moduloOffset > 0) - { - for (int i = 0; i < (4 - moduloOffset); i++) - { - _bufferWriter.Write((byte)0x00); - } - byteLength = _bufferWriter.BaseStream.Position - byteOffset; - } - - return byteLength; - } - - private AccessorId ExportAccessor(Vector2[] arr) - { - uint count = (uint)arr.Length; - - if (count == 0) - { - throw new Exception("Accessors can not have a count of 0."); - } - - var accessor = new Accessor(); - accessor.ComponentType = GLTFComponentType.Float; - accessor.Count = count; - accessor.Type = GLTFAccessorAttributeType.VEC2; - - float minX = arr[0].x; - float minY = arr[0].y; - float maxX = arr[0].x; - float maxY = arr[0].y; - - for (var i = 1; i < count; i++) - { - var cur = arr[i]; - - if (cur.x < minX) - { - minX = cur.x; - } - if (cur.y < minY) - { - minY = cur.y; - } - if (cur.x > maxX) - { - maxX = cur.x; - } - if (cur.y > maxY) - { - maxY = cur.y; - } - } - - accessor.Min = new List { minX, minY }; - accessor.Max = new List { maxX, maxY }; - - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); - - foreach (var vec in arr) - { - _bufferWriter.Write(vec.x); - _bufferWriter.Write(vec.y); - } - - uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); - - accessor.BufferView = ExportBufferView(byteOffset, byteLength); - - var id = new AccessorId - { - Id = _root.Accessors.Count, - Root = _root - }; - _root.Accessors.Add(accessor); - - return id; - } - - private AccessorId ExportAccessor(Vector3[] arr) - { - uint count = (uint)arr.Length; - - if (count == 0) - { - throw new Exception("Accessors can not have a count of 0."); - } - - var accessor = new Accessor(); - accessor.ComponentType = GLTFComponentType.Float; - accessor.Count = count; - accessor.Type = GLTFAccessorAttributeType.VEC3; - - float minX = arr[0].x; - float minY = arr[0].y; - float minZ = arr[0].z; - float maxX = arr[0].x; - float maxY = arr[0].y; - float maxZ = arr[0].z; - - for (var i = 1; i < count; i++) - { - var cur = arr[i]; - - if (cur.x < minX) - { - minX = cur.x; - } - if (cur.y < minY) - { - minY = cur.y; - } - if (cur.z < minZ) - { - minZ = cur.z; - } - if (cur.x > maxX) - { - maxX = cur.x; - } - if (cur.y > maxY) - { - maxY = cur.y; - } - if (cur.z > maxZ) - { - maxZ = cur.z; - } - } - - accessor.Min = new List { minX, minY, minZ }; - accessor.Max = new List { maxX, maxY, maxZ }; - - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); - - foreach (var vec in arr) - { - _bufferWriter.Write(vec.x); - _bufferWriter.Write(vec.y); - _bufferWriter.Write(vec.z); - } - - uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); - - accessor.BufferView = ExportBufferView(byteOffset, byteLength); - - var id = new AccessorId - { - Id = _root.Accessors.Count, - Root = _root - }; - _root.Accessors.Add(accessor); - - return id; - } - - private AccessorId ExportAccessor(Vector4[] arr) - { - uint count = (uint)arr.Length; - - if (count == 0) - { - throw new Exception("Accessors can not have a count of 0."); - } - - var accessor = new Accessor(); - accessor.ComponentType = GLTFComponentType.Float; - accessor.Count = count; - accessor.Type = GLTFAccessorAttributeType.VEC4; - - float minX = arr[0].x; - float minY = arr[0].y; - float minZ = arr[0].z; - float minW = arr[0].w; - float maxX = arr[0].x; - float maxY = arr[0].y; - float maxZ = arr[0].z; - float maxW = arr[0].w; - - for (var i = 1; i < count; i++) - { - var cur = arr[i]; - - if (cur.x < minX) - { - minX = cur.x; - } - if (cur.y < minY) - { - minY = cur.y; - } - if (cur.z < minZ) - { - minZ = cur.z; - } - if (cur.w < minW) - { - minW = cur.w; - } - if (cur.x > maxX) - { - maxX = cur.x; - } - if (cur.y > maxY) - { - maxY = cur.y; - } - if (cur.z > maxZ) - { - maxZ = cur.z; - } - if (cur.w > maxW) - { - maxW = cur.w; - } - } - - accessor.Min = new List { minX, minY, minZ, minW }; - accessor.Max = new List { maxX, maxY, maxZ, maxW }; - - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); - - foreach (var vec in arr) - { - _bufferWriter.Write(vec.x); - _bufferWriter.Write(vec.y); - _bufferWriter.Write(vec.z); - _bufferWriter.Write(vec.w); - } - - uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); - - accessor.BufferView = ExportBufferView(byteOffset, byteLength); - - var id = new AccessorId - { - Id = _root.Accessors.Count, - Root = _root - }; - _root.Accessors.Add(accessor); - - return id; - } - - private AccessorId ExportAccessor(Color[] arr) - { - uint count = (uint)arr.Length; - - if (count == 0) - { - throw new Exception("Accessors can not have a count of 0."); - } - - var accessor = new Accessor(); - accessor.ComponentType = GLTFComponentType.Float; - accessor.Count = count; - accessor.Type = GLTFAccessorAttributeType.VEC4; - - float minR = arr[0].r; - float minG = arr[0].g; - float minB = arr[0].b; - float minA = arr[0].a; - float maxR = arr[0].r; - float maxG = arr[0].g; - float maxB = arr[0].b; - float maxA = arr[0].a; - - for (var i = 1; i < count; i++) - { - var cur = arr[i]; - - if (cur.r < minR) - { - minR = cur.r; - } - if (cur.g < minG) - { - minG = cur.g; - } - if (cur.b < minB) - { - minB = cur.b; - } - if (cur.a < minA) - { - minA = cur.a; - } - if (cur.r > maxR) - { - maxR = cur.r; - } - if (cur.g > maxG) - { - maxG = cur.g; - } - if (cur.b > maxB) - { - maxB = cur.b; - } - if (cur.a > maxA) - { - maxA = cur.a; - } - } - - accessor.Min = new List { minR, minG, minB, minA }; - accessor.Max = new List { maxR, maxG, maxB, maxA }; - - AlignToBoundary(_bufferWriter.BaseStream, 0x00); - uint byteOffset = CalculateAlignment((uint)_bufferWriter.BaseStream.Position, 4); - - foreach (var color in arr) - { - _bufferWriter.Write(color.r); - _bufferWriter.Write(color.g); - _bufferWriter.Write(color.b); - _bufferWriter.Write(color.a); - } - - uint byteLength = CalculateAlignment((uint)_bufferWriter.BaseStream.Position - byteOffset, 4); - - accessor.BufferView = ExportBufferView(byteOffset, byteLength); - - var id = new AccessorId - { - Id = _root.Accessors.Count, - Root = _root - }; - _root.Accessors.Add(accessor); - - return id; - } - - private BufferViewId ExportBufferView(uint byteOffset, uint byteLength) - { - var bufferView = new BufferView - { - Buffer = _bufferId, - ByteOffset = byteOffset, - ByteLength = byteLength - }; - - var id = new BufferViewId - { - Id = _root.BufferViews.Count, - Root = _root - }; - - _root.BufferViews.Add(bufferView); - - return id; - } - - public MaterialId GetMaterialId(GLTFRoot root, Material materialObj) - { - for (var i = 0; i < _materials.Count; i++) - { - if (_materials[i] == materialObj) - { - return new MaterialId - { - Id = i, - Root = root - }; - } - } - - return null; - } - - public TextureId GetTextureId(GLTFRoot root, Texture textureObj) - { - for (var i = 0; i < _textures.Count; i++) - { - if (_textures[i] == textureObj) - { - return new TextureId - { - Id = i, - Root = root - }; - } - } - - return null; - } - - public ImageId GetImageId(GLTFRoot root, Texture imageObj) - { - for (var i = 0; i < _imageInfos.Count; i++) - { - if (_imageInfos[i].texture == imageObj) - { - return new ImageId - { - Id = i, - Root = root - }; - } - } - - return null; - } - - public SamplerId GetSamplerId(GLTFRoot root, Texture textureObj) - { - for (var i = 0; i < root.Samplers.Count; i++) - { - bool filterIsNearest = root.Samplers[i].MinFilter == MinFilterMode.Nearest - || root.Samplers[i].MinFilter == MinFilterMode.NearestMipmapNearest - || root.Samplers[i].MinFilter == MinFilterMode.NearestMipmapLinear; - - bool filterIsLinear = root.Samplers[i].MinFilter == MinFilterMode.Linear - || root.Samplers[i].MinFilter == MinFilterMode.LinearMipmapNearest; - - bool filterMatched = textureObj.filterMode == FilterMode.Point && filterIsNearest - || textureObj.filterMode == FilterMode.Bilinear && filterIsLinear - || textureObj.filterMode == FilterMode.Trilinear && root.Samplers[i].MinFilter == MinFilterMode.LinearMipmapLinear; - - bool wrapMatched = textureObj.wrapMode == TextureWrapMode.Clamp && root.Samplers[i].WrapS == WrapMode.ClampToEdge - || textureObj.wrapMode == TextureWrapMode.Repeat && root.Samplers[i].WrapS == WrapMode.Repeat - || textureObj.wrapMode == TextureWrapMode.Mirror && root.Samplers[i].WrapS == WrapMode.MirroredRepeat; - - if (filterMatched && wrapMatched) - { - return new SamplerId - { - Id = i, - Root = root - }; - } - } - - return null; - } - - protected static DrawMode GetDrawMode(MeshTopology topology) - { - switch (topology) - { - case MeshTopology.Points: return DrawMode.Points; - case MeshTopology.Lines: return DrawMode.Lines; - case MeshTopology.LineStrip: return DrawMode.LineStrip; - case MeshTopology.Triangles: return DrawMode.Triangles; - } - - throw new Exception("glTF does not support Unity mesh topology: " + topology); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneImporter.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneImporter.cs deleted file mode 100644 index e9f9334d1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/GLTFSceneImporter.cs +++ /dev/null @@ -1,2406 +0,0 @@ -using GLTF; -using GLTF.Extensions; -using GLTF.Schema; -using GLTF.Utilities; -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.ExceptionServices; -using System.Threading; -using System.Threading.Tasks; -using UnityEngine; -using UnityEngine.Rendering; -using UnityGLTF.Cache; -using UnityGLTF.Extensions; -using UnityGLTF.Loader; -using Matrix4x4 = GLTF.Math.Matrix4x4; -using Object = UnityEngine.Object; -#if !WINDOWS_UWP -using ThreadPriority = System.Threading.ThreadPriority; -#endif -using WrapMode = UnityEngine.WrapMode; - -namespace UnityGLTF -{ - public class ImportOptions - { -#pragma warning disable CS0618 // Type or member is obsolete - public ILoader ExternalDataLoader = null; -#pragma warning restore CS0618 // Type or member is obsolete - - /// - /// Optional for loading references from the GLTF to external streams. May also optionally implement . - /// - public IDataLoader DataLoader = null; - public AsyncCoroutineHelper AsyncCoroutineHelper = null; - public bool ThrowOnLowMemory = true; - } - - public class UnityMeshData - { - public Vector3[] Vertices; - public Vector3[] Normals; - public Vector4[] Tangents; - public Vector2[] Uv1; - public Vector2[] Uv2; - public Vector2[] Uv3; - public Vector2[] Uv4; - public Color[] Colors; - public BoneWeight[] BoneWeights; - - public Vector3[][] MorphTargetVertices; - public Vector3[][] MorphTargetNormals; - public Vector3[][] MorphTargetTangents; - - public MeshTopology[] Topology; - public int[][] Indices; - } - - public struct ImportProgress - { - public bool IsDownloaded; - - public int NodeTotal; - public int NodeLoaded; - - public int TextureTotal; - public int TextureLoaded; - - public int BuffersTotal; - public int BuffersLoaded; - - public float Progress - { - get - { - int total = NodeTotal + TextureTotal + BuffersTotal; - int loaded = NodeLoaded + TextureLoaded + BuffersLoaded; - if (total > 0) - { - return (float)loaded / total; - } - else - { - return 0.0f; - } - } - } - } - - public struct ImportStatistics - { - public long TriangleCount; - public long VertexCount; - } - - /// - /// Converts gltf animation data to unity - /// - public delegate float[] ValuesConvertion(NumericArray data, int frame); - - public class GLTFSceneImporter : IDisposable - { - public enum ColliderType - { - None, - Box, - Mesh, - MeshConvex - } - - /// - /// Maximum LOD - /// - public int MaximumLod = 300; - - /// - /// Timeout for certain threading operations - /// - public int Timeout = 8; - - private bool _isMultithreaded; - - /// - /// Use Multithreading or not. - /// In editor, this is always false. This is to prevent a freeze in editor (noticed in Unity versions 2017.x and 2018.x) - /// - public bool IsMultithreaded - { - get - { - return Application.isEditor ? false : _isMultithreaded; - } - set - { - _isMultithreaded = value; - } - } - - /// - /// The parent transform for the created GameObject - /// - public Transform SceneParent { get; set; } - - /// - /// The last created object - /// - public GameObject CreatedObject { get; private set; } - - /// - /// Adds colliders to primitive objects when created - /// - public ColliderType Collider { get; set; } - - /// - /// Override for the shader to use on created materials - /// - public string CustomShaderName { get; set; } - - /// - /// Whether to keep a CPU-side copy of the mesh after upload to GPU (for example, in case normals/tangents need recalculation) - /// - public bool KeepCPUCopyOfMesh = true; - - /// - /// Whether to keep a CPU-side copy of the texture after upload to GPU - /// - /// - /// This is is necessary when a texture is used with different sampler states, as Unity doesn't allow setting - /// of filter and wrap modes separately form the texture object. Setting this to false will omit making a copy - /// of a texture in that case and use the original texture's sampler state wherever it's referenced; this is - /// appropriate in cases such as the filter and wrap modes being specified in the shader instead - /// - public bool KeepCPUCopyOfTexture = true; - - /// - /// Specifies whether the MipMap chain should be generated for model textures - /// - public bool GenerateMipMapsForTextures = true; - - /// - /// When screen coverage is above threashold and no LOD mesh cull the object - /// - public bool CullFarLOD = false; - - /// - /// Statistics from the scene - /// - public ImportStatistics Statistics; - - protected struct GLBStream - { - public Stream Stream; - public long StartPosition; - } - - protected ImportOptions _options; - protected MemoryChecker _memoryChecker; - - protected GameObject _lastLoadedScene; - protected readonly GLTFMaterial DefaultMaterial = new GLTFMaterial(); - protected MaterialCacheData _defaultLoadedMaterial = null; - - protected string _gltfFileName; - protected GLBStream _gltfStream; - protected GLTFRoot _gltfRoot; - protected AssetCache _assetCache; - protected bool _isRunning = false; - - protected ImportProgress progressStatus = default(ImportProgress); - protected IProgress progress = null; - - public GLTFSceneImporter(string gltfFileName, ImportOptions options) - { - _gltfFileName = gltfFileName; - _options = options; - if (_options.DataLoader == null) - { - _options.DataLoader = LegacyLoaderWrapper.Wrap(_options.ExternalDataLoader); - } - } - - public GLTFSceneImporter(GLTFRoot rootNode, Stream gltfStream, ImportOptions options) - { - _gltfRoot = rootNode; - - if (gltfStream != null) - { - _gltfStream = new GLBStream { Stream = gltfStream, StartPosition = gltfStream.Position }; - } - - _options = options; - if (_options.DataLoader == null) - { - _options.DataLoader = LegacyLoaderWrapper.Wrap(_options.ExternalDataLoader); - } - } - - /// - /// Creates a GLTFSceneBuilder object which will be able to construct a scene based off a url - /// - /// glTF file relative to data loader path - /// Loader to load external data references - /// Helper to load coroutines on a seperate thread - [Obsolete("Please switch to GLTFSceneImporter(string gltfFileName, ImportOptions options). This constructor is deprecated and will be removed in a future release.")] - public GLTFSceneImporter(string gltfFileName, ILoader externalDataLoader, AsyncCoroutineHelper asyncCoroutineHelper) - : this(externalDataLoader, asyncCoroutineHelper) - { - _gltfFileName = gltfFileName; - } - - [Obsolete("Please switch to GLTFSceneImporter(GLTFRoot rootNode, Stream gltfStream, ImportOptions options). This constructor is deprecated and will be removed in a future release.")] - public GLTFSceneImporter(GLTFRoot rootNode, ILoader externalDataLoader, AsyncCoroutineHelper asyncCoroutineHelper, Stream gltfStream = null) - : this(externalDataLoader, asyncCoroutineHelper) - { - _gltfRoot = rootNode; - - if (gltfStream != null) - { - _gltfStream = new GLBStream { Stream = gltfStream, StartPosition = gltfStream.Position }; - } - } - - [Obsolete("Only called by obsolete public constructors. This will be removed when those obsolete constructors are removed.")] - private GLTFSceneImporter(ILoader externalDataLoader, AsyncCoroutineHelper asyncCoroutineHelper) - { - _options = new ImportOptions - { - DataLoader = LegacyLoaderWrapper.Wrap(externalDataLoader), - AsyncCoroutineHelper = asyncCoroutineHelper - }; - } - - public void Dispose() - { - Cleanup(); - } - - public GameObject LastLoadedScene - { - get { return _lastLoadedScene; } - } - - /// - /// Loads a glTF Scene into the LastLoadedScene field - /// - /// The scene to load, If the index isn't specified, we use the default index in the file. Failing that we load index 0. - /// - /// Callback function for when load is completed - /// Cancellation token for loading - /// - public async Task LoadSceneAsync(int sceneIndex = -1, bool showSceneObj = true, Action onLoadComplete = null, CancellationToken cancellationToken = default(CancellationToken), IProgress progress = null) - { - try - { - lock (this) - { - if (_isRunning) - { - throw new GLTFLoadException("Cannot call LoadScene while GLTFSceneImporter is already running"); - } - - _isRunning = true; - } - - if (_options.ThrowOnLowMemory) - { - _memoryChecker = new MemoryChecker(); - } - - this.progressStatus = new ImportProgress(); - this.progress = progress; - - Statistics = new ImportStatistics(); - progress?.Report(progressStatus); - - if (_gltfRoot == null) - { - await LoadJson(_gltfFileName); - progressStatus.IsDownloaded = true; - } - - cancellationToken.ThrowIfCancellationRequested(); - - if (_assetCache == null) - { - _assetCache = new AssetCache(_gltfRoot); - } - - await _LoadScene(sceneIndex, showSceneObj, cancellationToken); - } - catch (Exception ex) - { - Cleanup(); - - onLoadComplete?.Invoke(null, ExceptionDispatchInfo.Capture(ex)); - throw; - } - finally - { - lock (this) - { - _isRunning = false; - } - } - - Debug.Assert(progressStatus.NodeLoaded == progressStatus.NodeTotal, $"Nodes loaded ({progressStatus.NodeLoaded}) does not match node total in the scene ({progressStatus.NodeTotal})"); - Debug.Assert(progressStatus.TextureLoaded <= progressStatus.TextureTotal, $"Textures loaded ({progressStatus.TextureLoaded}) is larger than texture total in the scene ({progressStatus.TextureTotal})"); - - onLoadComplete?.Invoke(LastLoadedScene, null); - } - - public IEnumerator LoadScene(int sceneIndex = -1, bool showSceneObj = true, Action onLoadComplete = null) - { - return LoadSceneAsync(sceneIndex, showSceneObj, onLoadComplete).AsCoroutine(); - } - - /// - /// Loads a node tree from a glTF file into the LastLoadedScene field - /// - /// The node index to load from the glTF - /// - public async Task LoadNodeAsync(int nodeIndex, CancellationToken cancellationToken) - { - await SetupLoad(async () => - { - CreatedObject = await GetNode(nodeIndex, cancellationToken); - InitializeGltfTopLevelObject(); - }); - } - - /// - /// Load a Material from the glTF by index - /// - /// - /// - public virtual async Task LoadMaterialAsync(int materialIndex) - { - await SetupLoad(async () => - { - if (materialIndex < 0 || materialIndex >= _gltfRoot.Materials.Count) - { - throw new ArgumentException($"There is no material for index {materialIndex}"); - } - - if (_assetCache.MaterialCache[materialIndex] == null) - { - var def = _gltfRoot.Materials[materialIndex]; - await ConstructMaterialImageBuffers(def); - await ConstructMaterial(def, materialIndex); - } - }); - return _assetCache.MaterialCache[materialIndex].UnityMaterialWithVertexColor; - } - - /// - /// Load a Mesh from the glTF by index - /// - /// - /// - public virtual async Task LoadMeshAsync(int meshIndex, CancellationToken cancellationToken) - { - await SetupLoad(async () => - { - if (meshIndex < 0 || meshIndex >= _gltfRoot.Meshes.Count) - { - throw new ArgumentException($"There is no mesh for index {meshIndex}"); - } - - if (_assetCache.MeshCache[meshIndex] == null) - { - var def = _gltfRoot.Meshes[meshIndex]; - await ConstructMeshAttributes(def, new MeshId() { Id = meshIndex, Root = _gltfRoot }); - await ConstructMesh(def, meshIndex, cancellationToken); - } - }); - return _assetCache.MeshCache[meshIndex].LoadedMesh; - } - - /// - /// Initializes the top-level created node by adding an instantiated GLTF object component to it, - /// so that it can cleanup after itself properly when destroyed - /// - private void InitializeGltfTopLevelObject() - { - InstantiatedGLTFObject instantiatedGltfObject = CreatedObject.AddComponent(); - instantiatedGltfObject.CachedData = new RefCountedCacheData - ( - _assetCache.MaterialCache, - _assetCache.MeshCache, - _assetCache.TextureCache, - _assetCache.ImageCache - ); - } - - private async Task ConstructBufferData(Node node, CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - MeshId mesh = node.Mesh; - if (mesh != null) - { - if (mesh.Value.Primitives != null) - { - await ConstructMeshAttributes(mesh.Value, mesh); - } - } - - if (node.Children != null) - { - foreach (NodeId child in node.Children) - { - await ConstructBufferData(child.Value, cancellationToken); - } - } - - const string msft_LODExtName = MSFT_LODExtensionFactory.EXTENSION_NAME; - MSFT_LODExtension lodsextension = null; - if (_gltfRoot.ExtensionsUsed != null - && _gltfRoot.ExtensionsUsed.Contains(msft_LODExtName) - && node.Extensions != null - && node.Extensions.ContainsKey(msft_LODExtName)) - { - lodsextension = node.Extensions[msft_LODExtName] as MSFT_LODExtension; - if (lodsextension != null && lodsextension.MeshIds.Count > 0) - { - for (int i = 0; i < lodsextension.MeshIds.Count; i++) - { - int lodNodeId = lodsextension.MeshIds[i]; - await ConstructBufferData(_gltfRoot.Nodes[lodNodeId], cancellationToken); - } - } - } - } - - private async Task ConstructMeshAttributes(GLTFMesh mesh, MeshId meshId) - { - int meshIndex = meshId.Id; - - if (_assetCache.MeshCache[meshIndex] == null) - _assetCache.MeshCache[meshIndex] = new MeshCacheData(); - else if (_assetCache.MeshCache[meshIndex].Primitives.Count > 0) - return; - - for (int i = 0; i < mesh.Primitives.Count; ++i) - { - MeshPrimitive primitive = mesh.Primitives[i]; - - await ConstructPrimitiveAttributes(primitive, meshIndex, i); - - if (primitive.Material != null) - { - await ConstructMaterialImageBuffers(primitive.Material.Value); - } - - if (primitive.Targets != null) - { - // read mesh primitive targets into assetcache - await ConstructMeshTargets(primitive, meshIndex, i); - } - } - } - - protected async Task ConstructImageBuffer(GLTFTexture texture, int textureIndex) - { - int sourceId = GetTextureSourceId(texture); - if (_assetCache.ImageStreamCache[sourceId] == null) - { - GLTFImage image = _gltfRoot.Images[sourceId]; - - // we only load the streams if not a base64 uri, meaning the data is in the uri - if (image.Uri != null && !URIHelper.IsBase64Uri(image.Uri)) - { - _assetCache.ImageStreamCache[sourceId] = await _options.DataLoader.LoadStreamAsync(image.Uri); - } - else if (image.Uri == null && image.BufferView != null && _assetCache.BufferCache[image.BufferView.Value.Buffer.Id] == null) - { - int bufferIndex = image.BufferView.Value.Buffer.Id; - await ConstructBuffer(_gltfRoot.Buffers[bufferIndex], bufferIndex); - } - } - - if (_assetCache.TextureCache[textureIndex] == null) - { - _assetCache.TextureCache[textureIndex] = new TextureCacheData - { - TextureDefinition = texture - }; - } - } - - protected IEnumerator WaitUntilEnum(WaitUntil waitUntil) - { - yield return waitUntil; - } - - private async Task LoadJson(string jsonFilePath) - { -#if !WINDOWS_UWP - var dataLoader2 = _options.DataLoader as IDataLoader2; - if (IsMultithreaded && dataLoader2 != null) - { - Thread loadThread = new Thread(() => _gltfStream.Stream = dataLoader2.LoadStream(jsonFilePath)); - loadThread.Priority = ThreadPriority.Highest; - loadThread.Start(); - RunCoroutineSync(WaitUntilEnum(new WaitUntil(() => !loadThread.IsAlive))); - } - else -#endif - { - _gltfStream.Stream = await _options.DataLoader.LoadStreamAsync(jsonFilePath); - } - - _gltfStream.StartPosition = 0; - -#if !WINDOWS_UWP - if (IsMultithreaded) - { - Thread parseJsonThread = new Thread(() => GLTFParser.ParseJson(_gltfStream.Stream, out _gltfRoot, _gltfStream.StartPosition)); - parseJsonThread.Priority = ThreadPriority.Highest; - parseJsonThread.Start(); - RunCoroutineSync(WaitUntilEnum(new WaitUntil(() => !parseJsonThread.IsAlive))); - if (_gltfRoot == null) - { - throw new GLTFLoadException("Failed to parse glTF"); - } - } - else -#endif - { - GLTFParser.ParseJson(_gltfStream.Stream, out _gltfRoot, _gltfStream.StartPosition); - } - } - - private static void RunCoroutineSync(IEnumerator streamEnum) - { - var stack = new Stack(); - stack.Push(streamEnum); - while (stack.Count > 0) - { - var enumerator = stack.Pop(); - if (enumerator.MoveNext()) - { - stack.Push(enumerator); - var subEnumerator = enumerator.Current as IEnumerator; - if (subEnumerator != null) - { - stack.Push(subEnumerator); - } - } - } - } - - - /// - /// Creates a scene based off loaded JSON. Includes loading in binary and image data to construct the meshes required. - /// - /// The bufferIndex of scene in gltf file to load - /// - protected async Task _LoadScene(int sceneIndex = -1, bool showSceneObj = true, CancellationToken cancellationToken = default(CancellationToken)) - { - GLTFScene scene; - - if (sceneIndex >= 0 && sceneIndex < _gltfRoot.Scenes.Count) - { - scene = _gltfRoot.Scenes[sceneIndex]; - } - else - { - scene = _gltfRoot.GetDefaultScene(); - } - - if (scene == null) - { - throw new GLTFLoadException("No default scene in gltf file."); - } - - GetGtlfContentTotals(scene); - - await ConstructScene(scene, showSceneObj, cancellationToken); - - if (SceneParent != null) - { - CreatedObject.transform.SetParent(SceneParent, false); - } - - _lastLoadedScene = CreatedObject; - } - - private void GetGtlfContentTotals(GLTFScene scene) - { - // Count Nodes - Queue nodeQueue = new Queue(); - - // Add scene nodes - if (scene.Nodes != null) - { - for (int i = 0; i < scene.Nodes.Count; ++i) - { - nodeQueue.Enqueue(scene.Nodes[i]); - } - } - - // BFS of nodes - while (nodeQueue.Count > 0) - { - var cur = nodeQueue.Dequeue(); - progressStatus.NodeTotal++; - - if (cur.Value.Children != null) - { - for (int i = 0; i < cur.Value.Children.Count; ++i) - { - nodeQueue.Enqueue(cur.Value.Children[i]); - } - } - } - - // Total textures - progressStatus.TextureTotal += _gltfRoot.Textures?.Count ?? 0; - - // Total buffers - progressStatus.BuffersTotal += _gltfRoot.Buffers?.Count ?? 0; - - // Send report - progress?.Report(progressStatus); - } - - private async Task GetBufferData(BufferId bufferId) - { - if (_assetCache.BufferCache[bufferId.Id] == null) - { - await ConstructBuffer(bufferId.Value, bufferId.Id); - } - - return _assetCache.BufferCache[bufferId.Id]; - } - - protected async Task ConstructBuffer(GLTFBuffer buffer, int bufferIndex) - { - if (buffer.Uri == null) - { - Debug.Assert(_assetCache.BufferCache[bufferIndex] == null); - _assetCache.BufferCache[bufferIndex] = ConstructBufferFromGLB(bufferIndex); - - progressStatus.BuffersLoaded++; - progress?.Report(progressStatus); - } - else - { - Stream bufferDataStream = null; - var uri = buffer.Uri; - - byte[] bufferData; - URIHelper.TryParseBase64(uri, out bufferData); - if (bufferData != null) - { - bufferDataStream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); - } - else - { - bufferDataStream = await _options.DataLoader.LoadStreamAsync(buffer.Uri); - } - - Debug.Assert(_assetCache.BufferCache[bufferIndex] == null); - _assetCache.BufferCache[bufferIndex] = new BufferCacheData - { - Stream = bufferDataStream - }; - - progressStatus.BuffersLoaded++; - progress?.Report(progressStatus); - } - } - - protected async Task ConstructImage(GLTFImage image, int imageCacheIndex, bool markGpuOnly, bool isLinear) - { - if (_assetCache.ImageCache[imageCacheIndex] == null) - { - Stream stream = null; - if (image.Uri == null) - { - var bufferView = image.BufferView.Value; - var data = new byte[bufferView.ByteLength]; - - BufferCacheData bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; - bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; - stream = new SubStream(bufferContents.Stream, 0, data.Length); - } - else - { - string uri = image.Uri; - - byte[] bufferData; - URIHelper.TryParseBase64(uri, out bufferData); - if (bufferData != null) - { - stream = new MemoryStream(bufferData, 0, bufferData.Length, false, true); - } - else - { - stream = _assetCache.ImageStreamCache[imageCacheIndex]; - } - } - - await YieldOnTimeoutAndThrowOnLowMemory(); - await ConstructUnityTexture(stream, markGpuOnly, isLinear, image, imageCacheIndex); - } - } - - protected virtual async Task ConstructUnityTexture(Stream stream, bool markGpuOnly, bool isLinear, GLTFImage image, int imageCacheIndex) - { - Texture2D texture = new Texture2D(0, 0, TextureFormat.RGBA32, GenerateMipMapsForTextures, isLinear); - texture.name = nameof(GLTFSceneImporter) + (image.Name != null ? ("." + image.Name) : ""); - - if (stream is MemoryStream) - { - using (MemoryStream memoryStream = stream as MemoryStream) - { - await YieldOnTimeoutAndThrowOnLowMemory(); - texture.LoadImage(memoryStream.ToArray(), markGpuOnly); - } - } - else - { - byte[] buffer = new byte[stream.Length]; - - // todo: potential optimization is to split stream read into multiple frames (or put it on a thread?) - if (stream.Length > int.MaxValue) - { - throw new Exception("Stream is larger than can be copied into byte array"); - } - stream.Read(buffer, 0, (int)stream.Length); - - await YieldOnTimeoutAndThrowOnLowMemory(); - // NOTE: the second parameter of LoadImage() marks non-readable, but we can't mark it until after we call Apply() - texture.LoadImage(buffer, markGpuOnly); - } - - Debug.Assert(_assetCache.ImageCache[imageCacheIndex] == null, "ImageCache should not be loaded multiple times"); - progressStatus.TextureLoaded++; - progress?.Report(progressStatus); - _assetCache.ImageCache[imageCacheIndex] = texture; - } - - protected virtual async Task ConstructMeshTargets(MeshPrimitive primitive, int meshIndex, int primitiveIndex) - { - var newTargets = new List>(primitive.Targets.Count); - _assetCache.MeshCache[meshIndex].Primitives[primitiveIndex].Targets = newTargets; - - for (int i = 0; i < primitive.Targets.Count; i++) - { - var target = primitive.Targets[i]; - newTargets.Add(new Dictionary()); - - //NORMALS, POSITIONS, TANGENTS - foreach (var targetAttribute in target) - { - BufferId bufferIdPair = targetAttribute.Value.Value.BufferView.Value.Buffer; - GLTFBuffer buffer = bufferIdPair.Value; - int bufferID = bufferIdPair.Id; - - if (_assetCache.BufferCache[bufferID] == null) - { - await ConstructBuffer(buffer, bufferID); - } - - newTargets[i][targetAttribute.Key] = new AttributeAccessor - { - AccessorId = targetAttribute.Value, - Stream = _assetCache.BufferCache[bufferID].Stream, - Offset = (uint)_assetCache.BufferCache[bufferID].ChunkOffset - }; - - } - - var att = newTargets[i]; - GLTFHelpers.BuildTargetAttributes(ref att); - TransformTargets(ref att); - } - } - - // Flip vectors to Unity coordinate system - private void TransformTargets(ref Dictionary attributeAccessors) - { - if (attributeAccessors.ContainsKey(SemanticProperties.POSITION)) - { - AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.POSITION]; - SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); - } - - if (attributeAccessors.ContainsKey(SemanticProperties.NORMAL)) - { - AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.NORMAL]; - SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); - } - - if (attributeAccessors.ContainsKey(SemanticProperties.TANGENT)) - { - AttributeAccessor attributeAccessor = attributeAccessors[SemanticProperties.TANGENT]; - SchemaExtensions.ConvertVector3CoordinateSpace(ref attributeAccessor, SchemaExtensions.CoordinateSpaceConversionScale); - } - } - - protected virtual async Task ConstructPrimitiveAttributes(MeshPrimitive primitive, int meshIndex, int primitiveIndex) - { - var primData = new MeshCacheData.PrimitiveCacheData(); - _assetCache.MeshCache[meshIndex].Primitives.Add(primData); - - var attributeAccessors = primData.Attributes; - foreach (var attributePair in primitive.Attributes) - { - var bufferId = attributePair.Value.Value.BufferView.Value.Buffer; - var bufferData = await GetBufferData(bufferId); - - attributeAccessors[attributePair.Key] = new AttributeAccessor - { - AccessorId = attributePair.Value, - Stream = bufferData.Stream, - Offset = (uint)bufferData.ChunkOffset - }; - } - - if (primitive.Indices != null) - { - var bufferId = primitive.Indices.Value.BufferView.Value.Buffer; - var bufferData = await GetBufferData(bufferId); - - attributeAccessors[SemanticProperties.INDICES] = new AttributeAccessor - { - AccessorId = primitive.Indices, - Stream = bufferData.Stream, - Offset = (uint)bufferData.ChunkOffset - }; - } - try - { - GLTFHelpers.BuildMeshAttributes(ref attributeAccessors); - } - catch (GLTFLoadException e) - { - Debug.LogWarning(e.ToString()); - } - TransformAttributes(ref attributeAccessors); - } - - protected void TransformAttributes(ref Dictionary attributeAccessors) - { - foreach (var name in attributeAccessors.Keys) - { - var aa = attributeAccessors[name]; - switch (name) - { - case SemanticProperties.POSITION: - case SemanticProperties.NORMAL: - SchemaExtensions.ConvertVector3CoordinateSpace(ref aa, SchemaExtensions.CoordinateSpaceConversionScale); - break; - case SemanticProperties.TANGENT: - SchemaExtensions.ConvertVector4CoordinateSpace(ref aa, SchemaExtensions.TangentSpaceConversionScale); - break; - case SemanticProperties.TEXCOORD_0: - case SemanticProperties.TEXCOORD_1: - case SemanticProperties.TEXCOORD_2: - case SemanticProperties.TEXCOORD_3: - SchemaExtensions.FlipTexCoordArrayV(ref aa); - break; - } - } - } - - #region Animation - static string RelativePathFrom(Transform self, Transform root) - { - var path = new List(); - for (var current = self; current != null; current = current.parent) - { - if (current == root) - { - return String.Join("/", path.ToArray()); - } - - path.Insert(0, current.name); - } - - throw new Exception("no RelativePath"); - } - - protected virtual async Task BuildAnimationSamplers(GLTFAnimation animation, int animationId) - { - // look up expected data types - var typeMap = new Dictionary(); - foreach (var channel in animation.Channels) - { - typeMap[channel.Sampler.Id] = channel.Target.Path.ToString(); - } - - var samplers = _assetCache.AnimationCache[animationId].Samplers; - var samplersByType = new Dictionary> - { - {"time", new List(animation.Samplers.Count)} - }; - - for (var i = 0; i < animation.Samplers.Count; i++) - { - // no sense generating unused samplers - if (!typeMap.ContainsKey(i)) - { - continue; - } - - var samplerDef = animation.Samplers[i]; - - samplers[i].Interpolation = samplerDef.Interpolation; - - // set up input accessors - BufferCacheData inputBufferCacheData = await GetBufferData(samplerDef.Input.Value.BufferView.Value.Buffer); - AttributeAccessor attributeAccessor = new AttributeAccessor - { - AccessorId = samplerDef.Input, - Stream = inputBufferCacheData.Stream, - Offset = inputBufferCacheData.ChunkOffset - }; - - samplers[i].Input = attributeAccessor; - samplersByType["time"].Add(attributeAccessor); - - // set up output accessors - BufferCacheData outputBufferCacheData = await GetBufferData(samplerDef.Output.Value.BufferView.Value.Buffer); - attributeAccessor = new AttributeAccessor - { - AccessorId = samplerDef.Output, - Stream = outputBufferCacheData.Stream, - Offset = outputBufferCacheData.ChunkOffset - }; - - samplers[i].Output = attributeAccessor; - - if (!samplersByType.ContainsKey(typeMap[i])) - { - samplersByType[typeMap[i]] = new List(); - } - - samplersByType[typeMap[i]].Add(attributeAccessor); - } - - // populate attributeAccessors with buffer data - GLTFHelpers.BuildAnimationSamplers(ref samplersByType); - } - - protected void SetAnimationCurve( - AnimationClip clip, - string relativePath, - string[] propertyNames, - NumericArray input, - NumericArray output, - InterpolationType mode, - Type curveType, - ValuesConvertion getConvertedValues) - { - - var channelCount = propertyNames.Length; - var frameCount = input.AsFloats.Length; - - // copy all the key frame data to cache - Keyframe[][] keyframes = new Keyframe[channelCount][]; - for (var ci = 0; ci < channelCount; ++ci) - { - keyframes[ci] = new Keyframe[frameCount]; - } - - for (var i = 0; i < frameCount; ++i) - { - var time = input.AsFloats[i]; - - float[] values = null; - float[] inTangents = null; - float[] outTangents = null; - if (mode == InterpolationType.CUBICSPLINE) - { - // For cubic spline, the output will contain 3 values per keyframe; inTangent, dataPoint, and outTangent. - // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation - - var cubicIndex = i * 3; - inTangents = getConvertedValues(output, cubicIndex); - values = getConvertedValues(output, cubicIndex + 1); - outTangents = getConvertedValues(output, cubicIndex + 2); - } - else - { - // For other interpolation types, the output will only contain one value per keyframe - values = getConvertedValues(output, i); - } - - for (var ci = 0; ci < channelCount; ++ci) - { - if (mode == InterpolationType.CUBICSPLINE) - { - keyframes[ci][i] = new Keyframe(time, values[ci], inTangents[ci], outTangents[ci]); - } - else - { - keyframes[ci][i] = new Keyframe(time, values[ci]); - } - } - } - - for (var ci = 0; ci < channelCount; ++ci) - { - // copy all key frames data to animation curve and add it to the clip - AnimationCurve curve = new AnimationCurve(keyframes[ci]); - - // For cubic spline interpolation, the inTangents and outTangents are already explicitly defined. - // For the rest, set them appropriately. - if (mode != InterpolationType.CUBICSPLINE) - { - for (var i = 0; i < keyframes[ci].Length; i++) - { - SetTangentMode(curve, keyframes[ci], i, mode); - } - } - clip.SetCurve(relativePath, curveType, propertyNames[ci], curve); - } - } - - private static void SetTangentMode(AnimationCurve curve, Keyframe[] keyframes, int keyframeIndex, InterpolationType interpolation) - { - var key = keyframes[keyframeIndex]; - - switch (interpolation) - { - case InterpolationType.CATMULLROMSPLINE: - key.inTangent = 0; - key.outTangent = 0; - break; - case InterpolationType.LINEAR: - key.inTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex); - key.outTangent = GetCurveKeyframeLeftLinearSlope(keyframes, keyframeIndex + 1); - break; - case InterpolationType.STEP: - key.inTangent = float.PositiveInfinity; - key.outTangent = float.PositiveInfinity; - break; - - default: - throw new NotImplementedException(); - } - - curve.MoveKey(keyframeIndex, key); - } - - private static float GetCurveKeyframeLeftLinearSlope(Keyframe[] keyframes, int keyframeIndex) - { - if (keyframeIndex <= 0 || keyframeIndex >= keyframes.Length) - { - return 0; - } - - var valueDelta = keyframes[keyframeIndex].value - keyframes[keyframeIndex - 1].value; - var timeDelta = keyframes[keyframeIndex].time - keyframes[keyframeIndex - 1].time; - - Debug.Assert(timeDelta > 0, "Unity does not allow you to put two keyframes in with the same time, so this should never occur."); - - return valueDelta / timeDelta; - } - - protected async Task ConstructClip(Transform root, int animationId, CancellationToken cancellationToken) - { - GLTFAnimation animation = _gltfRoot.Animations[animationId]; - - AnimationCacheData animationCache = _assetCache.AnimationCache[animationId]; - if (animationCache == null) - { - animationCache = new AnimationCacheData(animation.Samplers.Count); - _assetCache.AnimationCache[animationId] = animationCache; - } - else if (animationCache.LoadedAnimationClip != null) - { - return animationCache.LoadedAnimationClip; - } - - // unpack accessors - await BuildAnimationSamplers(animation, animationId); - - // init clip - AnimationClip clip = new AnimationClip - { - name = animation.Name ?? string.Format("animation:{0}", animationId) - }; - _assetCache.AnimationCache[animationId].LoadedAnimationClip = clip; - - // needed because Animator component is unavailable at runtime - clip.legacy = true; - - foreach (AnimationChannel channel in animation.Channels) - { - AnimationSamplerCacheData samplerCache = animationCache.Samplers[channel.Sampler.Id]; - if (channel.Target.Node == null) - { - // If a channel doesn't have a target node, then just skip it. - // This is legal and is present in one of the asset generator models, but means that animation doesn't actually do anything. - // https://github.com/KhronosGroup/glTF-Asset-Generator/tree/master/Output/Positive/Animation_NodeMisc - // Model 08 - continue; - } - var node = await GetNode(channel.Target.Node.Id, cancellationToken); - string relativePath = RelativePathFrom(node.transform, root); - - NumericArray input = samplerCache.Input.AccessorContent, - output = samplerCache.Output.AccessorContent; - - string[] propertyNames; - - switch (channel.Target.Path) - { - case GLTFAnimationChannelPath.translation: - propertyNames = new string[] { "localPosition.x", "localPosition.y", "localPosition.z" }; - - SetAnimationCurve(clip, relativePath, propertyNames, input, output, - samplerCache.Interpolation, typeof(Transform), - (data, frame) => - { - var position = data.AsVec3s[frame].ToUnityVector3Convert(); - return new float[] { position.x, position.y, position.z }; - }); - break; - - case GLTFAnimationChannelPath.rotation: - propertyNames = new string[] { "localRotation.x", "localRotation.y", "localRotation.z", "localRotation.w" }; - - SetAnimationCurve(clip, relativePath, propertyNames, input, output, - samplerCache.Interpolation, typeof(Transform), - (data, frame) => - { - var rotation = data.AsVec4s[frame]; - var quaternion = new GLTF.Math.Quaternion(rotation.X, rotation.Y, rotation.Z, rotation.W).ToUnityQuaternionConvert(); - return new float[] { quaternion.x, quaternion.y, quaternion.z, quaternion.w }; - }); - - break; - - case GLTFAnimationChannelPath.scale: - propertyNames = new string[] { "localScale.x", "localScale.y", "localScale.z" }; - - SetAnimationCurve(clip, relativePath, propertyNames, input, output, - samplerCache.Interpolation, typeof(Transform), - (data, frame) => - { - var scale = data.AsVec3s[frame].ToUnityVector3Raw(); - return new float[] { scale.x, scale.y, scale.z }; - }); - break; - - case GLTFAnimationChannelPath.weights: - // TODO: add support for blend shapes/morph targets - - // var primitives = channel.Target.Node.Value.Mesh.Value.Primitives; - // var targetCount = primitives[0].Targets.Count; - // for (int primitiveIndex = 0; primitiveIndex < primitives.Count; primitiveIndex++) - // { - // for (int targetIndex = 0; targetIndex < targetCount; targetIndex++) - // { - // - // //clip.SetCurve(primitiveObjPath, typeof(SkinnedMeshRenderer), "blendShape." + targetIndex, curves[targetIndex]); - // } - // } - break; - - default: - Debug.LogWarning("Cannot read GLTF animation path"); - break; - } // switch target type - } // foreach channel - - clip.EnsureQuaternionContinuity(); - return clip; - } - #endregion - - protected virtual async Task ConstructScene(GLTFScene scene, bool showSceneObj, CancellationToken cancellationToken) - { - var sceneObj = new GameObject(string.IsNullOrEmpty(scene.Name) ? ("GLTFScene") : scene.Name); - - try - { - sceneObj.SetActive(showSceneObj); - - Transform[] nodeTransforms = new Transform[scene.Nodes.Count]; - for (int i = 0; i < scene.Nodes.Count; ++i) - { - NodeId node = scene.Nodes[i]; - GameObject nodeObj = await GetNode(node.Id, cancellationToken); - nodeObj.transform.SetParent(sceneObj.transform, false); - nodeTransforms[i] = nodeObj.transform; - } - - if (_gltfRoot.Animations != null && _gltfRoot.Animations.Count > 0) - { - // create the AnimationClip that will contain animation data - Animation animation = sceneObj.AddComponent(); - for (int i = 0; i < _gltfRoot.Animations.Count; ++i) - { - AnimationClip clip = await ConstructClip(sceneObj.transform, i, cancellationToken); - - clip.wrapMode = WrapMode.Loop; - - animation.AddClip(clip, clip.name); - if (i == 0) - { - animation.clip = clip; - } - } - } - - CreatedObject = sceneObj; - InitializeGltfTopLevelObject(); - } - catch (Exception ex) - { - // If some failure occured during loading, clean up the scene - GameObject.DestroyImmediate(sceneObj); - CreatedObject = null; - - if (ex is OutOfMemoryException) - { - Resources.UnloadUnusedAssets(); - } - - throw; - } - } - - private async Task GetNode(int nodeId, CancellationToken cancellationToken) - { - try - { - if (_assetCache.NodeCache[nodeId] == null) - { - if (nodeId >= _gltfRoot.Nodes.Count) - { - throw new ArgumentException("nodeIndex is out of range"); - } - - var node = _gltfRoot.Nodes[nodeId]; - - cancellationToken.ThrowIfCancellationRequested(); - if (!IsMultithreaded) - { - await ConstructBufferData(node, cancellationToken); - } - else - { - await Task.Run(() => ConstructBufferData(node, cancellationToken)); - } - - await ConstructNode(node, nodeId, cancellationToken); - } - - return _assetCache.NodeCache[nodeId]; - } - catch (Exception ex) - { - // If some failure occured during loading, remove the node - - if (_assetCache.NodeCache[nodeId] != null) - { - GameObject.DestroyImmediate(_assetCache.NodeCache[nodeId]); - _assetCache.NodeCache[nodeId] = null; - } - - if (ex is OutOfMemoryException) - { - Resources.UnloadUnusedAssets(); - } - - throw; - } - } - - - protected virtual async Task ConstructNode(Node node, int nodeIndex, CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - if (_assetCache.NodeCache[nodeIndex] != null) - { - return; - } - - var nodeObj = new GameObject(string.IsNullOrEmpty(node.Name) ? ("GLTFNode" + nodeIndex) : node.Name); - // If we're creating a really large node, we need it to not be visible in partial stages. So we hide it while we create it - nodeObj.SetActive(false); - - Vector3 position; - Quaternion rotation; - Vector3 scale; - node.GetUnityTRSProperties(out position, out rotation, out scale); - nodeObj.transform.localPosition = position; - nodeObj.transform.localRotation = rotation; - nodeObj.transform.localScale = scale; - _assetCache.NodeCache[nodeIndex] = nodeObj; - - if (node.Children != null) - { - foreach (var child in node.Children) - { - GameObject childObj = await GetNode(child.Id, cancellationToken); - childObj.transform.SetParent(nodeObj.transform, false); - } - } - - const string msft_LODExtName = MSFT_LODExtensionFactory.EXTENSION_NAME; - MSFT_LODExtension lodsextension = null; - if (_gltfRoot.ExtensionsUsed != null - && _gltfRoot.ExtensionsUsed.Contains(msft_LODExtName) - && node.Extensions != null - && node.Extensions.ContainsKey(msft_LODExtName)) - { - lodsextension = node.Extensions[msft_LODExtName] as MSFT_LODExtension; - if (lodsextension != null && lodsextension.MeshIds.Count > 0) - { - int lodCount = lodsextension.MeshIds.Count + 1; - if (!CullFarLOD) - { - //create a final lod with the mesh as the last LOD in file - lodCount += 1; - } - LOD[] lods = new LOD[lodsextension.MeshIds.Count + 2]; - List lodCoverage = lodsextension.GetLODCoverage(node); - - var lodGroupNodeObj = new GameObject(string.IsNullOrEmpty(node.Name) ? ("GLTFNode_LODGroup" + nodeIndex) : node.Name); - lodGroupNodeObj.SetActive(false); - nodeObj.transform.SetParent(lodGroupNodeObj.transform, false); - MeshRenderer[] childRenders = nodeObj.GetComponentsInChildren(); - lods[0] = new LOD(GetLodCoverage(lodCoverage, 0), childRenders); - - LODGroup lodGroup = lodGroupNodeObj.AddComponent(); - for (int i = 0; i < lodsextension.MeshIds.Count; i++) - { - int lodNodeId = lodsextension.MeshIds[i]; - var lodNodeObj = await GetNode(lodNodeId, cancellationToken); - lodNodeObj.transform.SetParent(lodGroupNodeObj.transform, false); - childRenders = lodNodeObj.GetComponentsInChildren(); - int lodIndex = i + 1; - lods[lodIndex] = new LOD(GetLodCoverage(lodCoverage, lodIndex), childRenders); - } - - if (!CullFarLOD) - { - //use the last mesh as the LOD - lods[lodsextension.MeshIds.Count + 1] = new LOD(0, childRenders); - } - - lodGroup.SetLODs(lods); - lodGroup.RecalculateBounds(); - lodGroupNodeObj.SetActive(true); - _assetCache.NodeCache[nodeIndex] = lodGroupNodeObj; - } - } - - if (node.Mesh != null) - { - var mesh = node.Mesh.Value; - await ConstructMesh(mesh, node.Mesh.Id, cancellationToken); - var unityMesh = _assetCache.MeshCache[node.Mesh.Id].LoadedMesh; - var materials = node.Mesh.Value.Primitives.Select(p => - p.Material != null ? - _assetCache.MaterialCache[p.Material.Id].UnityMaterialWithVertexColor : - _defaultLoadedMaterial.UnityMaterialWithVertexColor - ).ToArray(); - - var morphTargets = mesh.Primitives[0].Targets; - var weights = node.Weights ?? mesh.Weights ?? - (morphTargets != null ? new List(morphTargets.Select(mt => 0.0)) : null); - if (node.Skin != null || weights != null) - { - var renderer = nodeObj.AddComponent(); - renderer.sharedMesh = unityMesh; - renderer.sharedMaterials = materials; - renderer.quality = SkinQuality.Auto; - - if (node.Skin != null) - await SetupBones(node.Skin.Value, renderer, cancellationToken); - - // morph target weights - if (weights != null) - { - for (int i = 0; i < weights.Count; ++i) - { - // GLTF weights are [0, 1] range but Unity weights are [0, 100] range - renderer.SetBlendShapeWeight(i, (float)(weights[i] * 100)); - } - } - } - else - { - var filter = nodeObj.AddComponent(); - filter.sharedMesh = unityMesh; - var renderer = nodeObj.AddComponent(); - renderer.sharedMaterials = materials; - } - - switch (Collider) - { - case ColliderType.Box: - var boxCollider = nodeObj.AddComponent(); - boxCollider.center = unityMesh.bounds.center; - boxCollider.size = unityMesh.bounds.size; - break; - case ColliderType.Mesh: - var meshCollider = nodeObj.AddComponent(); - meshCollider.sharedMesh = unityMesh; - break; - case ColliderType.MeshConvex: - var meshConvexCollider = nodeObj.AddComponent(); - meshConvexCollider.sharedMesh = unityMesh; - meshConvexCollider.convex = true; - break; - } - } - /* TODO: implement camera (probably a flag to disable for VR as well) - if (camera != null) - { - GameObject cameraObj = camera.Value.Create(); - cameraObj.transform.parent = nodeObj.transform; - } - */ - - nodeObj.SetActive(true); - - progressStatus.NodeLoaded++; - progress?.Report(progressStatus); - } - - float GetLodCoverage(List lodcoverageExtras, int lodIndex) - { - if (lodcoverageExtras != null && lodIndex < lodcoverageExtras.Count) - { - return (float)lodcoverageExtras[lodIndex]; - } - else - { - return 1.0f / (lodIndex + 2); - } - } - - protected virtual async Task SetupBones(Skin skin, SkinnedMeshRenderer renderer, CancellationToken cancellationToken) - { - var boneCount = skin.Joints.Count; - Transform[] bones = new Transform[boneCount]; - - // TODO: build bindpose arrays only once per skin, instead of once per node - Matrix4x4[] gltfBindPoses = null; - if (skin.InverseBindMatrices != null) - { - int bufferId = skin.InverseBindMatrices.Value.BufferView.Value.Buffer.Id; - AttributeAccessor attributeAccessor = new AttributeAccessor - { - AccessorId = skin.InverseBindMatrices, - Stream = _assetCache.BufferCache[bufferId].Stream, - Offset = _assetCache.BufferCache[bufferId].ChunkOffset - }; - - GLTFHelpers.BuildBindPoseSamplers(ref attributeAccessor); - gltfBindPoses = attributeAccessor.AccessorContent.AsMatrix4x4s; - } - - UnityEngine.Matrix4x4[] bindPoses = new UnityEngine.Matrix4x4[boneCount]; - for (int i = 0; i < boneCount; i++) - { - var node = await GetNode(skin.Joints[i].Id, cancellationToken); - - bones[i] = node.transform; - bindPoses[i] = gltfBindPoses != null ? gltfBindPoses[i].ToUnityMatrix4x4Convert() : UnityEngine.Matrix4x4.identity; - } - - if (skin.Skeleton != null) - { - var rootBoneNode = await GetNode(skin.Skeleton.Id, cancellationToken); - renderer.rootBone = rootBoneNode.transform; - } - else - { - var rootBoneId = GLTFHelpers.FindCommonAncestor(skin.Joints); - if (rootBoneId != null) - { - var rootBoneNode = await GetNode(rootBoneId.Id, cancellationToken); - renderer.rootBone = rootBoneNode.transform; - } - else - { - throw new Exception("glTF skin joints do not share a root node!"); - } - } - renderer.sharedMesh.bindposes = bindPoses; - renderer.bones = bones; - } - - private void CreateBoneWeightArray(Vector4[] joints, Vector4[] weights, ref BoneWeight[] destArr, int offset = 0) - { - // normalize weights (built-in normalize function only normalizes three components) - for (int i = 0; i < weights.Length; i++) - { - var weightSum = (weights[i].x + weights[i].y + weights[i].z + weights[i].w); - - if (!Mathf.Approximately(weightSum, 0)) - { - weights[i] /= weightSum; - } - } - - for (int i = 0; i < joints.Length; i++) - { - destArr[offset + i].boneIndex0 = (int)joints[i].x; - destArr[offset + i].boneIndex1 = (int)joints[i].y; - destArr[offset + i].boneIndex2 = (int)joints[i].z; - destArr[offset + i].boneIndex3 = (int)joints[i].w; - - destArr[offset + i].weight0 = weights[i].x; - destArr[offset + i].weight1 = weights[i].y; - destArr[offset + i].weight2 = weights[i].z; - destArr[offset + i].weight3 = weights[i].w; - } - } - - /// - /// Allocate a generic type 2D array. The size is depending on the given parameters. - /// - /// Defines the depth of the arrays first dimension - /// >Defines the depth of the arrays second dimension - /// - private static T[][] Allocate2dArray(uint x, uint y) - { - var result = new T[x][]; - for (var i = 0; i < x; i++) result[i] = new T[y]; - return result; - } - - /// - /// Triggers loading, converting, and constructing of a UnityEngine.Mesh, and stores it in the asset cache - /// - /// The definition of the mesh to generate - /// The index of the mesh to generate - /// - /// A task that completes when the mesh is attached to the given GameObject - protected virtual async Task ConstructMesh(GLTFMesh mesh, int meshIndex, CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - if (_assetCache.MeshCache[meshIndex] == null) - { - throw new Exception("Cannot generate mesh before ConstructMeshAttributes is called!"); - } - else if (_assetCache.MeshCache[meshIndex].LoadedMesh) - { - return; - } - - var totalVertCount = mesh.Primitives.Aggregate((uint)0, (sum, p) => sum + p.Attributes[SemanticProperties.POSITION].Value.Count); - var vertOffset = 0; - var firstPrim = mesh.Primitives[0]; - var meshCache = _assetCache.MeshCache[meshIndex]; - UnityMeshData unityData = new UnityMeshData() - { - Vertices = new Vector3[totalVertCount], - Normals = firstPrim.Attributes.ContainsKey(SemanticProperties.NORMAL) ? new Vector3[totalVertCount] : null, - Tangents = firstPrim.Attributes.ContainsKey(SemanticProperties.TANGENT) ? new Vector4[totalVertCount] : null, - Uv1 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_0) ? new Vector2[totalVertCount] : null, - Uv2 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_1) ? new Vector2[totalVertCount] : null, - Uv3 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_2) ? new Vector2[totalVertCount] : null, - Uv4 = firstPrim.Attributes.ContainsKey(SemanticProperties.TEXCOORD_3) ? new Vector2[totalVertCount] : null, - Colors = firstPrim.Attributes.ContainsKey(SemanticProperties.COLOR_0) ? new Color[totalVertCount] : null, - BoneWeights = firstPrim.Attributes.ContainsKey(SemanticProperties.WEIGHTS_0) ? new BoneWeight[totalVertCount] : null, - - MorphTargetVertices = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.POSITION) ? - Allocate2dArray((uint)firstPrim.Targets.Count, totalVertCount) : null, - MorphTargetNormals = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.NORMAL) ? - Allocate2dArray((uint)firstPrim.Targets.Count, totalVertCount) : null, - MorphTargetTangents = firstPrim.Targets != null && firstPrim.Targets[0].ContainsKey(SemanticProperties.TANGENT) ? - Allocate2dArray((uint)firstPrim.Targets.Count, totalVertCount) : null, - - Topology = new MeshTopology[mesh.Primitives.Count], - Indices = new int[mesh.Primitives.Count][] - }; - - for (int i = 0; i < mesh.Primitives.Count; ++i) - { - var primitive = mesh.Primitives[i]; - var primCache = meshCache.Primitives[i]; - unityData.Topology[i] = GetTopology(primitive.Mode); - - if (IsMultithreaded) - { - await Task.Run(() => ConvertAttributeAccessorsToUnityTypes(primCache, unityData, vertOffset, i)); - } - else - { - ConvertAttributeAccessorsToUnityTypes(primCache, unityData, vertOffset, i); - } - - bool shouldUseDefaultMaterial = primitive.Material == null; - - GLTFMaterial materialToLoad = shouldUseDefaultMaterial ? DefaultMaterial : primitive.Material.Value; - if ((shouldUseDefaultMaterial && _defaultLoadedMaterial == null) || - (!shouldUseDefaultMaterial && _assetCache.MaterialCache[primitive.Material.Id] == null)) - { - await ConstructMaterial(materialToLoad, shouldUseDefaultMaterial ? -1 : primitive.Material.Id); - } - - cancellationToken.ThrowIfCancellationRequested(); - - var vertCount = primitive.Attributes[SemanticProperties.POSITION].Value.Count; - vertOffset += (int)vertCount; - - if (unityData.Topology[i] == MeshTopology.Triangles && primitive.Indices != null && primitive.Indices.Value != null) - { - Statistics.TriangleCount += primitive.Indices.Value.Count / 3; - } - } - - Statistics.VertexCount += vertOffset; - await ConstructUnityMesh(unityData, meshIndex, mesh.Name); - } - - protected void ConvertAttributeAccessorsToUnityTypes( - MeshCacheData.PrimitiveCacheData primData, - UnityMeshData unityData, - int vertOffset, - int indexOffset) - { - // todo optimize: There are multiple copies being performed to turn the buffer data into mesh data. Look into reducing them - var meshAttributes = primData.Attributes; - int vertexCount = (int)meshAttributes[SemanticProperties.POSITION].AccessorId.Value.Count; - - var indices = meshAttributes.ContainsKey(SemanticProperties.INDICES) - ? meshAttributes[SemanticProperties.INDICES].AccessorContent.AsUInts.ToIntArrayRaw() - : MeshPrimitive.GenerateIndices(vertexCount); - if (unityData.Topology[indexOffset] == MeshTopology.Triangles) - SchemaExtensions.FlipTriangleFaces(indices); - unityData.Indices[indexOffset] = indices; - - if (meshAttributes.ContainsKey(SemanticProperties.Weight[0]) && meshAttributes.ContainsKey(SemanticProperties.Joint[0])) - { - CreateBoneWeightArray( - meshAttributes[SemanticProperties.Joint[0]].AccessorContent.AsVec4s.ToUnityVector4Raw(), - meshAttributes[SemanticProperties.Weight[0]].AccessorContent.AsVec4s.ToUnityVector4Raw(), - ref unityData.BoneWeights, - vertOffset); - } - - if (meshAttributes.ContainsKey(SemanticProperties.POSITION)) - { - meshAttributes[SemanticProperties.POSITION].AccessorContent.AsVertices.ToUnityVector3Raw(unityData.Vertices, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.NORMAL)) - { - meshAttributes[SemanticProperties.NORMAL].AccessorContent.AsNormals.ToUnityVector3Raw(unityData.Normals, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.TANGENT)) - { - meshAttributes[SemanticProperties.TANGENT].AccessorContent.AsTangents.ToUnityVector4Raw(unityData.Tangents, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.TexCoord[0])) - { - meshAttributes[SemanticProperties.TexCoord[0]].AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv1, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.TexCoord[1])) - { - meshAttributes[SemanticProperties.TexCoord[1]].AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv2, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.TexCoord[2])) - { - meshAttributes[SemanticProperties.TexCoord[2]].AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv3, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.TexCoord[3])) - { - meshAttributes[SemanticProperties.TexCoord[3]].AccessorContent.AsTexcoords.ToUnityVector2Raw(unityData.Uv4, vertOffset); - } - if (meshAttributes.ContainsKey(SemanticProperties.Color[0])) - { - meshAttributes[SemanticProperties.Color[0]].AccessorContent.AsColors.ToUnityColorRaw(unityData.Colors, vertOffset); - } - - var targets = primData.Targets; - if (targets != null) - { - for (int i = 0; i < targets.Count; ++i) - { - if (targets[i].ContainsKey(SemanticProperties.POSITION)) - { - targets[i][SemanticProperties.POSITION].AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetVertices[i], vertOffset); - } - if (targets[i].ContainsKey(SemanticProperties.NORMAL)) - { - targets[i][SemanticProperties.NORMAL].AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetNormals[i], vertOffset); - } - if (targets[i].ContainsKey(SemanticProperties.TANGENT)) - { - targets[i][SemanticProperties.TANGENT].AccessorContent.AsVec3s.ToUnityVector3Raw(unityData.MorphTargetTangents[i], vertOffset); - } - } - } - } - - protected virtual Task ConstructMaterialImageBuffers(GLTFMaterial def) - { - var tasks = new List(8); - if (def.PbrMetallicRoughness != null) - { - var pbr = def.PbrMetallicRoughness; - - if (pbr.BaseColorTexture != null) - { - var textureId = pbr.BaseColorTexture.Index; - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - if (pbr.MetallicRoughnessTexture != null) - { - var textureId = pbr.MetallicRoughnessTexture.Index; - - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - } - - if (def.CommonConstant != null) - { - if (def.CommonConstant.LightmapTexture != null) - { - var textureId = def.CommonConstant.LightmapTexture.Index; - - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - } - - if (def.NormalTexture != null) - { - var textureId = def.NormalTexture.Index; - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - - if (def.OcclusionTexture != null) - { - var textureId = def.OcclusionTexture.Index; - - if (!(def.PbrMetallicRoughness != null - && def.PbrMetallicRoughness.MetallicRoughnessTexture != null - && def.PbrMetallicRoughness.MetallicRoughnessTexture.Index.Id == textureId.Id)) - { - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - } - - if (def.EmissiveTexture != null) - { - var textureId = def.EmissiveTexture.Index; - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - - // pbr_spec_gloss extension - const string specGlossExtName = KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME; - if (def.Extensions != null && def.Extensions.ContainsKey(specGlossExtName)) - { - var specGlossDef = (KHR_materials_pbrSpecularGlossinessExtension)def.Extensions[specGlossExtName]; - if (specGlossDef.DiffuseTexture != null) - { - var textureId = specGlossDef.DiffuseTexture.Index; - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - - if (specGlossDef.SpecularGlossinessTexture != null) - { - var textureId = specGlossDef.SpecularGlossinessTexture.Index; - tasks.Add(ConstructImageBuffer(textureId.Value, textureId.Id)); - } - } - - return Task.WhenAll(tasks); - } - - /// - /// Populate a UnityEngine.Mesh from preloaded and preprocessed buffer data - /// - /// - /// - /// - /// - /// - protected async Task ConstructUnityMesh(UnityMeshData unityMeshData, int meshIndex, string meshName) - { - await YieldOnTimeoutAndThrowOnLowMemory(); - Mesh mesh = new Mesh - { - name = meshName, -#if UNITY_2017_3_OR_NEWER - indexFormat = unityMeshData.Vertices.Length > 65535 ? IndexFormat.UInt32 : IndexFormat.UInt16, -#endif - }; - - mesh.vertices = unityMeshData.Vertices; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.normals = unityMeshData.Normals; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.tangents = unityMeshData.Tangents; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.uv = unityMeshData.Uv1; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.uv2 = unityMeshData.Uv2; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.uv3 = unityMeshData.Uv3; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.uv4 = unityMeshData.Uv4; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.colors = unityMeshData.Colors; - await YieldOnTimeoutAndThrowOnLowMemory(); - mesh.boneWeights = unityMeshData.BoneWeights; - await YieldOnTimeoutAndThrowOnLowMemory(); - - mesh.subMeshCount = unityMeshData.Indices.Length; - uint baseVertex = 0; - for (int i = 0; i < unityMeshData.Indices.Length; i++) - { - mesh.SetIndices(unityMeshData.Indices[i], unityMeshData.Topology[i], i, false, (int)baseVertex); - baseVertex += _assetCache.MeshCache[meshIndex].Primitives[i].Attributes[SemanticProperties.POSITION].AccessorId.Value.Count; - } - mesh.RecalculateBounds(); - await YieldOnTimeoutAndThrowOnLowMemory(); - - if (unityMeshData.MorphTargetVertices != null) - { - var firstPrim = _gltfRoot.Meshes[meshIndex].Primitives[0]; - for (int i = 0; i < firstPrim.Targets.Count; i++) - { - var targetName = firstPrim.TargetNames != null ? firstPrim.TargetNames[i] : $"Morphtarget{i}"; - mesh.AddBlendShapeFrame(targetName, 100, - unityMeshData.MorphTargetVertices[i], - unityMeshData.MorphTargetNormals != null ? unityMeshData.MorphTargetNormals[i] : null, - unityMeshData.MorphTargetTangents != null ? unityMeshData.MorphTargetTangents[i] : null - ); - } - } - await YieldOnTimeoutAndThrowOnLowMemory(); - - if (unityMeshData.Normals == null && unityMeshData.Topology[0] == MeshTopology.Triangles) - { - mesh.RecalculateNormals(); - } - - if (!KeepCPUCopyOfMesh) - { - mesh.UploadMeshData(true); - } - - _assetCache.MeshCache[meshIndex].LoadedMesh = mesh; - } - - protected virtual async Task ConstructMaterial(GLTFMaterial def, int materialIndex) - { - IUniformMap mapper; - const string specGlossExtName = KHR_materials_pbrSpecularGlossinessExtensionFactory.EXTENSION_NAME; - if (_gltfRoot.ExtensionsUsed != null && _gltfRoot.ExtensionsUsed.Contains(specGlossExtName) - && def.Extensions != null && def.Extensions.ContainsKey(specGlossExtName)) - { - if (!string.IsNullOrEmpty(CustomShaderName)) - { - mapper = new SpecGlossMap(CustomShaderName, MaximumLod); - } - else - { - mapper = new SpecGlossMap(MaximumLod); - } - } - else - { - if (!string.IsNullOrEmpty(CustomShaderName)) - { - mapper = new MetalRoughMap(CustomShaderName, MaximumLod); - } - else - { - mapper = new MetalRoughMap(MaximumLod); - } - } - - mapper.Material.name = def.Name; - mapper.AlphaMode = def.AlphaMode; - mapper.DoubleSided = def.DoubleSided; - - var mrMapper = mapper as IMetalRoughUniformMap; - if (def.PbrMetallicRoughness != null && mrMapper != null) - { - var pbr = def.PbrMetallicRoughness; - - mrMapper.BaseColorFactor = pbr.BaseColorFactor.ToUnityColorRaw(); - - if (pbr.BaseColorTexture != null) - { - TextureId textureId = pbr.BaseColorTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false); - mrMapper.BaseColorTexture = _assetCache.TextureCache[textureId.Id].Texture; - mrMapper.BaseColorTexCoord = pbr.BaseColorTexture.TexCoord; - - var ext = GetTextureTransform(pbr.BaseColorTexture); - if (ext != null) - { - mrMapper.BaseColorXOffset = ext.Offset.ToUnityVector2Raw(); - mrMapper.BaseColorXRotation = ext.Rotation; - mrMapper.BaseColorXScale = ext.Scale.ToUnityVector2Raw(); - mrMapper.BaseColorXTexCoord = ext.TexCoord; - } - } - - mrMapper.MetallicFactor = pbr.MetallicFactor; - - if (pbr.MetallicRoughnessTexture != null) - { - TextureId textureId = pbr.MetallicRoughnessTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true); - mrMapper.MetallicRoughnessTexture = _assetCache.TextureCache[textureId.Id].Texture; - mrMapper.MetallicRoughnessTexCoord = pbr.MetallicRoughnessTexture.TexCoord; - - var ext = GetTextureTransform(pbr.MetallicRoughnessTexture); - if (ext != null) - { - mrMapper.MetallicRoughnessXOffset = ext.Offset.ToUnityVector2Raw(); - mrMapper.MetallicRoughnessXRotation = ext.Rotation; - mrMapper.MetallicRoughnessXScale = ext.Scale.ToUnityVector2Raw(); - mrMapper.MetallicRoughnessXTexCoord = ext.TexCoord; - } - } - - mrMapper.RoughnessFactor = pbr.RoughnessFactor; - } - - var sgMapper = mapper as ISpecGlossUniformMap; - if (sgMapper != null) - { - var specGloss = def.Extensions[specGlossExtName] as KHR_materials_pbrSpecularGlossinessExtension; - - sgMapper.DiffuseFactor = specGloss.DiffuseFactor.ToUnityColorRaw(); - - if (specGloss.DiffuseTexture != null) - { - TextureId textureId = specGloss.DiffuseTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false); - sgMapper.DiffuseTexture = _assetCache.TextureCache[textureId.Id].Texture; - sgMapper.DiffuseTexCoord = specGloss.DiffuseTexture.TexCoord; - - var ext = GetTextureTransform(specGloss.DiffuseTexture); - if (ext != null) - { - sgMapper.DiffuseXOffset = ext.Offset.ToUnityVector2Raw(); - sgMapper.DiffuseXRotation = ext.Rotation; - sgMapper.DiffuseXScale = ext.Scale.ToUnityVector2Raw(); - sgMapper.DiffuseXTexCoord = ext.TexCoord; - } - } - - sgMapper.SpecularFactor = specGloss.SpecularFactor.ToUnityVector3Raw(); - sgMapper.GlossinessFactor = specGloss.GlossinessFactor; - - if (specGloss.SpecularGlossinessTexture != null) - { - TextureId textureId = specGloss.SpecularGlossinessTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false); - sgMapper.SpecularGlossinessTexture = _assetCache.TextureCache[textureId.Id].Texture; - - var ext = GetTextureTransform(specGloss.SpecularGlossinessTexture); - if (ext != null) - { - sgMapper.SpecularGlossinessXOffset = ext.Offset.ToUnityVector2Raw(); - sgMapper.SpecularGlossinessXRotation = ext.Rotation; - sgMapper.SpecularGlossinessXScale = ext.Scale.ToUnityVector2Raw(); - sgMapper.SpecularGlossinessXTexCoord = ext.TexCoord; - } - } - } - - if (def.NormalTexture != null) - { - TextureId textureId = def.NormalTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true); - mapper.NormalTexture = _assetCache.TextureCache[textureId.Id].Texture; - mapper.NormalTexCoord = def.NormalTexture.TexCoord; - mapper.NormalTexScale = def.NormalTexture.Scale; - - var ext = GetTextureTransform(def.NormalTexture); - if (ext != null) - { - mapper.NormalXOffset = ext.Offset.ToUnityVector2Raw(); - mapper.NormalXRotation = ext.Rotation; - mapper.NormalXScale = ext.Scale.ToUnityVector2Raw(); - mapper.NormalXTexCoord = ext.TexCoord; - } - } - - if (def.OcclusionTexture != null) - { - mapper.OcclusionTexStrength = def.OcclusionTexture.Strength; - TextureId textureId = def.OcclusionTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, true); - mapper.OcclusionTexture = _assetCache.TextureCache[textureId.Id].Texture; - - var ext = GetTextureTransform(def.OcclusionTexture); - if (ext != null) - { - mapper.OcclusionXOffset = ext.Offset.ToUnityVector2Raw(); - mapper.OcclusionXRotation = ext.Rotation; - mapper.OcclusionXScale = ext.Scale.ToUnityVector2Raw(); - mapper.OcclusionXTexCoord = ext.TexCoord; - } - } - - if (def.EmissiveTexture != null) - { - TextureId textureId = def.EmissiveTexture.Index; - await ConstructTexture(textureId.Value, textureId.Id, !KeepCPUCopyOfTexture, false); - mapper.EmissiveTexture = _assetCache.TextureCache[textureId.Id].Texture; - mapper.EmissiveTexCoord = def.EmissiveTexture.TexCoord; - - var ext = GetTextureTransform(def.EmissiveTexture); - if (ext != null) - { - mapper.EmissiveXOffset = ext.Offset.ToUnityVector2Raw(); - mapper.EmissiveXRotation = ext.Rotation; - mapper.EmissiveXScale = ext.Scale.ToUnityVector2Raw(); - mapper.EmissiveXTexCoord = ext.TexCoord; - } - } - - mapper.EmissiveFactor = def.EmissiveFactor.ToUnityColorRaw(); - - var vertColorMapper = mapper.Clone(); - vertColorMapper.VertexColorsEnabled = true; - - MaterialCacheData materialWrapper = new MaterialCacheData - { - UnityMaterial = mapper.Material, - UnityMaterialWithVertexColor = vertColorMapper.Material, - GLTFMaterial = def - }; - - if (materialIndex >= 0) - { - _assetCache.MaterialCache[materialIndex] = materialWrapper; - } - else - { - _defaultLoadedMaterial = materialWrapper; - } - } - - - protected virtual int GetTextureSourceId(GLTFTexture texture) - { - return texture.Source.Id; - } - - /// - /// Creates a texture from a glTF texture - /// - /// The texture to load - /// The index in the texture cache - /// Whether the texture is GPU only, instead of keeping a CPU copy - /// Whether the texture is linear rather than sRGB - /// The loading task - public virtual async Task LoadTextureAsync(GLTFTexture texture, int textureIndex, bool markGpuOnly, bool isLinear) - { - try - { - lock (this) - { - if (_isRunning) - { - throw new GLTFLoadException("Cannot CreateTexture while GLTFSceneImporter is already running"); - } - - _isRunning = true; - } - - if (_options.ThrowOnLowMemory) - { - _memoryChecker = new MemoryChecker(); - } - - if (_gltfRoot == null) - { - await LoadJson(_gltfFileName); - } - - if (_assetCache == null) - { - _assetCache = new AssetCache(_gltfRoot); - } - - await ConstructImageBuffer(texture, textureIndex); - await ConstructTexture(texture, textureIndex, markGpuOnly, isLinear); - } - finally - { - lock (this) - { - _isRunning = false; - } - } - } - - public virtual Task LoadTextureAsync(GLTFTexture texture, int textureIndex, bool isLinear) - { - return LoadTextureAsync(texture, textureIndex, !KeepCPUCopyOfTexture, isLinear); - } - - /// - /// Gets texture that has been loaded from CreateTexture - /// - /// The texture to get - /// Created texture - public virtual Texture GetTexture(int textureIndex) - { - if (_assetCache == null) - { - throw new GLTFLoadException("Asset cache needs initialized before calling GetTexture"); - } - - if (_assetCache.TextureCache[textureIndex] == null) - { - return null; - } - - return _assetCache.TextureCache[textureIndex].Texture; - } - - protected virtual async Task ConstructTexture(GLTFTexture texture, int textureIndex, - bool markGpuOnly, bool isLinear) - { - if (_assetCache.TextureCache[textureIndex].Texture == null) - { - int sourceId = GetTextureSourceId(texture); - GLTFImage image = _gltfRoot.Images[sourceId]; - await ConstructImage(image, sourceId, markGpuOnly, isLinear); - - var source = _assetCache.ImageCache[sourceId]; - FilterMode desiredFilterMode; - TextureWrapMode desiredWrapMode; - - if (texture.Sampler != null) - { - var sampler = texture.Sampler.Value; - switch (sampler.MinFilter) - { - case MinFilterMode.Nearest: - case MinFilterMode.NearestMipmapNearest: - case MinFilterMode.LinearMipmapNearest: - desiredFilterMode = FilterMode.Point; - break; - case MinFilterMode.Linear: - case MinFilterMode.NearestMipmapLinear: - desiredFilterMode = FilterMode.Bilinear; - break; - case MinFilterMode.LinearMipmapLinear: - desiredFilterMode = FilterMode.Trilinear; - break; - default: - Debug.LogWarning("Unsupported Sampler.MinFilter: " + sampler.MinFilter); - desiredFilterMode = FilterMode.Trilinear; - break; - } - - switch (sampler.WrapS) - { - case GLTF.Schema.WrapMode.ClampToEdge: - desiredWrapMode = TextureWrapMode.Clamp; - break; - case GLTF.Schema.WrapMode.Repeat: - desiredWrapMode = TextureWrapMode.Repeat; - break; - case GLTF.Schema.WrapMode.MirroredRepeat: - desiredWrapMode = TextureWrapMode.Mirror; - break; - default: - Debug.LogWarning("Unsupported Sampler.WrapS: " + sampler.WrapS); - desiredWrapMode = TextureWrapMode.Repeat; - break; - } - } - else - { - desiredFilterMode = FilterMode.Trilinear; - desiredWrapMode = TextureWrapMode.Repeat; - } - - var matchSamplerState = source.filterMode == desiredFilterMode && source.wrapMode == desiredWrapMode; - if (matchSamplerState || markGpuOnly) - { - Debug.Assert(_assetCache.TextureCache[textureIndex].Texture == null, "Texture should not be reset to prevent memory leaks"); - _assetCache.TextureCache[textureIndex].Texture = source; - - if (!matchSamplerState) - { - Debug.LogWarning($"Ignoring sampler; filter mode: source {source.filterMode}, desired {desiredFilterMode}; wrap mode: source {source.wrapMode}, desired {desiredWrapMode}"); - } - } - else - { - var unityTexture = Object.Instantiate(source); - unityTexture.filterMode = desiredFilterMode; - unityTexture.wrapMode = desiredWrapMode; - - Debug.Assert(_assetCache.TextureCache[textureIndex].Texture == null, "Texture should not be reset to prevent memory leaks"); - _assetCache.TextureCache[textureIndex].Texture = unityTexture; - } - } - } - - protected virtual void ConstructImageFromGLB(GLTFImage image, int imageCacheIndex) - { - var texture = new Texture2D(0, 0); - texture.name = nameof(GLTFSceneImporter) + (image.Name != null ? ("." + image.Name) : ""); - var bufferView = image.BufferView.Value; - var data = new byte[bufferView.ByteLength]; - - var bufferContents = _assetCache.BufferCache[bufferView.Buffer.Id]; - bufferContents.Stream.Position = bufferView.ByteOffset + bufferContents.ChunkOffset; - bufferContents.Stream.Read(data, 0, data.Length); - texture.LoadImage(data); - - Debug.Assert(_assetCache.ImageCache[imageCacheIndex] == null, "ImageCache should not be loaded multiple times"); - progressStatus.TextureLoaded++; - progress?.Report(progressStatus); - _assetCache.ImageCache[imageCacheIndex] = texture; - - } - - protected virtual BufferCacheData ConstructBufferFromGLB(int bufferIndex) - { - GLTFParser.SeekToBinaryChunk(_gltfStream.Stream, bufferIndex, _gltfStream.StartPosition); // sets stream to correct start position - return new BufferCacheData - { - Stream = _gltfStream.Stream, - ChunkOffset = (uint)_gltfStream.Stream.Position - }; - } - - protected virtual ExtTextureTransformExtension GetTextureTransform(TextureInfo def) - { - IExtension extension; - if (_gltfRoot.ExtensionsUsed != null && - _gltfRoot.ExtensionsUsed.Contains(ExtTextureTransformExtensionFactory.EXTENSION_NAME) && - def.Extensions != null && - def.Extensions.TryGetValue(ExtTextureTransformExtensionFactory.EXTENSION_NAME, out extension)) - { - return (ExtTextureTransformExtension)extension; - } - else return null; - } - - protected async Task YieldOnTimeoutAndThrowOnLowMemory() - { - if (_options.ThrowOnLowMemory) - { - _memoryChecker.ThrowIfOutOfMemory(); - } - - if (_options.AsyncCoroutineHelper != null) - { - await _options.AsyncCoroutineHelper.YieldOnTimeout(); - } - } - - - /// - /// Get the absolute path to a gltf uri reference. - /// - /// The path to the gltf file - /// A path without the filename or extension - protected static string AbsoluteUriPath(string gltfPath) - { - var uri = new Uri(gltfPath); - var partialPath = uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Query.Length - uri.Segments[uri.Segments.Length - 1].Length); - return partialPath; - } - - /// - /// Get the absolute path a gltf file directory - /// - /// The path to the gltf file - /// A path without the filename or extension - protected static string AbsoluteFilePath(string gltfPath) - { - var fileName = Path.GetFileName(gltfPath); - var lastIndex = gltfPath.IndexOf(fileName); - var partialPath = gltfPath.Substring(0, lastIndex); - return partialPath; - } - - protected static MeshTopology GetTopology(DrawMode mode) - { - switch (mode) - { - case DrawMode.Points: return MeshTopology.Points; - case DrawMode.Lines: return MeshTopology.Lines; - case DrawMode.LineStrip: return MeshTopology.LineStrip; - case DrawMode.Triangles: return MeshTopology.Triangles; - } - - throw new Exception("Unity does not support glTF draw mode: " + mode); - } - - /// - /// Cleans up any undisposed streams after loading a scene or a node. - /// - private void Cleanup() - { - if (_assetCache != null) - { - _assetCache.Dispose(); - _assetCache = null; - } - } - - private async Task SetupLoad(Func callback) - { - try - { - lock (this) - { - if (_isRunning) - { - throw new GLTFLoadException("Cannot start a load while GLTFSceneImporter is already running"); - } - - _isRunning = true; - } - - Statistics = new ImportStatistics(); - if (_options.ThrowOnLowMemory) - { - _memoryChecker = new MemoryChecker(); - } - - if (_gltfRoot == null) - { - await LoadJson(_gltfFileName); - } - - if (_assetCache == null) - { - _assetCache = new AssetCache(_gltfRoot); - } - - await callback(); - } - catch - { - Cleanup(); - throw; - } - finally - { - lock (this) - { - _isRunning = false; - } - } - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/FileLoader.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/FileLoader.cs deleted file mode 100644 index 98d5b12fb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/Loader/FileLoader.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.IO; -using System; -using System.Threading.Tasks; - -namespace UnityGLTF.Loader -{ - public class FileLoader : IDataLoader, IDataLoader2 - { - private readonly string _rootDirectoryPath; - - public FileLoader(string rootDirectoryPath) - { - _rootDirectoryPath = rootDirectoryPath; - } - - public Task LoadStreamAsync(string relativeFilePath) - { - return Task.Run(() => LoadStream(relativeFilePath)); - } - - public Stream LoadStream(string relativeFilePath) - { - if (relativeFilePath == null) - { - throw new ArgumentNullException("relativeFilePath"); - } - - string pathToLoad = Path.Combine(_rootDirectoryPath, relativeFilePath); - if (!File.Exists(pathToLoad)) - { - throw new FileNotFoundException("Buffer file not found", relativeFilePath); - } - - return File.OpenRead(pathToLoad); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/URIHelper.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/URIHelper.cs deleted file mode 100644 index 484a72194..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/URIHelper.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Text.RegularExpressions; -using UnityEngine; - -public static class URIHelper -{ - private const string Base64StringInitializer = "^data:[a-z-]+/[a-z-]+;base64,"; - - /// - /// Get the absolute path to a gltf uri reference. - /// - /// The path to the gltf file - /// A path without the filename or extension - public static string AbsoluteUriPath(Uri uri) - { - var partialPath = uri.AbsoluteUri.Remove(uri.AbsoluteUri.Length - uri.Segments[uri.Segments.Length - 1].Length); - return partialPath; - } - - public static string GetFileFromUri(Uri uri) - { - return uri.Segments[uri.Segments.Length - 1]; - } - - /// - /// Gets a directory name from a file path - /// - /// Full path of a file - /// The name of directory file is in - public static string GetDirectoryName(string fullPath) - { - var fileName = Path.GetFileName(fullPath); - return fullPath.Substring(0, fullPath.Length - fileName.Length); - } - - /// - /// Tries to parse the uri as a base 64 encoded string - /// - /// The string that represents the data - /// Returns the deencoded bytes - public static void TryParseBase64(string uri, out byte[] bufferData) - { - Regex regex = new Regex(Base64StringInitializer); - Match match = regex.Match(uri); - bufferData = null; - if (match.Success) - { - var base64Data = uri.Substring(match.Length); - bufferData = Convert.FromBase64String(base64Data); - } - } - - /// - /// Returns whether the input uri is base64 encoded - /// - /// The uri data - /// Whether the uri is base64 - public static bool IsBase64Uri(string uri) - { - Regex regex = new Regex(Base64StringInitializer); - Match match = regex.Match(uri); - return match.Success; - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/UniformMap.cs b/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/UniformMap.cs deleted file mode 100644 index e3f35bc19..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Scripts/UniformMaps/UniformMap.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; - -namespace UnityGLTF -{ - public interface IUniformMap - { - Material Material { get; } - - Texture NormalTexture { get; set; } - int NormalTexCoord { get; set; } - double NormalTexScale { get; set; } - Vector2 NormalXOffset { get; set; } - double NormalXRotation { get; set; } - Vector2 NormalXScale { get; set; } - int NormalXTexCoord { get; set; } - - Texture OcclusionTexture { get; set; } - int OcclusionTexCoord { get; set; } - double OcclusionTexStrength { get; set; } - Vector2 OcclusionXOffset { get; set; } - double OcclusionXRotation { get; set; } - Vector2 OcclusionXScale { get; set; } - int OcclusionXTexCoord { get; set; } - - Texture EmissiveTexture { get; set; } - int EmissiveTexCoord { get; set; } - Color EmissiveFactor { get; set; } - Vector2 EmissiveXOffset { get; set; } - double EmissiveXRotation { get; set; } - Vector2 EmissiveXScale { get; set; } - int EmissiveXTexCoord { get; set; } - - GLTF.Schema.AlphaMode AlphaMode { get; set; } - double AlphaCutoff { get; set; } - bool DoubleSided { get; set; } - bool VertexColorsEnabled { get; set; } - - IUniformMap Clone(); - } - - public interface IMetalRoughUniformMap : IUniformMap - { - Texture BaseColorTexture { get; set; } - int BaseColorTexCoord { get; set; } - Vector2 BaseColorXOffset { get; set; } - double BaseColorXRotation { get; set; } - Vector2 BaseColorXScale { get; set; } - int BaseColorXTexCoord { get; set; } - - Color BaseColorFactor { get; set; } - - Texture MetallicRoughnessTexture { get; set; } - int MetallicRoughnessTexCoord { get; set; } - Vector2 MetallicRoughnessXOffset { get; set; } - double MetallicRoughnessXRotation { get; set; } - Vector2 MetallicRoughnessXScale { get; set; } - int MetallicRoughnessXTexCoord { get; set; } - - double MetallicFactor { get; set; } - double RoughnessFactor { get; set; } - } - - public interface ISpecGlossUniformMap : IUniformMap - { - Texture DiffuseTexture { get; set; } - int DiffuseTexCoord { get; set; } - Vector2 DiffuseXOffset { get; set; } - double DiffuseXRotation { get; set; } - Vector2 DiffuseXScale { get; set; } - int DiffuseXTexCoord { get; set; } - - Color DiffuseFactor { get; set; } - - Texture SpecularGlossinessTexture { get; set; } - int SpecularGlossinessTexCoord { get; set; } - Vector2 SpecularGlossinessXOffset { get; set; } - double SpecularGlossinessXRotation { get; set; } - Vector2 SpecularGlossinessXScale { get; set; } - int SpecularGlossinessXTexCoord { get; set; } - - Vector3 SpecularFactor { get; set; } - double GlossinessFactor { get; set; } - } - - public interface IUnlitUniformMap : IUniformMap - { - Texture BaseColorTexture { get; set; } - int BaseColorTexCoord { get; set; } - Vector2 BaseColorXOffset { get; set; } - double BaseColorXRotation { get; set; } - Vector2 BaseColorXScale { get; set; } - int BaseColorXTexCoord { get; set; } - - Color BaseColorFactor { get; set; } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention.meta deleted file mode 100644 index 8ab97cafc..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d2e0f35a09ebe3c46914675a375bca9f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats.meta deleted file mode 100644 index 7522363fa..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8dbfd9a7d3299fe4fa49241a70edfb2b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend.meta deleted file mode 100644 index 2b18d89a0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 09c9d235ad6dcb54c8650363d71cc1dd -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat deleted file mode 100644 index 18db2019c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat.meta deleted file mode 100644 index e17328dd9..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dec528cdd7dc70c46852f1d483c95385 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat deleted file mode 100644 index d67556cc4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat.meta deleted file mode 100644 index 8e12131bb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 58ee5c07a03163c4eb1d4e5c892a114b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat deleted file mode 100644 index 569aea51a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat.meta deleted file mode 100644 index fd2c38213..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0226a0143d23eb8489dd3fa28b8726cc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat deleted file mode 100644 index efa185f38..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMREmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat.meta deleted file mode 100644 index 6d02e297f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMREmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c88a65fcc3f4b9246913e5179c7378e2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat deleted file mode 100644 index 95ca2452b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat.meta deleted file mode 100644 index 1f2cbbad3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d58ddc7d9d40dcc4488fe38fd7bb32e4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat deleted file mode 100644 index c15c45a7d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat.meta deleted file mode 100644 index 425e55afc..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a6735a19903f4b14eae6e82a51bb2fca -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat deleted file mode 100644 index 506768387..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOccBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat.meta deleted file mode 100644 index 1fbc091da..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7d89093b186d69e4c8a6a04fced11fff -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat deleted file mode 100644 index 8c25ea07f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOccEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat.meta deleted file mode 100644 index 6263492b5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMRNormOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fd70d0b26daf3384e9968f4d7e88e641 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat deleted file mode 100644 index 878bdb5c1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROccBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat.meta deleted file mode 100644 index 35879685e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 523d2aec10a4f5144b93fec02b898880 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat deleted file mode 100644 index 66722a2d3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROccEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat.meta deleted file mode 100644 index 7e5a9cdea..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseMROccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1da3ee79f6262884999f6b62d7e812db -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat deleted file mode 100644 index 6f7ee3983..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat.meta deleted file mode 100644 index 14db96318..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 20bdeede18de0824bab40cda206e388e -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat deleted file mode 100644 index d8d2f4e31..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat.meta deleted file mode 100644 index f61e74d11..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 04532e833f65fa347b44427ad820d0aa -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat deleted file mode 100644 index aa4911e69..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOccBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat.meta deleted file mode 100644 index aa52a181e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 07ae6cddbfb3bcd448f4817b88efa529 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat deleted file mode 100644 index e2f3664e0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOccEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat.meta deleted file mode 100644 index a05443a38..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseNormOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c447310121dfc8e409218036a307ec3a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat deleted file mode 100644 index 36b322d07..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOccBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat.meta deleted file mode 100644 index cfbef4f78..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e23707866d3abaf41aa6018a1e0633f2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat deleted file mode 100644 index 9794379c0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOccEmisBlend - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat.meta deleted file mode 100644 index 6717f9050..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaBlend/MrBaseOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5e440b268f48a2543bb1f6e78816e21c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask.meta deleted file mode 100644 index 2fd772b02..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ce66b4c63aba74d4f8463c5865f7e330 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat deleted file mode 100644 index 47bc7755e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat.meta deleted file mode 100644 index e0c954ff8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d48ca28902b669a45a17adad993528bd -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat deleted file mode 100644 index 1ad69ca53..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMREmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat.meta deleted file mode 100644 index 9191970ec..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMREmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2ae07f6232c40ec4ab82b7c509e7e33a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat deleted file mode 100644 index 304f82572..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat.meta deleted file mode 100644 index 00a997981..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0248dc21817f2234cb0c6b3b5daa2997 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat deleted file mode 100644 index b3d441bac..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat.meta deleted file mode 100644 index 9b8fc132e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a8ff0c55185367f4e86cae036b892649 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat deleted file mode 100644 index 060d870ae..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat.meta deleted file mode 100644 index 8a49f0b9f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 87045f21fa645124bb711984612703d6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat deleted file mode 100644 index 7061e4f84..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOccEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat.meta deleted file mode 100644 index 9f0fec60f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e6e1936c58f30a74a8e250e3bdf266d8 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat deleted file mode 100644 index d14fdac1a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOccMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat.meta deleted file mode 100644 index 41c95c0ea..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMRNormOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 63416c8e728806748bf80c0de25a2372 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat deleted file mode 100644 index b4f377570..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROccEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat.meta deleted file mode 100644 index 1c6632677..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 14d20fc21ecbf864eb94e66f84a44386 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat deleted file mode 100644 index 367613288..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROccMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat.meta deleted file mode 100644 index 375cf205c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMROccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f0e05e24572a44f4491e32fff431692a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat deleted file mode 100644 index e3fa06d24..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat.meta deleted file mode 100644 index cc6843b90..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 80b5118479d549444a2b7da0468ff8a8 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat deleted file mode 100644 index f7fa2ed72..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat.meta deleted file mode 100644 index 9659afbab..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: feb39d0181f1c244190fa7443ad6dea0 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat deleted file mode 100644 index 6aa2f84b1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat.meta deleted file mode 100644 index d72382654..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0f27be190155d7343b612de5465df069 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat deleted file mode 100644 index c6a074604..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOccEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat.meta deleted file mode 100644 index 1948eca8c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d1d223ad6b46560458c8ab9095a48287 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat deleted file mode 100644 index aaa880cd6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOccMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat.meta deleted file mode 100644 index f64b396ed..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseNormOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: db2ba5dc458d48943b3fafd89200c31e -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat deleted file mode 100644 index b88fc4e62..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOccEmisMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat.meta deleted file mode 100644 index 9a72ad91c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 334b2f3a5334eb24a81da451302ab3dd -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat deleted file mode 100644 index 4318ea78d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOccMask - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _ALPHATEST_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat.meta deleted file mode 100644 index b9a28a36a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/AlphaMask/MrBaseOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3061af7779f7a4141b8336b5adc5e51e -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque.meta deleted file mode 100644 index 044766c4d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 23df4d55c742a86408ca2a2ab7d06dbe -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat deleted file mode 100644 index 5600c1c87..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBase - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat.meta deleted file mode 100644 index 35e015075..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBase.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a8e0110e2a6e2f24ba6f8f6b9b5532e6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat deleted file mode 100644 index 59b382a71..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat.meta deleted file mode 100644 index b0987824a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 434bba495f8b6c44d924c4d6cd5c8df7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat deleted file mode 100644 index 384bb66b6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMR - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat.meta deleted file mode 100644 index f7fec2767..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMR.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c9f90d9639550b14a8251477772d5ccc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat deleted file mode 100644 index 127edd73f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMREmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat.meta deleted file mode 100644 index 0b8f4d272..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMREmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 64e3e6959c6440e418cdd9870069132a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat deleted file mode 100644 index 48aa10654..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNorm - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat.meta deleted file mode 100644 index e6ca40736..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: eb7ec9b0dfa4a754582c1a355be4fe9b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat deleted file mode 100644 index 12e965271..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat.meta deleted file mode 100644 index ddcc3cf4a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ef7809af73eff0345877b9e6117bad07 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat deleted file mode 100644 index 4aa96fdbf..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat.meta deleted file mode 100644 index 5a8705ace..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6c675bd989ce4dc47baefa5835842f01 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat deleted file mode 100644 index ea140e579..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMRNormOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat.meta deleted file mode 100644 index 707d02a8e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMRNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 73c9cfdcd07790c45920a16471afa168 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat deleted file mode 100644 index a59b09eca..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat.meta deleted file mode 100644 index 05f087cf6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 03c17518b911f88488e57ac4e69816d1 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat deleted file mode 100644 index 6cd7e82eb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseMROccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat.meta deleted file mode 100644 index 44e8b04e1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseMROccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f5b6b2335192838439a895880b566f34 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat deleted file mode 100644 index 86618e2be..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNorm - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat.meta deleted file mode 100644 index 16483f812..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9eb99447c2c710748979fa1dad24f4e1 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat deleted file mode 100644 index 061ec47a0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat.meta deleted file mode 100644 index 553ae7dbb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 339c36212c4a52f4a87b3c72b31893ec -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat deleted file mode 100644 index 7aaf4318d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat.meta deleted file mode 100644 index 53018e991..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7765aa700130b3a4ebb03e85ce3a4f28 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat deleted file mode 100644 index 39227ece8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseNormOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat.meta deleted file mode 100644 index 392528e34..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ae792b3f8e74d3149a356b10c1d0cdea -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat deleted file mode 100644 index e74c369db..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat.meta deleted file mode 100644 index 6558c0cba..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1b9f98eae6d61af4c9759989d68e6bfb -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat deleted file mode 100644 index 89001de07..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrBaseOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat.meta deleted file mode 100644 index aece18ba7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrBaseOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4ab13621945dc5742a1c9e5bbf3c8cef -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat deleted file mode 100644 index 0c64d0d2c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrColor - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat.meta deleted file mode 100644 index 0055a01c6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrColor.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1c172ac5c6c801241a286ecbfadb8a97 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat deleted file mode 100644 index cf839279f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat.meta deleted file mode 100644 index 24291b5dd..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ad7f6128d0e707540bb6a166b2819e8b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat deleted file mode 100644 index 63120bbf3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMR - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat.meta deleted file mode 100644 index d0e0e1fd4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMR.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bcff95eb15b078846b8123c62eaf511a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat deleted file mode 100644 index 08d7afec5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMREmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat.meta deleted file mode 100644 index 46c27dca0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMREmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: caf25b509da0fb24694a54ecf5df4c48 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat deleted file mode 100644 index 33b0c0278..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMRNorm - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat.meta deleted file mode 100644 index 142edf979..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ebb6f72a2999cc445be2158c700f8367 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat deleted file mode 100644 index 7597bcb2f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMRNormEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat.meta deleted file mode 100644 index 08834cdf0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ba4d7ce41ee658c4aa199bfb4b876721 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat deleted file mode 100644 index dcf7ce45d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMRNormOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat.meta deleted file mode 100644 index 13f545beb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: de285f6cd56bb1444a70ac1c97920f86 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat deleted file mode 100644 index 1f1143fe1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMRNormOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat.meta deleted file mode 100644 index 32060cbc5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMRNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dcdc3c8dbf430f44898c6183a895bd66 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat deleted file mode 100644 index 82189be10..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMROcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat.meta deleted file mode 100644 index c498d5018..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c601f0c7eee130a4fa4786d4eda787dc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat deleted file mode 100644 index 4d8f330bb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrMROccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 1 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat.meta deleted file mode 100644 index 801eacdfb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrMROccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 77f3b49d8e545f14aa14d18ad72753b5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat deleted file mode 100644 index d64d3c9e7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrNorm - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat.meta deleted file mode 100644 index 6f4d39a89..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d683cd571fbf75b44b8059d2f94cb240 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat deleted file mode 100644 index d07556094..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrNormEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat.meta deleted file mode 100644 index e9eff045d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d1721f84107a3bb4a9945665d7016716 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat deleted file mode 100644 index 411ea10fa..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrNormOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat.meta deleted file mode 100644 index fa49c1d28..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bf4d105e83a642e4bbc144a59ce842d2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat deleted file mode 100644 index 850c35f16..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrNormOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat.meta deleted file mode 100644 index a7169c6c4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9e8386f7266edd847ae1bf61a7101531 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat deleted file mode 100644 index e56558808..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrOcc - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat.meta deleted file mode 100644 index 638e4a214..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 10b4c0281c8559c4abed2eedef3503af -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat deleted file mode 100644 index 0d70fa1b4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: MrOccEmis - m_Shader: {fileID: 4800000, guid: 9836e4430eb58204086d7d1440e16a4f, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1c6a14bfa09d73741aad0acf756c4871, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat.meta deleted file mode 100644 index 4db781d03..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/MrMats/Opaque/MrOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 03b8e66a788a02b43a9d92da980bd78a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats.meta deleted file mode 100644 index db4f43f88..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0b2be86618fee624a84a2c92058c8f6d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend.meta deleted file mode 100644 index e37eeb853..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2160f327d2d92bc44817cc78b6f25967 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat deleted file mode 100644 index 04c7b984c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat.meta deleted file mode 100644 index 715fd4a6e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3324a941b7bac3542b45f8db0e8691ff -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat deleted file mode 100644 index c69887935..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat.meta deleted file mode 100644 index 76def6053..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5fd2ae19b137c8e4984577fa94a8eca5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat deleted file mode 100644 index 1a3411965..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat.meta deleted file mode 100644 index caabc2b0a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a04bfa8fb8465dc42b4d6fe5f8389d3a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat deleted file mode 100644 index 3a64faa88..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat.meta deleted file mode 100644 index 28ac866ac..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a2fed31d68f110b488cb13b59c382ef2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat deleted file mode 100644 index f5cd38ffb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOccBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat.meta deleted file mode 100644 index 40026d756..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a3abad66b81b4224b930ee2252769322 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat deleted file mode 100644 index b577eecff..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOccEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat.meta deleted file mode 100644 index 65140dd70..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseNormOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1ece6054ebab21248aee142f40f6891a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat deleted file mode 100644 index fbf940b74..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOccBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat.meta deleted file mode 100644 index 0388e8fee..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d50a24e85e35d9341926cf9144198c76 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat deleted file mode 100644 index 3799dc30a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOccEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat.meta deleted file mode 100644 index fed909398..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d651b7dae83b4604f91d9af622afb46d -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat deleted file mode 100644 index 65e48417c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat.meta deleted file mode 100644 index 6f948c376..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 31a55beb1eb8cdc45960e71868803167 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat deleted file mode 100644 index 5f27e51f1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat.meta deleted file mode 100644 index 765b7b387..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d15132b28f89cb04ba55e4b0c89f8fe4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat deleted file mode 100644 index 3b61bd733..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat.meta deleted file mode 100644 index cb3b408c7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: aff7d74f9da157242b308fe7535f8def -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat deleted file mode 100644 index 562420beb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat.meta deleted file mode 100644 index 566b07dce..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 241625eeb96516b4e8e24bd6d5ad53e6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat deleted file mode 100644 index 2d269e9d6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOccBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat.meta deleted file mode 100644 index 214beabf8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3eedd17f2c5859e4c94b2b378db4df46 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat deleted file mode 100644 index bf331aaf6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOccEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat.meta deleted file mode 100644 index 88018d3f6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGNormOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7ef0937df1f90c643b895073eebd32fc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat deleted file mode 100644 index f6de2fd5a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOccBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat.meta deleted file mode 100644 index 11b60aae2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c65da77d5399336409cde28497a81343 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat deleted file mode 100644 index f2e2344bb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOccEmisBlend - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 2 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 5 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat.meta deleted file mode 100644 index e874d46d0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaBlend/SgBaseSGOccEmisBlend.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fd1b93fb1f3342643b58cade504246f9 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask.meta deleted file mode 100644 index 2476c5b3d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 343f0899b4d9671478220d891f3648f5 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat deleted file mode 100644 index bf0d30142..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat.meta deleted file mode 100644 index 4da729d45..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fbc18cc7a51199d47abc02352121caa1 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat deleted file mode 100644 index e9f64adac..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat.meta deleted file mode 100644 index 2c605940a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2a1c4053c6e9eed40ba8bb7955830d2c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat deleted file mode 100644 index f3d800545..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat.meta deleted file mode 100644 index 3e476d607..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b6a288faedb99b342a9888d9b571ea9a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat deleted file mode 100644 index 0d242c162..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat.meta deleted file mode 100644 index a84304d2a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2f8a030d6edcccc4b8858d2d6e35ae4b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat deleted file mode 100644 index 716616aa8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOccEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat.meta deleted file mode 100644 index 3b0f8bb8c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e572d2223afabc647b1b34fad2afe734 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat deleted file mode 100644 index 42f0fceb4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOccMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat.meta deleted file mode 100644 index 7c60323d6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseNormOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0da009aaf286dcc4baa317cf527632df -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat deleted file mode 100644 index 0a046b792..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOccEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat.meta deleted file mode 100644 index de870a72b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4c45dbea439d546439e5d81fe0593b8d -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat deleted file mode 100644 index da10d61d9..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOccMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat.meta deleted file mode 100644 index f3d15dc09..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f038c25eb2fe2e94fbd05568de28d3fe -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat deleted file mode 100644 index be34acc20..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat.meta deleted file mode 100644 index 8b7315e2d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c6e8613419f24cf438781dd5ca6775d7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat deleted file mode 100644 index 5330aff84..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat.meta deleted file mode 100644 index 3a21aeac7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 33a68546a19e8664987400d94ba9ae76 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat deleted file mode 100644 index 0ac989326..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat.meta deleted file mode 100644 index 0e029806c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 92d28410829eef24797e95536e6b5455 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat deleted file mode 100644 index 8701e008d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat.meta deleted file mode 100644 index ea44211ed..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ee32c7807baa13f42bc8379e735c4efe -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat deleted file mode 100644 index 438c34521..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOccEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat.meta deleted file mode 100644 index f74bac250..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a4e52eed94da38c47a95161cd5eb2b60 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat deleted file mode 100644 index 716b506e5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOccMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat.meta deleted file mode 100644 index 127fd76af..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGNormOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 68754734ea273474fbc62ee3be4b0f03 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat deleted file mode 100644 index 2f4f795c0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOccEmisMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat.meta deleted file mode 100644 index a7cd7c652..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccEmisMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 833d69efff3278640ac4c10e68d58377 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat deleted file mode 100644 index 2554ce563..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOccMask - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _ALPHATEST_ON _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2450 - stringTagMap: - RenderType: TransparentCutout - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 1 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat.meta deleted file mode 100644 index 184f22f34..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/AlphaMask/SgBaseSGOccMask.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6e038c9c18176f24fb88763ffc899d66 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque.meta deleted file mode 100644 index 4b72dd5e4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: be33aecab509c5d4b89621d34f121ba9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat deleted file mode 100644 index b6b1378c4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBase - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat.meta deleted file mode 100644 index 4e6889291..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBase.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0864f82f0f84e0d4e95ac073c269e37d -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat deleted file mode 100644 index bc3ba995e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat.meta deleted file mode 100644 index cd85365a2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e3a22a17a5c24694194e2770177c870a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat deleted file mode 100644 index 6001b92ec..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNorm - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat.meta deleted file mode 100644 index ae95d713a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0809c9851ca16ff43a41fb44a47859a3 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat deleted file mode 100644 index 2c93718c3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat.meta deleted file mode 100644 index 5428d5936..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f706ecebeed54a745befaa7a2a1b88d4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat deleted file mode 100644 index 93c138c8e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat.meta deleted file mode 100644 index 1d2046d52..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 783cd72752dfa3a4aab7954e0d331378 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat deleted file mode 100644 index fd0672095..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseNormOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat.meta deleted file mode 100644 index 183960278..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2b90ab1bd1b9d4049a32acf424831bb3 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat deleted file mode 100644 index eca483176..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat.meta deleted file mode 100644 index 8ffad1e6d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d2f6be89ed75b12409f4300ead8dae3b -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat deleted file mode 100644 index cec9d1168..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat.meta deleted file mode 100644 index 662539309..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a671622329939d04bb4273772cc71c45 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat deleted file mode 100644 index b1a7e5f4f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSG - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat.meta deleted file mode 100644 index 8b438f5e4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSG.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9ca33c560ea0f124180b4a1c3697ff07 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat deleted file mode 100644 index 4d47ece84..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat.meta deleted file mode 100644 index f903f14b4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 36cdf26ac03c95d4cba8646774298327 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat deleted file mode 100644 index 585488370..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNorm - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat.meta deleted file mode 100644 index 965d866fe..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4807a5df95fbc6141943204f15770192 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat deleted file mode 100644 index 34abadd7e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat.meta deleted file mode 100644 index 2e16fdd23..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e8ee0336957fd9449a4621138fcffbd7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat deleted file mode 100644 index a2c1589b3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat.meta deleted file mode 100644 index f2bb0f052..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dedbd09cfbb8e1e4daaf2641d93675c4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat deleted file mode 100644 index d958bf0c4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGNormOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat.meta deleted file mode 100644 index 7976b6d18..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7df70e2cce282e147a9c4b70a9dee39d -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat deleted file mode 100644 index b3477c31a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat.meta deleted file mode 100644 index d0d0702ef..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c355dcb24a8d93446a764b03f22f5882 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat deleted file mode 100644 index e38636aeb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgBaseSGOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 385fe88b3d1c8ed409a1cd8b47c42cca, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat.meta deleted file mode 100644 index 5ca7e8d07..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgBaseSGOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7070a0ec2419d264ab356c96d4e61adc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat deleted file mode 100644 index 82840a654..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgColor - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat.meta deleted file mode 100644 index dd2f7c63e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgColor.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cbe12bf239d8f484f9d2429a40fb9676 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat deleted file mode 100644 index 1d2a445e2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat.meta deleted file mode 100644 index 93f52c61c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 08403560c7005d54d833af24ec585b40 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat deleted file mode 100644 index 13fdcfe9f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgNorm - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat.meta deleted file mode 100644 index bfdec1d04..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1113e82adaf59fe4188cf6e72c5d9257 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat deleted file mode 100644 index ec2c77bb8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgNormEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat.meta deleted file mode 100644 index da3f55d92..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3e80e57f062772842a6501f2c5a2d87c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat deleted file mode 100644 index e762025b8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgNormOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat.meta deleted file mode 100644 index 31cdf4d22..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7fa590396de9d9f40a9e8fa3877453d0 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat deleted file mode 100644 index c9358700e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgNormOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat.meta deleted file mode 100644 index ec81ae4fc..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 853932dcdd1ee3846a9cf8e280de45c8 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat deleted file mode 100644 index cb9fec68f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat.meta deleted file mode 100644 index ada5530ef..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 958c6aa92f9179142ae4aa0d0abc1cf0 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat deleted file mode 100644 index a27280923..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat.meta deleted file mode 100644 index 5bd2a81bf..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 63b1c2ba36c52954eb87eacd77781160 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat deleted file mode 100644 index e1a099682..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSG - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat.meta deleted file mode 100644 index 4561c61c3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSG.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 017b6ebd697154a4ebf203e79ded17e1 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat deleted file mode 100644 index 30c8f980f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat.meta deleted file mode 100644 index 476fddead..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c0a58828e69e90a49a69ffde27463735 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat deleted file mode 100644 index 0acd1663c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGNorm - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat.meta deleted file mode 100644 index d66ff927d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNorm.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 58120b3cbcaab7c4f936972fc1afc4e7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat deleted file mode 100644 index 7feec8500..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGNormEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat.meta deleted file mode 100644 index 0ad1a9a65..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3cd61a6b974688843bb2cd646d43a9a5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat deleted file mode 100644 index 21741d0d8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGNormOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat.meta deleted file mode 100644 index 1269efd76..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 42ac5d59107548a40929ad9b35f1a1ff -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat deleted file mode 100644 index af8045e01..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGNormOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 9ae95f298490a7b4d816251d4e2555d7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat.meta deleted file mode 100644 index 3a3e5858e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGNormOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7d0cbecaaca94e3468ad7224ddf783cf -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat deleted file mode 100644 index 248b8792b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGOcc - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat.meta deleted file mode 100644 index d1c80744b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOcc.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6ad274b7490439849a12f3902013588d -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat deleted file mode 100644 index 56d780dd9..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SgSGOccEmis - m_Shader: {fileID: 4800000, guid: 0ffe2976cdefd434c8fcd886ffa69322, type: 3} - m_ShaderKeywords: _EMISSION _SPECGLOSSMAP - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 2000 - stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: ce44fa6357f7a404bba4d8fceac9d6c7, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 2800000, guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: 97f7aa590efc6394da8f43bd6f402da4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat.meta deleted file mode 100644 index 23014425f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/SgMats/Opaque/SgSGOccEmis.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 53b35bb816f5ba4408b210669de1adc5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.meta deleted file mode 100644 index 5303f00b8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ec45d85ea82aa094d96999d957f2c969 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity deleted file mode 100644 index cc4d2b0e6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity +++ /dev/null @@ -1,12088 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 112000000, guid: 9cc132244bb130849b99a384bad868af, - type: 2} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &15111432 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 15111436} - - component: {fileID: 15111435} - - component: {fileID: 15111434} - - component: {fileID: 15111433} - m_Layer: 0 - m_Name: SgBaseOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &15111433 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 15111432} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: f038c25eb2fe2e94fbd05568de28d3fe, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &15111434 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 15111432} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &15111435 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 15111432} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &15111436 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 15111432} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 108 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &20182358 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 20182362} - - component: {fileID: 20182361} - - component: {fileID: 20182360} - - component: {fileID: 20182359} - m_Layer: 0 - m_Name: SgSGNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &20182359 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 20182358} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7d0cbecaaca94e3468ad7224ddf783cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &20182360 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 20182358} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &20182361 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 20182358} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &20182362 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 20182358} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 90 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &24338255 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 24338259} - - component: {fileID: 24338258} - - component: {fileID: 24338257} - - component: {fileID: 24338256} - m_Layer: 0 - m_Name: MrBaseNormBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &24338256 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 24338255} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 20bdeede18de0824bab40cda206e388e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &24338257 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 24338255} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &24338258 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 24338255} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &24338259 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 24338255} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 55 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &38761894 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 38761898} - - component: {fileID: 38761897} - - component: {fileID: 38761896} - - component: {fileID: 38761895} - m_Layer: 0 - m_Name: SgSGNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &38761895 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 38761894} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 42ac5d59107548a40929ad9b35f1a1ff, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &38761896 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 38761894} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &38761897 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 38761894} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &38761898 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 38761894} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 77 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &60551437 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 60551441} - - component: {fileID: 60551440} - - component: {fileID: 60551439} - - component: {fileID: 60551438} - m_Layer: 0 - m_Name: SgBaseSGOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &60551438 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60551437} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 833d69efff3278640ac4c10e68d58377, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &60551439 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60551437} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &60551440 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60551437} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &60551441 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60551437} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 106 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &68472129 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 68472133} - - component: {fileID: 68472132} - - component: {fileID: 68472131} - - component: {fileID: 68472130} - m_Layer: 0 - m_Name: MrBaseMREmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &68472130 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 68472129} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c88a65fcc3f4b9246913e5179c7378e2, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &68472131 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 68472129} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &68472132 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 68472129} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &68472133 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 68472129} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 66 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &83316126 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 83316130} - - component: {fileID: 83316129} - - component: {fileID: 83316128} - - component: {fileID: 83316127} - m_Layer: 0 - m_Name: SgBaseSGNormEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &83316127 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83316126} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 92d28410829eef24797e95536e6b5455, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &83316128 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83316126} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &83316129 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83316126} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &83316130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83316126} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 103 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &83643434 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 83643438} - - component: {fileID: 83643437} - - component: {fileID: 83643436} - - component: {fileID: 83643435} - m_Layer: 0 - m_Name: MrBaseNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &83643435 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83643434} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ae792b3f8e74d3149a356b10c1d0cdea, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &83643436 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83643434} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &83643437 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83643434} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &83643438 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 83643434} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 26 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &99205782 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 99205786} - - component: {fileID: 99205785} - - component: {fileID: 99205784} - - component: {fileID: 99205783} - m_Layer: 0 - m_Name: MrBaseMR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &99205783 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 99205782} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c9f90d9639550b14a8251477772d5ccc, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &99205784 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 99205782} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &99205785 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 99205782} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &99205786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 99205782} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &107453078 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 107453082} - - component: {fileID: 107453081} - - component: {fileID: 107453080} - - component: {fileID: 107453079} - m_Layer: 0 - m_Name: SgBaseOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &107453079 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107453078} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a671622329939d04bb4273772cc71c45, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &107453080 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107453078} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &107453081 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107453078} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &107453082 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 107453078} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 85 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &112483449 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 112483453} - - component: {fileID: 112483452} - - component: {fileID: 112483451} - - component: {fileID: 112483450} - m_Layer: 0 - m_Name: SgEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &112483450 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 112483449} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 08403560c7005d54d833af24ec585b40, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &112483451 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 112483449} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &112483452 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 112483449} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &112483453 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 112483449} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 99 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &125126593 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 125126597} - - component: {fileID: 125126596} - - component: {fileID: 125126595} - - component: {fileID: 125126594} - m_Layer: 0 - m_Name: SgBaseSGNormEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &125126594 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 125126593} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 241625eeb96516b4e8e24bd6d5ad53e6, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &125126595 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 125126593} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &125126596 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 125126593} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &125126597 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 125126593} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 128 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &130302154 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 130302158} - - component: {fileID: 130302157} - - component: {fileID: 130302156} - - component: {fileID: 130302155} - m_Layer: 0 - m_Name: MrBaseMRNormOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &130302155 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 130302154} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7d89093b186d69e4c8a6a04fced11fff, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &130302156 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 130302154} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &130302157 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 130302154} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &130302158 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 130302154} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 57 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &131570402 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 131570406} - - component: {fileID: 131570405} - - component: {fileID: 131570404} - - component: {fileID: 131570403} - m_Layer: 0 - m_Name: SgBaseNormBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &131570403 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 131570402} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a04bfa8fb8465dc42b4d6fe5f8389d3a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &131570404 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 131570402} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &131570405 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 131570402} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &131570406 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 131570402} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 118 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &134158958 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 134158962} - - component: {fileID: 134158961} - - component: {fileID: 134158960} - - component: {fileID: 134158959} - m_Layer: 0 - m_Name: SgOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &134158959 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 134158958} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 958c6aa92f9179142ae4aa0d0abc1cf0, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &134158960 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 134158958} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &134158961 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 134158958} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &134158962 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 134158958} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 83 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &175781310 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 175781315} - - component: {fileID: 175781314} - - component: {fileID: 175781313} - - component: {fileID: 175781312} - - component: {fileID: 175781311} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &175781311 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175781310} - m_Enabled: 1 ---- !u!124 &175781312 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175781310} - m_Enabled: 1 ---- !u!92 &175781313 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175781310} - m_Enabled: 1 ---- !u!20 &175781314 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175781310} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &175781315 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175781310} - m_LocalRotation: {x: 0.2477531, y: -0, z: -0, w: 0.96882325} - m_LocalPosition: {x: 0, y: 7.661, z: -14.813} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 28.689001, y: 0, z: 0} ---- !u!1 &177471360 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 177471364} - - component: {fileID: 177471363} - - component: {fileID: 177471362} - - component: {fileID: 177471361} - m_Layer: 0 - m_Name: MrBaseEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &177471361 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177471360} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 434bba495f8b6c44d924c4d6cd5c8df7, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &177471362 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177471360} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &177471363 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177471360} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &177471364 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177471360} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 34 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &185512065 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 185512069} - - component: {fileID: 185512068} - - component: {fileID: 185512067} - - component: {fileID: 185512066} - m_Layer: 0 - m_Name: MrNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &185512066 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 185512065} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: bf4d105e83a642e4bbc144a59ce842d2, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &185512067 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 185512065} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &185512068 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 185512065} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &185512069 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 185512065} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 12 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &192177058 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 192177062} - - component: {fileID: 192177061} - - component: {fileID: 192177060} - - component: {fileID: 192177059} - m_Layer: 0 - m_Name: SgBaseSGOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &192177059 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192177058} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c355dcb24a8d93446a764b03f22f5882, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &192177060 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192177058} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &192177061 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192177058} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &192177062 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192177058} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 80 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &217455763 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 217455767} - - component: {fileID: 217455766} - - component: {fileID: 217455765} - - component: {fileID: 217455764} - m_Layer: 0 - m_Name: SgBaseSGNormOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &217455764 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 217455763} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3eedd17f2c5859e4c94b2b378db4df46, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &217455765 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 217455763} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &217455766 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 217455763} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &217455767 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 217455763} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 120 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &228197330 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 228197334} - - component: {fileID: 228197333} - - component: {fileID: 228197332} - - component: {fileID: 228197331} - m_Layer: 0 - m_Name: SgSGOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &228197331 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 228197330} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 53b35bb816f5ba4408b210669de1adc5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &228197332 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 228197330} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &228197333 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 228197330} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &228197334 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 228197330} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 86 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &245375918 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 245375922} - - component: {fileID: 245375921} - - component: {fileID: 245375920} - - component: {fileID: 245375919} - m_Layer: 0 - m_Name: MrBaseNormEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &245375919 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 245375918} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 04532e833f65fa347b44427ad820d0aa, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &245375920 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 245375918} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &245375921 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 245375918} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &245375922 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 245375918} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 64 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &249515971 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 249515975} - - component: {fileID: 249515974} - - component: {fileID: 249515973} - - component: {fileID: 249515972} - m_Layer: 0 - m_Name: MrMRNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &249515972 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249515971} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: dcdc3c8dbf430f44898c6183a895bd66, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &249515973 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249515971} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &249515974 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249515971} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &249515975 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249515971} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 25 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &253427173 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 253427177} - - component: {fileID: 253427176} - - component: {fileID: 253427175} - - component: {fileID: 253427174} - m_Layer: 0 - m_Name: SgBaseNormEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &253427174 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 253427173} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a2fed31d68f110b488cb13b59c382ef2, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &253427175 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 253427173} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &253427176 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 253427173} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &253427177 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 253427173} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 129 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &254917544 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 254917546} - - component: {fileID: 254917545} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &254917545 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 254917544} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &254917546 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 254917544} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &255135839 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 255135843} - - component: {fileID: 255135842} - - component: {fileID: 255135841} - - component: {fileID: 255135840} - m_Layer: 0 - m_Name: SgBaseSGNormBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &255135840 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 255135839} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aff7d74f9da157242b308fe7535f8def, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &255135841 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 255135839} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &255135842 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 255135839} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &255135843 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 255135839} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 119 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &277180811 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 277180815} - - component: {fileID: 277180814} - - component: {fileID: 277180813} - - component: {fileID: 277180812} - m_Layer: 0 - m_Name: MrEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &277180812 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 277180811} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ad7f6128d0e707540bb6a166b2819e8b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &277180813 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 277180811} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &277180814 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 277180811} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &277180815 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 277180811} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 35 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &300097834 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 300097838} - - component: {fileID: 300097837} - - component: {fileID: 300097836} - - component: {fileID: 300097835} - m_Layer: 0 - m_Name: SgBaseSGOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &300097835 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300097834} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c65da77d5399336409cde28497a81343, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &300097836 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300097834} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &300097837 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300097834} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &300097838 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300097834} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 122 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &318550152 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 318550156} - - component: {fileID: 318550155} - - component: {fileID: 318550154} - - component: {fileID: 318550153} - m_Layer: 0 - m_Name: SgBaseNormOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &318550153 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318550152} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1ece6054ebab21248aee142f40f6891a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &318550154 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318550152} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &318550155 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318550152} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &318550156 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318550152} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 126 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &320724386 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 320724390} - - component: {fileID: 320724389} - - component: {fileID: 320724388} - - component: {fileID: 320724387} - m_Layer: 0 - m_Name: SgBaseSGOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &320724387 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 320724386} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7070a0ec2419d264ab356c96d4e61adc, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &320724388 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 320724386} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &320724389 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 320724386} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &320724390 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 320724386} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 87 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &324915417 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 324915421} - - component: {fileID: 324915420} - - component: {fileID: 324915419} - - component: {fileID: 324915418} - m_Layer: 0 - m_Name: MrMROcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &324915418 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 324915417} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c601f0c7eee130a4fa4786d4eda787dc, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &324915419 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 324915417} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &324915420 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 324915417} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &324915421 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 324915417} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 17 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &325559413 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 325559417} - - component: {fileID: 325559416} - - component: {fileID: 325559415} - - component: {fileID: 325559414} - m_Layer: 0 - m_Name: SgBase - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &325559414 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 325559413} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0864f82f0f84e0d4e95ac073c269e37d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &325559415 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 325559413} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &325559416 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 325559413} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &325559417 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 325559413} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 69 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &350770557 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 350770561} - - component: {fileID: 350770560} - - component: {fileID: 350770559} - - component: {fileID: 350770558} - m_Layer: 0 - m_Name: SgSG - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &350770558 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 350770557} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 017b6ebd697154a4ebf203e79ded17e1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &350770559 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 350770557} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &350770560 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 350770557} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &350770561 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 350770557} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 70 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &392935766 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 392935768} - - component: {fileID: 392935767} - m_Layer: 0 - m_Name: Reflection Probe - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!215 &392935767 -ReflectionProbe: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 392935766} - m_Enabled: 1 - serializedVersion: 2 - m_Type: 0 - m_Mode: 0 - m_RefreshMode: 0 - m_TimeSlicingMode: 0 - m_Resolution: 128 - m_UpdateFrequency: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxOffset: {x: 0, y: 0, z: 0} - m_NearClip: 0.3 - m_FarClip: 1000 - m_ShadowDistance: 100 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_IntensityMultiplier: 1 - m_BlendDistance: 1 - m_HDR: 1 - m_BoxProjection: 0 - m_RenderDynamicObjects: 0 - m_UseOcclusionCulling: 1 - m_Importance: 1 - m_CustomBakedTexture: {fileID: 0} ---- !u!4 &392935768 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 392935766} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.419, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &393674276 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 393674280} - - component: {fileID: 393674279} - - component: {fileID: 393674278} - - component: {fileID: 393674277} - m_Layer: 0 - m_Name: MrBaseNormOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &393674277 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 393674276} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1d223ad6b46560458c8ab9095a48287, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &393674278 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 393674276} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &393674279 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 393674276} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &393674280 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 393674276} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 40 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &399216293 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 399216297} - - component: {fileID: 399216296} - - component: {fileID: 399216295} - - component: {fileID: 399216294} - m_Layer: 0 - m_Name: MrOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &399216294 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 399216293} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 10b4c0281c8559c4abed2eedef3503af, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &399216295 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 399216293} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &399216296 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 399216293} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &399216297 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 399216293} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 19 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &404101404 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 404101408} - - component: {fileID: 404101407} - - component: {fileID: 404101406} - - component: {fileID: 404101405} - m_Layer: 0 - m_Name: MrBaseMRNormBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &404101405 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404101404} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d58ddc7d9d40dcc4488fe38fd7bb32e4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &404101406 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404101404} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &404101407 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404101404} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &404101408 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404101404} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 54 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &413461149 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 413461153} - - component: {fileID: 413461152} - - component: {fileID: 413461151} - - component: {fileID: 413461150} - m_Layer: 0 - m_Name: SgBaseSGEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &413461150 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 413461149} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 36cdf26ac03c95d4cba8646774298327, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &413461151 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 413461149} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &413461152 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 413461149} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &413461153 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 413461149} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 96 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &414101340 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 414101344} - - component: {fileID: 414101343} - - component: {fileID: 414101342} - - component: {fileID: 414101341} - m_Layer: 0 - m_Name: SgBaseEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &414101341 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 414101340} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e3a22a17a5c24694194e2770177c870a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &414101342 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 414101340} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &414101343 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 414101340} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &414101344 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 414101340} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 98 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &428309899 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 428309903} - - component: {fileID: 428309902} - - component: {fileID: 428309901} - - component: {fileID: 428309900} - m_Layer: 0 - m_Name: MrBaseEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &428309900 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428309899} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d48ca28902b669a45a17adad993528bd, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &428309901 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428309899} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &428309902 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428309899} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &428309903 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428309899} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 36 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &433036128 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 433036132} - - component: {fileID: 433036131} - - component: {fileID: 433036130} - - component: {fileID: 433036129} - m_Layer: 0 - m_Name: SgBaseSGNormOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &433036129 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 433036128} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 68754734ea273474fbc62ee3be4b0f03, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &433036130 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 433036128} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &433036131 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 433036128} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &433036132 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 433036128} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 111 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &461501993 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 461501997} - - component: {fileID: 461501996} - - component: {fileID: 461501995} - - component: {fileID: 461501994} - m_Layer: 0 - m_Name: MrMROccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &461501994 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461501993} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 77f3b49d8e545f14aa14d18ad72753b5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &461501995 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461501993} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &461501996 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461501993} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &461501997 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461501993} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 22 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &482139641 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 482139645} - - component: {fileID: 482139644} - - component: {fileID: 482139643} - - component: {fileID: 482139642} - m_Layer: 0 - m_Name: SgSGNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &482139642 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 482139641} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 58120b3cbcaab7c4f936972fc1afc4e7, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &482139643 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 482139641} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &482139644 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 482139641} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &482139645 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 482139641} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 74 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &505074728 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 505074732} - - component: {fileID: 505074731} - - component: {fileID: 505074730} - - component: {fileID: 505074729} - m_Layer: 0 - m_Name: MrBaseMROcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &505074729 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 505074728} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 03c17518b911f88488e57ac4e69816d1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &505074730 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 505074728} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &505074731 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 505074728} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &505074732 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 505074728} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 16 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &512065281 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 512065285} - - component: {fileID: 512065284} - - component: {fileID: 512065283} - - component: {fileID: 512065282} - m_Layer: 0 - m_Name: SgBaseNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &512065282 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 512065281} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 783cd72752dfa3a4aab7954e0d331378, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &512065283 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 512065281} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &512065284 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 512065281} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &512065285 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 512065281} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 78 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &514784746 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 514784750} - - component: {fileID: 514784749} - - component: {fileID: 514784748} - - component: {fileID: 514784747} - m_Layer: 0 - m_Name: MrBaseMRNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &514784747 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 514784746} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: eb7ec9b0dfa4a754582c1a355be4fe9b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &514784748 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 514784746} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &514784749 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 514784746} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &514784750 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 514784746} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 8 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &515689915 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 515689919} - - component: {fileID: 515689918} - - component: {fileID: 515689917} - - component: {fileID: 515689916} - m_Layer: 0 - m_Name: MrBaseNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &515689916 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 515689915} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9eb99447c2c710748979fa1dad24f4e1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &515689917 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 515689915} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &515689918 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 515689915} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &515689919 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 515689915} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 10 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &516073113 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 516073117} - - component: {fileID: 516073116} - - component: {fileID: 516073115} - - component: {fileID: 516073114} - m_Layer: 0 - m_Name: SgBaseNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &516073114 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516073113} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2b90ab1bd1b9d4049a32acf424831bb3, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &516073115 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516073113} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &516073116 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516073113} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &516073117 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516073113} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 89 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &520097220 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 520097224} - - component: {fileID: 520097223} - - component: {fileID: 520097222} - - component: {fileID: 520097221} - m_Layer: 0 - m_Name: SgSGNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &520097221 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 520097220} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3cd61a6b974688843bb2cd646d43a9a5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &520097222 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 520097220} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &520097223 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 520097220} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &520097224 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 520097220} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 93 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &542108859 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 542108863} - - component: {fileID: 542108862} - - component: {fileID: 542108861} - - component: {fileID: 542108860} - m_Layer: 0 - m_Name: SgBaseSGNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &542108860 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542108859} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e8ee0336957fd9449a4621138fcffbd7, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &542108861 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542108859} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &542108862 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542108859} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &542108863 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 542108859} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 92 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &572138368 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 572138372} - - component: {fileID: 572138371} - - component: {fileID: 572138370} - - component: {fileID: 572138369} - m_Layer: 0 - m_Name: SgBaseSGNormMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &572138369 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 572138368} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ee32c7807baa13f42bc8379e735c4efe, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &572138370 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 572138368} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &572138371 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 572138368} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &572138372 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 572138368} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 112 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &625931980 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 625931984} - - component: {fileID: 625931983} - - component: {fileID: 625931982} - - component: {fileID: 625931981} - m_Layer: 0 - m_Name: SgBaseSGNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &625931981 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 625931980} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7df70e2cce282e147a9c4b70a9dee39d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &625931982 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 625931980} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &625931983 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 625931980} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &625931984 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 625931980} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 91 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &637134655 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 637134659} - - component: {fileID: 637134658} - - component: {fileID: 637134657} - - component: {fileID: 637134656} - m_Layer: 0 - m_Name: MrBaseMROccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &637134656 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 637134655} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1da3ee79f6262884999f6b62d7e812db, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &637134657 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 637134655} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &637134658 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 637134655} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &637134659 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 637134655} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 61 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &705589054 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 705589058} - - component: {fileID: 705589057} - - component: {fileID: 705589056} - - component: {fileID: 705589055} - m_Layer: 0 - m_Name: SgBaseSGNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &705589055 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705589054} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: dedbd09cfbb8e1e4daaf2641d93675c4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &705589056 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705589054} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &705589057 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705589054} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &705589058 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705589054} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 76 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &717950333 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 717950337} - - component: {fileID: 717950336} - - component: {fileID: 717950335} - - component: {fileID: 717950334} - m_Layer: 0 - m_Name: MrBaseOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &717950334 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 717950333} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 5e440b268f48a2543bb1f6e78816e21c, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &717950335 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 717950333} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &717950336 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 717950333} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &717950337 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 717950333} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 60 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &728541573 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 728541577} - - component: {fileID: 728541576} - - component: {fileID: 728541575} - - component: {fileID: 728541574} - m_Layer: 0 - m_Name: SgSGEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &728541574 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 728541573} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c0a58828e69e90a49a69ffde27463735, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &728541575 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 728541573} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &728541576 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 728541573} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &728541577 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 728541573} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 97 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &771665172 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 771665176} - - component: {fileID: 771665175} - - component: {fileID: 771665174} - - component: {fileID: 771665173} - m_Layer: 0 - m_Name: SgBaseEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &771665173 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771665172} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 5fd2ae19b137c8e4984577fa94a8eca5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &771665174 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771665172} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &771665175 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771665172} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &771665176 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771665172} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 131 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &844117048 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 844117052} - - component: {fileID: 844117051} - - component: {fileID: 844117050} - - component: {fileID: 844117049} - m_Layer: 0 - m_Name: SgBaseSGEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &844117049 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 844117048} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c6e8613419f24cf438781dd5ca6775d7, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &844117050 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 844117048} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &844117051 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 844117048} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &844117052 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 844117048} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 101 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &858518324 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 858518328} - - component: {fileID: 858518327} - - component: {fileID: 858518326} - - component: {fileID: 858518325} - m_Layer: 0 - m_Name: MrBaseEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &858518325 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 858518324} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 58ee5c07a03163c4eb1d4e5c892a114b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &858518326 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 858518324} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &858518327 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 858518324} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &858518328 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 858518324} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 67 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &896915408 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 896915412} - - component: {fileID: 896915411} - - component: {fileID: 896915410} - - component: {fileID: 896915409} - m_Layer: 0 - m_Name: MrBase - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &896915409 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896915408} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a8e0110e2a6e2f24ba6f8f6b9b5532e6, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &896915410 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896915408} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &896915411 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896915408} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &896915412 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896915408} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &949058888 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 949058892} - - component: {fileID: 949058891} - - component: {fileID: 949058890} - - component: {fileID: 949058889} - m_Layer: 0 - m_Name: SgBaseEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &949058889 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 949058888} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: fbc18cc7a51199d47abc02352121caa1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &949058890 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 949058888} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &949058891 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 949058888} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &949058892 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 949058888} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 100 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &966800197 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 966800201} - - component: {fileID: 966800200} - - component: {fileID: 966800199} - - component: {fileID: 966800198} - m_Layer: 0 - m_Name: MrBaseMREmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &966800198 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 966800197} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2ae07f6232c40ec4ab82b7c509e7e33a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &966800199 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 966800197} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &966800200 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 966800197} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &966800201 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 966800197} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 37 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &995597310 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 995597314} - - component: {fileID: 995597313} - - component: {fileID: 995597312} - - component: {fileID: 995597311} - m_Layer: 0 - m_Name: SgBaseNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &995597311 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 995597310} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0809c9851ca16ff43a41fb44a47859a3, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &995597312 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 995597310} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &995597313 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 995597310} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &995597314 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 995597310} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 73 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1014055454 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1014055458} - - component: {fileID: 1014055457} - - component: {fileID: 1014055456} - - component: {fileID: 1014055455} - m_Layer: 0 - m_Name: SgBaseNormMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1014055455 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014055454} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2f8a030d6edcccc4b8858d2d6e35ae4b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1014055456 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014055454} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1014055457 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014055454} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1014055458 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014055454} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 113 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1020738148 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1020738152} - - component: {fileID: 1020738151} - - component: {fileID: 1020738150} - - component: {fileID: 1020738149} - m_Layer: 0 - m_Name: SgNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1020738149 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1020738148} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3e80e57f062772842a6501f2c5a2d87c, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1020738150 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1020738148} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1020738151 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1020738148} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1020738152 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1020738148} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 95 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1030871236 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1030871240} - - component: {fileID: 1030871239} - - component: {fileID: 1030871238} - - component: {fileID: 1030871237} - m_Layer: 0 - m_Name: MrBaseMRBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1030871237 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030871236} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0226a0143d23eb8489dd3fa28b8726cc, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1030871238 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030871236} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1030871239 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030871236} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1030871240 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030871236} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 53 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1043940610 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1043940614} - - component: {fileID: 1043940613} - - component: {fileID: 1043940612} - - component: {fileID: 1043940611} - m_Layer: 0 - m_Name: MrBaseOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1043940611 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1043940610} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e23707866d3abaf41aa6018a1e0633f2, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1043940612 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1043940610} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1043940613 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1043940610} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1043940614 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1043940610} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 59 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1046168408 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1046168412} - - component: {fileID: 1046168411} - - component: {fileID: 1046168410} - - component: {fileID: 1046168409} - m_Layer: 0 - m_Name: MrMRNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1046168409 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1046168408} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: de285f6cd56bb1444a70ac1c97920f86, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1046168410 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1046168408} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1046168411 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1046168408} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1046168412 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1046168408} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 14 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1084384454 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1084384458} - - component: {fileID: 1084384457} - - component: {fileID: 1084384456} - - component: {fileID: 1084384455} - m_Layer: 0 - m_Name: MrBaseMRNormOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1084384455 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1084384454} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: fd70d0b26daf3384e9968f4d7e88e641, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1084384456 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1084384454} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1084384457 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1084384454} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1084384458 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1084384454} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 62 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1093137821 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1093137825} - - component: {fileID: 1093137824} - - component: {fileID: 1093137823} - - component: {fileID: 1093137822} - m_Layer: 0 - m_Name: MrMRNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1093137822 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1093137821} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ba4d7ce41ee658c4aa199bfb4b876721, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1093137823 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1093137821} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1093137824 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1093137821} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1093137825 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1093137821} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 30 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1102560206 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1102560210} - - component: {fileID: 1102560209} - - component: {fileID: 1102560208} - - component: {fileID: 1102560207} - m_Layer: 0 - m_Name: SgNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1102560207 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1102560206} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 853932dcdd1ee3846a9cf8e280de45c8, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1102560208 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1102560206} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1102560209 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1102560206} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1102560210 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1102560206} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 88 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1132300114 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1132300118} - - component: {fileID: 1132300117} - - component: {fileID: 1132300116} - - component: {fileID: 1132300115} - m_Layer: 0 - m_Name: MrBaseNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1132300115 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132300114} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7765aa700130b3a4ebb03e85ce3a4f28, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1132300116 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132300114} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1132300117 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132300114} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1132300118 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132300114} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 13 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1150675284 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1150675288} - - component: {fileID: 1150675287} - - component: {fileID: 1150675286} - - component: {fileID: 1150675285} - m_Layer: 0 - m_Name: MrBaseOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1150675285 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1150675284} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1b9f98eae6d61af4c9759989d68e6bfb, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1150675286 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1150675284} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1150675287 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1150675284} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1150675288 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1150675284} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 18 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1158695943 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1158695947} - - component: {fileID: 1158695946} - - component: {fileID: 1158695945} - - component: {fileID: 1158695944} - m_Layer: 0 - m_Name: MrNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1158695944 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1158695943} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d1721f84107a3bb4a9945665d7016716, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1158695945 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1158695943} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1158695946 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1158695943} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1158695947 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1158695943} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 28 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1170503133 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1170503137} - - component: {fileID: 1170503136} - - component: {fileID: 1170503135} - - component: {fileID: 1170503134} - m_Layer: 0 - m_Name: SgBaseNormOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1170503134 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1170503133} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0da009aaf286dcc4baa317cf527632df, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1170503135 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1170503133} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1170503136 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1170503133} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1170503137 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1170503133} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 110 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1184134488 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1184134492} - - component: {fileID: 1184134491} - - component: {fileID: 1184134490} - - component: {fileID: 1184134489} - m_Layer: 0 - m_Name: MrBaseMRNormEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1184134489 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184134488} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a6735a19903f4b14eae6e82a51bb2fca, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1184134490 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184134488} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1184134491 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184134488} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1184134492 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1184134488} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 65 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1224233112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1224233116} - - component: {fileID: 1224233115} - - component: {fileID: 1224233114} - - component: {fileID: 1224233113} - m_Layer: 0 - m_Name: SgColor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1224233113 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224233112} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: cbe12bf239d8f484f9d2429a40fb9676, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1224233114 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224233112} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1224233115 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224233112} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1224233116 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224233112} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 68 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1224345294 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1224345298} - - component: {fileID: 1224345297} - - component: {fileID: 1224345296} - - component: {fileID: 1224345295} - m_Layer: 0 - m_Name: SgBaseSGNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1224345295 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224345294} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 4807a5df95fbc6141943204f15770192, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1224345296 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224345294} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1224345297 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224345294} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1224345298 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1224345294} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 75 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1231575659 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1231575663} - - component: {fileID: 1231575662} - - component: {fileID: 1231575661} - - component: {fileID: 1231575660} - m_Layer: 0 - m_Name: MrBaseMRNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1231575660 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1231575659} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 73c9cfdcd07790c45920a16471afa168, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1231575661 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1231575659} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1231575662 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1231575659} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1231575663 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1231575659} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 24 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1236290696 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1236290700} - - component: {fileID: 1236290699} - - component: {fileID: 1236290698} - - component: {fileID: 1236290697} - m_Layer: 0 - m_Name: MrBaseMRNormOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1236290697 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236290696} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e6e1936c58f30a74a8e250e3bdf266d8, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1236290698 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236290696} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1236290699 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236290696} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1236290700 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236290696} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 41 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1241748564 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1241748568} - - component: {fileID: 1241748567} - - component: {fileID: 1241748566} - - component: {fileID: 1241748565} - m_Layer: 0 - m_Name: SgBaseSGBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1241748565 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1241748564} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31a55beb1eb8cdc45960e71868803167, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1241748566 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1241748564} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1241748567 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1241748564} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1241748568 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1241748564} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 117 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1255244519 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1255244523} - - component: {fileID: 1255244522} - - component: {fileID: 1255244521} - - component: {fileID: 1255244520} - m_Layer: 0 - m_Name: SgBaseSGOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1255244520 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1255244519} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: fd1b93fb1f3342643b58cade504246f9, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1255244521 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1255244519} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1255244522 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1255244519} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1255244523 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1255244519} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 125 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1273703290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1273703294} - - component: {fileID: 1273703293} - - component: {fileID: 1273703292} - - component: {fileID: 1273703291} - m_Layer: 0 - m_Name: MrBaseMRMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1273703291 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273703290} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0248dc21817f2234cb0c6b3b5daa2997, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1273703292 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273703290} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1273703293 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273703290} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1273703294 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1273703290} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 50 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1358649932 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1358649936} - - component: {fileID: 1358649935} - - component: {fileID: 1358649934} - - component: {fileID: 1358649933} - m_Layer: 0 - m_Name: MrBaseNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1358649933 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1358649932} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 339c36212c4a52f4a87b3c72b31893ec, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1358649934 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1358649932} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1358649935 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1358649932} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1358649936 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1358649932} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 29 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1366210285 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1366210289} - - component: {fileID: 1366210288} - - component: {fileID: 1366210287} - - component: {fileID: 1366210286} - m_Layer: 0 - m_Name: SgBaseNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1366210286 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1366210285} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: f706ecebeed54a745befaa7a2a1b88d4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1366210287 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1366210285} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1366210288 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1366210285} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1366210289 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1366210285} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 94 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1371363953 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1371363957} - - component: {fileID: 1371363956} - - component: {fileID: 1371363955} - - component: {fileID: 1371363954} - m_Layer: 0 - m_Name: SgBaseMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1371363954 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371363953} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2a1c4053c6e9eed40ba8bb7955830d2c, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1371363955 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371363953} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1371363956 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371363953} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1371363957 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371363953} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 115 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1371667241 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1371667245} - - component: {fileID: 1371667244} - - component: {fileID: 1371667243} - - component: {fileID: 1371667242} - m_Layer: 0 - m_Name: MrBaseOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1371667242 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371667241} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3061af7779f7a4141b8336b5adc5e51e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1371667243 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371667241} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1371667244 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371667241} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1371667245 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371667241} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 44 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1372147846 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1372147850} - - component: {fileID: 1372147849} - - component: {fileID: 1372147848} - - component: {fileID: 1372147847} - m_Layer: 0 - m_Name: MrBaseMROccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1372147847 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1372147846} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 14d20fc21ecbf864eb94e66f84a44386, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1372147848 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1372147846} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1372147849 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1372147846} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1372147850 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1372147846} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 42 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1390384625 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1390384629} - - component: {fileID: 1390384628} - - component: {fileID: 1390384627} - - component: {fileID: 1390384626} - m_Layer: 0 - m_Name: MrColor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1390384626 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1390384625} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1c172ac5c6c801241a286ecbfadb8a97, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1390384627 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1390384625} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1390384628 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1390384625} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1390384629 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1390384625} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1415413609 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1415413613} - - component: {fileID: 1415413612} - - component: {fileID: 1415413611} - - component: {fileID: 1415413610} - m_Layer: 0 - m_Name: MrBaseMRNormEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1415413610 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1415413609} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ef7809af73eff0345877b9e6117bad07, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1415413611 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1415413609} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1415413612 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1415413609} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1415413613 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1415413609} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 31 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1433391080 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1433391084} - - component: {fileID: 1433391083} - - component: {fileID: 1433391082} - - component: {fileID: 1433391081} - m_Layer: 0 - m_Name: MrBaseMRNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1433391081 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433391080} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 6c675bd989ce4dc47baefa5835842f01, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1433391082 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433391080} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1433391083 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433391080} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1433391084 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1433391080} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 15 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1449382878 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1449382882} - - component: {fileID: 1449382881} - - component: {fileID: 1449382880} - - component: {fileID: 1449382879} - m_Layer: 0 - m_Name: MrMRNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1449382879 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1449382878} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ebb6f72a2999cc445be2158c700f8367, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1449382880 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1449382878} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1449382881 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1449382878} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1449382882 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1449382878} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 9 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1474518859 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1474518863} - - component: {fileID: 1474518862} - - component: {fileID: 1474518861} - - component: {fileID: 1474518860} - m_Layer: 0 - m_Name: SgBaseNormOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1474518860 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474518859} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a3abad66b81b4224b930ee2252769322, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1474518861 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474518859} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1474518862 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474518859} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1474518863 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474518859} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 121 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1488504724 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1488504728} - - component: {fileID: 1488504727} - - component: {fileID: 1488504726} - - component: {fileID: 1488504725} - m_Layer: 0 - m_Name: SgBaseNormEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1488504725 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488504724} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: b6a288faedb99b342a9888d9b571ea9a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1488504726 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488504724} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1488504727 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488504724} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1488504728 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488504724} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 102 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1500144686 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1500144690} - - component: {fileID: 1500144689} - - component: {fileID: 1500144688} - - component: {fileID: 1500144687} - m_Layer: 0 - m_Name: SgBaseSGNormOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1500144687 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1500144686} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a4e52eed94da38c47a95161cd5eb2b60, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1500144688 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1500144686} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1500144689 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1500144686} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1500144690 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1500144686} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 104 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1507394191 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1507394195} - - component: {fileID: 1507394194} - - component: {fileID: 1507394193} - - component: {fileID: 1507394192} - m_Layer: 0 - m_Name: MrMREmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1507394192 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1507394191} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: caf25b509da0fb24694a54ecf5df4c48, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1507394193 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1507394191} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1507394194 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1507394191} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1507394195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1507394191} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 33 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1520831952 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1520831956} - - component: {fileID: 1520831955} - - component: {fileID: 1520831954} - - component: {fileID: 1520831953} - m_Layer: 0 - m_Name: SgBaseOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1520831953 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1520831952} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d2f6be89ed75b12409f4300ead8dae3b, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1520831954 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1520831952} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1520831955 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1520831952} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1520831956 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1520831952} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 82 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1549614393 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1549614397} - - component: {fileID: 1549614396} - - component: {fileID: 1549614395} - - component: {fileID: 1549614394} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1549614394 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549614393} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1549614395 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549614393} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1549614396 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549614393} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1549614397 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549614393} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.25} - m_LocalScale: {x: 3.32, y: 1, z: 1.66} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1606147126 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1606147130} - - component: {fileID: 1606147129} - - component: {fileID: 1606147128} - - component: {fileID: 1606147127} - m_Layer: 0 - m_Name: SgBaseSGNormOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1606147127 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1606147126} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7ef0937df1f90c643b895073eebd32fc, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1606147128 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1606147126} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1606147129 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1606147126} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1606147130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1606147126} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 127 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1613729592 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1613729596} - - component: {fileID: 1613729595} - - component: {fileID: 1613729594} - - component: {fileID: 1613729593} - m_Layer: 0 - m_Name: SgSGOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1613729593 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1613729592} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 6ad274b7490439849a12f3902013588d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1613729594 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1613729592} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1613729595 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1613729592} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1613729596 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1613729592} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 81 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1660867357 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1660867361} - - component: {fileID: 1660867360} - - component: {fileID: 1660867359} - - component: {fileID: 1660867358} - m_Layer: 0 - m_Name: MrBaseNormOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1660867358 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1660867357} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: c447310121dfc8e409218036a307ec3a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1660867359 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1660867357} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1660867360 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1660867357} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1660867361 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1660867357} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 63 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1662849276 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1662849280} - - component: {fileID: 1662849279} - - component: {fileID: 1662849278} - - component: {fileID: 1662849277} - m_Layer: 0 - m_Name: MrBaseMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1662849277 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1662849276} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 80b5118479d549444a2b7da0468ff8a8, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1662849278 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1662849276} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1662849279 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1662849276} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1662849280 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1662849276} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 51 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1683642581 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1683642585} - - component: {fileID: 1683642584} - - component: {fileID: 1683642583} - - component: {fileID: 1683642582} - m_Layer: 0 - m_Name: MrBaseMRNormOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1683642582 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1683642581} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 63416c8e728806748bf80c0de25a2372, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1683642583 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1683642581} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1683642584 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1683642581} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1683642585 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1683642581} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 46 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1692710734 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1692710738} - - component: {fileID: 1692710737} - - component: {fileID: 1692710736} - - component: {fileID: 1692710735} - m_Layer: 0 - m_Name: MrOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1692710735 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1692710734} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 03b8e66a788a02b43a9d92da980bd78a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1692710736 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1692710734} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1692710737 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1692710734} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1692710738 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1692710734} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 20 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1696008943 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1696008947} - - component: {fileID: 1696008946} - - component: {fileID: 1696008945} - - component: {fileID: 1696008944} - m_Layer: 0 - m_Name: SgBaseOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1696008944 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696008943} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 4c45dbea439d546439e5d81fe0593b8d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1696008945 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696008943} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1696008946 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696008943} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1696008947 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1696008943} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 107 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1726784911 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1726784915} - - component: {fileID: 1726784914} - - component: {fileID: 1726784913} - - component: {fileID: 1726784912} - m_Layer: 0 - m_Name: SgBaseOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1726784912 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1726784911} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d50a24e85e35d9341926cf9144198c76, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1726784913 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1726784911} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1726784914 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1726784911} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1726784915 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1726784911} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 123 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1731694387 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1731694391} - - component: {fileID: 1731694390} - - component: {fileID: 1731694389} - - component: {fileID: 1731694388} - m_Layer: 0 - m_Name: SgBaseOccEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1731694388 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1731694387} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d651b7dae83b4604f91d9af622afb46d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1731694389 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1731694387} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1731694390 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1731694387} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1731694391 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1731694387} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 124 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1734342592 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1734342596} - - component: {fileID: 1734342595} - - component: {fileID: 1734342594} - - component: {fileID: 1734342593} - m_Layer: 0 - m_Name: MrBaseMROccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1734342593 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1734342592} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: f0e05e24572a44f4491e32fff431692a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1734342594 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1734342592} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1734342595 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1734342592} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1734342596 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1734342592} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 45 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1742938207 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742938211} - - component: {fileID: 1742938210} - - component: {fileID: 1742938209} - - component: {fileID: 1742938208} - m_Layer: 0 - m_Name: MrBaseOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1742938208 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742938207} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 334b2f3a5334eb24a81da451302ab3dd, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1742938209 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742938207} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1742938210 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742938207} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1742938211 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742938207} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -15.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 43 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1768539469 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1768539473} - - component: {fileID: 1768539472} - - component: {fileID: 1768539471} - - component: {fileID: 1768539470} - m_Layer: 0 - m_Name: MrBaseNormEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1768539470 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1768539469} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: feb39d0181f1c244190fa7443ad6dea0, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1768539471 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1768539469} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1768539472 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1768539469} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1768539473 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1768539469} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 39 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1787222574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1787222578} - - component: {fileID: 1787222577} - - component: {fileID: 1787222576} - - component: {fileID: 1787222575} - m_Layer: 0 - m_Name: SgBaseSGMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1787222575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1787222574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 33a68546a19e8664987400d94ba9ae76, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1787222576 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1787222574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1787222577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1787222574} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1787222578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1787222574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 114 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1838215745 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1838215749} - - component: {fileID: 1838215748} - - component: {fileID: 1838215747} - - component: {fileID: 1838215746} - m_Layer: 0 - m_Name: SgBaseNormOccEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1838215746 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1838215745} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e572d2223afabc647b1b34fad2afe734, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1838215747 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1838215745} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1838215748 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1838215745} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1838215749 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1838215745} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 15.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 105 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1844351575 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1844351579} - - component: {fileID: 1844351578} - - component: {fileID: 1844351577} - - component: {fileID: 1844351576} - m_Layer: 0 - m_Name: MrBaseMROccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1844351576 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844351575} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 523d2aec10a4f5144b93fec02b898880, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1844351577 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844351575} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1844351578 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844351575} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1844351579 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844351575} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 58 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1855891529 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1855891533} - - component: {fileID: 1855891532} - - component: {fileID: 1855891531} - - component: {fileID: 1855891530} - m_Layer: 0 - m_Name: MrNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1855891530 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855891529} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d683cd571fbf75b44b8059d2f94cb240, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1855891531 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855891529} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1855891532 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855891529} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1855891533 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855891529} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 11 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1858145865 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1858145869} - - component: {fileID: 1858145868} - - component: {fileID: 1858145867} - - component: {fileID: 1858145866} - m_Layer: 0 - m_Name: SgBaseSG - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1858145866 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1858145865} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9ca33c560ea0f124180b4a1c3697ff07, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1858145867 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1858145865} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1858145868 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1858145865} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1858145869 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1858145865} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 71 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1867776973 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1867776977} - - component: {fileID: 1867776976} - - component: {fileID: 1867776975} - - component: {fileID: 1867776974} - m_Layer: 0 - m_Name: MrBaseOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1867776974 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1867776973} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 4ab13621945dc5742a1c9e5bbf3c8cef, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1867776975 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1867776973} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1867776976 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1867776973} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1867776977 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1867776973} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 21 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1869562406 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1869562410} - - component: {fileID: 1869562409} - - component: {fileID: 1869562408} - - component: {fileID: 1869562407} - m_Layer: 0 - m_Name: MrBaseMREmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1869562407 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1869562406} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 64e3e6959c6440e418cdd9870069132a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1869562408 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1869562406} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1869562409 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1869562406} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1869562410 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1869562406} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 32 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1916794246 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1916794250} - - component: {fileID: 1916794249} - - component: {fileID: 1916794248} - - component: {fileID: 1916794247} - m_Layer: 0 - m_Name: MrBaseMRNormEmisMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1916794247 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916794246} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a8ff0c55185367f4e86cae036b892649, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1916794248 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916794246} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1916794249 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916794246} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1916794250 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916794246} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -13.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 38 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1930673865 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1930673869} - - component: {fileID: 1930673868} - - component: {fileID: 1930673867} - - component: {fileID: 1930673866} - m_Layer: 0 - m_Name: SgBaseSGOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1930673866 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930673865} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 6e038c9c18176f24fb88763ffc899d66, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1930673867 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930673865} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1930673868 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930673865} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1930673869 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1930673865} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 11.5, y: 0.5, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 109 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1944571300 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1944571304} - - component: {fileID: 1944571303} - - component: {fileID: 1944571302} - - component: {fileID: 1944571301} - m_Layer: 0 - m_Name: SgBaseSGEmisBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1944571301 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1944571300} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d15132b28f89cb04ba55e4b0c89f8fe4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1944571302 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1944571300} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1944571303 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1944571300} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1944571304 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1944571300} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.5, y: 0.5, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 130 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1957115080 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1957115084} - - component: {fileID: 1957115083} - - component: {fileID: 1957115082} - - component: {fileID: 1957115081} - m_Layer: 0 - m_Name: SgNormOcc - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1957115081 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1957115080} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7fa590396de9d9f40a9e8fa3877453d0, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1957115082 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1957115080} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1957115083 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1957115080} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1957115084 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1957115080} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 79 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1972770218 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1972770222} - - component: {fileID: 1972770221} - - component: {fileID: 1972770220} - - component: {fileID: 1972770219} - m_Layer: 0 - m_Name: MrBaseNormOccBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1972770219 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1972770218} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 07ae6cddbfb3bcd448f4817b88efa529, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1972770220 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1972770218} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1972770221 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1972770218} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1972770222 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1972770218} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 56 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1982663427 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1982663431} - - component: {fileID: 1982663430} - - component: {fileID: 1982663429} - - component: {fileID: 1982663428} - m_Layer: 0 - m_Name: SgBaseBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1982663428 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1982663427} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3324a941b7bac3542b45f8db0e8691ff, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1982663429 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1982663427} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1982663430 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1982663427} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1982663431 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1982663427} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 9.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 116 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1987579291 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1987579295} - - component: {fileID: 1987579294} - - component: {fileID: 1987579293} - - component: {fileID: 1987579292} - m_Layer: 0 - m_Name: MrBaseNormOccMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1987579292 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1987579291} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: db2ba5dc458d48943b3fafd89200c31e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1987579293 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1987579291} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1987579294 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1987579291} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1987579295 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1987579291} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -11.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 47 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1989524003 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1989524007} - - component: {fileID: 1989524006} - - component: {fileID: 1989524005} - - component: {fileID: 1989524004} - m_Layer: 0 - m_Name: SgNorm - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1989524004 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1989524003} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1113e82adaf59fe4188cf6e72c5d9257, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1989524005 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1989524003} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1989524006 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1989524003} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1989524007 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1989524003} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 72 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2022678917 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2022678921} - - component: {fileID: 2022678920} - - component: {fileID: 2022678919} - - component: {fileID: 2022678918} - m_Layer: 0 - m_Name: MrBaseBlend - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2022678918 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2022678917} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: dec528cdd7dc70c46852f1d483c95385, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2022678919 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2022678917} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2022678920 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2022678917} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2022678921 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2022678917} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 52 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2028961083 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2028961087} - - component: {fileID: 2028961086} - - component: {fileID: 2028961085} - - component: {fileID: 2028961084} - m_Layer: 0 - m_Name: MrBaseMRNormMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2028961084 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2028961083} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 87045f21fa645124bb711984612703d6, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2028961085 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2028961083} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2028961086 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2028961083} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2028961087 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2028961083} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: -7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 49 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2055853563 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2055853567} - - component: {fileID: 2055853566} - - component: {fileID: 2055853565} - - component: {fileID: 2055853564} - m_Layer: 0 - m_Name: MrNormOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2055853564 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2055853563} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9e8386f7266edd847ae1bf61a7101531, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2055853565 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2055853563} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2055853566 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2055853563} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2055853567 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2055853563} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 27 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2062694495 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2062694499} - - component: {fileID: 2062694498} - - component: {fileID: 2062694497} - - component: {fileID: 2062694496} - m_Layer: 0 - m_Name: SgOccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2062694496 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062694495} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 63b1c2ba36c52954eb87eacd77781160, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2062694497 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062694495} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2062694498 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062694495} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2062694499 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2062694495} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 7.5, y: 0.5, z: 7} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 84 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2101352069 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2101352073} - - component: {fileID: 2101352072} - - component: {fileID: 2101352071} - - component: {fileID: 2101352070} - m_Layer: 0 - m_Name: MrMR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2101352070 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2101352069} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: bcff95eb15b078846b8123c62eaf511a, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2101352071 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2101352069} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2101352072 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2101352069} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2101352073 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2101352069} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 0.5, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2105178288 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2105178292} - - component: {fileID: 2105178291} - - component: {fileID: 2105178290} - - component: {fileID: 2105178289} - m_Layer: 0 - m_Name: MrBaseMROccEmis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2105178289 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2105178288} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: f5b6b2335192838439a895880b566f34, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2105178290 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2105178288} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2105178291 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2105178288} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2105178292 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2105178288} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -7.5, y: 0.5, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 23 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2112452650 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2112452654} - - component: {fileID: 2112452653} - - component: {fileID: 2112452652} - - component: {fileID: 2112452651} - m_Layer: 0 - m_Name: MrBaseNormMask - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &2112452651 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2112452650} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0f27be190155d7343b612de5465df069, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &2112452652 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2112452650} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &2112452653 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2112452650} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &2112452654 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2112452650} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.5, y: 0.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 48 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity.meta deleted file mode 100644 index c524e5670..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: da9cfbe5162455445a223e080858cb2c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset deleted file mode 100644 index b65e2a01c..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset.meta deleted file mode 100644 index 871a14099..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/LightingData.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9cc132244bb130849b99a384bad868af -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 112000000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr deleted file mode 100644 index 32daee780..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr.meta deleted file mode 100644 index c7ceb6c9d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-0.exr.meta +++ /dev/null @@ -1,89 +0,0 @@ -fileFormatVersion: 2 -guid: 43405489a2219f548944e77810840fc2 -TextureImporter: - fileIDToRecycleName: - 8900000: generatedCubemap - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 1 - seamlessCubemap: 1 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 2 - aniso: 0 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 2 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr deleted file mode 100644 index b3d149d78..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr.meta deleted file mode 100644 index 6ea6c4751..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention/ReflectionProbe-1.exr.meta +++ /dev/null @@ -1,89 +0,0 @@ -fileFormatVersion: 2 -guid: 6f259caf4a1854d44adff72685b9ff53 -TextureImporter: - fileIDToRecycleName: - 8900000: generatedCubemap - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 1 - seamlessCubemap: 1 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 2 - aniso: 0 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 2 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png deleted file mode 100644 index d7f579d44..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png.meta deleted file mode 100644 index eee6512f6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/basecolor.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 385fe88b3d1c8ed409a1cd8b47c42cca -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg deleted file mode 100644 index 86acbed46..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg.meta deleted file mode 100644 index 431df106c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/emissive.jpg.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: ce44fa6357f7a404bba4d8fceac9d6c7 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg deleted file mode 100644 index 171084fb2..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg.meta deleted file mode 100644 index 1efd2e634..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/normal.jpg.meta +++ /dev/null @@ -1,121 +0,0 @@ -fileFormatVersion: 2 -guid: 9ae95f298490a7b4d816251d4e2555d7 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 0 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 1 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg deleted file mode 100644 index 0bfe8eb09..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg.meta deleted file mode 100644 index 16c7672c7..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/occ.jpg.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 1ac437c7ffc11ec4e8dfbb21e19bfa81 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg deleted file mode 100644 index 4e974644f..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg.meta deleted file mode 100644 index dcc0ca936..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/orm.jpg.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 1c6a14bfa09d73741aad0acf756c4871 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png deleted file mode 100644 index 3051fce82..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png.meta b/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png.meta deleted file mode 100644 index df6591538..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/sg.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 97f7aa590efc6394da8f43bd6f402da4 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Runtime/UnityGLTFScripts.asmdef b/UnityGLTF/Assets/UnityGLTF/Runtime/UnityGLTFScripts.asmdef deleted file mode 100644 index d949e7774..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Runtime/UnityGLTFScripts.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "UnityGLTFScripts" -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples.meta b/UnityGLTF/Assets/UnityGLTF/Samples.meta deleted file mode 100644 index 53feb8fb2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3234fd5781447654daccb7adb9f2d39d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity b/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity deleted file mode 100644 index 733da465a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &10002063 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/AnimatedCube/glTF/AnimatedCube.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/AnimatedCube/glTF/AnimatedCube.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &979359784 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 979359786} - - component: {fileID: 979359785} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &979359785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &979359786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1667736112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1667736114} - - component: {fileID: 1667736113} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1667736113 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1667736114 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity.meta deleted file mode 100644 index 5d946f85d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/AnimatedCube.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: fb84f951a6d047a42954ae48b885521d -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity deleted file mode 100644 index 117f3997b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity +++ /dev/null @@ -1,525 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &307803099 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 307803105} - - component: {fileID: 307803104} - - component: {fileID: 307803103} - - component: {fileID: 307803102} - - component: {fileID: 307803101} - - component: {fileID: 307803100} - m_Layer: 0 - m_Name: MainCamera - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &307803100 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &307803101 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_Enabled: 1 ---- !u!124 &307803102 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_Enabled: 1 ---- !u!92 &307803103 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_Enabled: 1 ---- !u!20 &307803104 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &307803105 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 307803099} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &333812304 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 333812306} - - component: {fileID: 333812305} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &333812305 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 333812304} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &333812306 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 333812304} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1098265473 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1098265475} - - component: {fileID: 1098265474} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1098265474 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1098265473} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1098265475 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1098265473} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1653655791 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/BoomBox/glTF/BoomBox.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - m_RemovedComponents: - - {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1653655792 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - m_PrefabInstance: {fileID: 1653655791} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1653655794 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1653655792} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0fec5969022b49741878ab5b33c551bf, type: 3} - m_Name: - m_EditorClassIdentifier: - asset0Path: BoomBox/glTF/BoomBox.gltf - asset1Path: Lantern/glTF/Lantern.gltf - Multithreaded: 1 - MaximumLod: 300 ---- !u!1 &1986779721 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1986779725} - - component: {fileID: 1986779724} - - component: {fileID: 1986779723} - - component: {fileID: 1986779722} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1986779722 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1986779721} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1986779723 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1986779721} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1986779724 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1986779721} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1986779725 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1986779721} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity.meta deleted file mode 100644 index afd859172..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/AssetMergeTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: bd1231aa6ce5b384c81e0045766c6db2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity b/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity deleted file mode 100644 index 35b2ce209..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity +++ /dev/null @@ -1,375 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &361668280 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 361668281} - - component: {fileID: 361668282} - m_Layer: 0 - m_Name: BenchmarkRunner - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &361668281 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 361668280} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &361668282 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 361668280} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2978836e0eec3a64c96abe7acbc0e0fb, type: 3} - m_Name: - m_EditorClassIdentifier: - GLTFUrls: - - http://localhost:8080/BoomBox/glTF/BoomBox.gltf - - http://localhost:8080/Lantern/glTF/Lantern.gltf - - http://localhost:8080/Corset/glTF/Corset.gltf - NumberOfIterations: 5 - SaveCSV: 1 ---- !u!1 &1248756964 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1248756969} - - component: {fileID: 1248756968} - - component: {fileID: 1248756967} - - component: {fileID: 1248756966} - - component: {fileID: 1248756965} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1248756965 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1248756964} - m_Enabled: 1 ---- !u!124 &1248756966 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1248756964} - m_Enabled: 1 ---- !u!92 &1248756967 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1248756964} - m_Enabled: 1 ---- !u!20 &1248756968 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1248756964} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1248756969 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1248756964} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1767769692 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1767769694} - - component: {fileID: 1767769693} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1767769693 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1767769692} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1767769694 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1767769692} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1962933998 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1962934000} - - component: {fileID: 1962933999} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1962933999 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1962933998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1962934000 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1962933998} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity.meta deleted file mode 100644 index 7e117b002..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Benchmark.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: e67b7ff194f3d0c4bbd1c24f3fcf7d09 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity deleted file mode 100644 index fe52dedb0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity +++ /dev/null @@ -1,507 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &189454042 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/BoomBox/glTF-Binary/BoomBox.glb - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/BoomBox/glTF-Binary/BoomBox.glb - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &908017463 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 908017465} - - component: {fileID: 908017464} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &908017464 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &908017465 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1742858399 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742858401} - - component: {fileID: 1742858400} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1742858400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1742858401 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity.meta deleted file mode 100644 index 88e0d0fe2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7bdca45e8c776c540bb1483ed5848eec -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity deleted file mode 100644 index 7755d3c6e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &908017463 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 908017465} - - component: {fileID: 908017464} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &908017464 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &908017465 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1001 &1461980088 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Buggy/glTF-Binary/Buggy.glb - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Buggy/glTF-Binary/Buggy.glb - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1742858399 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742858401} - - component: {fileID: 1742858400} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1742858400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1742858401 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity.meta deleted file mode 100644 index 4f6abe1d4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 1ad808956b95f394da8643e3a2b516a0 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity deleted file mode 100644 index dc7563a61..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity +++ /dev/null @@ -1,507 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &182776192 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Corset/glTF-Binary/Corset.glb - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Corset/glTF-Binary/Corset.glb - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1044806827 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742858401} - - component: {fileID: 1742858400} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1290886834 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1290886836} - - component: {fileID: 1290886835} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1290886835 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290886834} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1290886836 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290886834} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1742858400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1044806827} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1742858401 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1044806827} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity.meta deleted file mode 100644 index 3f52e2a18..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ba9f47b2af06bd44c8fb7877bae29e16 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity deleted file mode 100644 index 63683966a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &436629916 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 436629918} - - component: {fileID: 436629917} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &436629917 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 436629916} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &436629918 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 436629916} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1001 &959455602 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF-Binary/Lantern.glb - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF-Binary/Lantern.glb - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1643659068 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1643659070} - - component: {fileID: 1643659069} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1643659069 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1643659068} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1643659070 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1643659068} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity.meta deleted file mode 100644 index ea7cc6b9d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 6061c6963fb64694891664b8fc1674f9 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity deleted file mode 100644 index 2910717c1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity +++ /dev/null @@ -1,507 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &358204559 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 358204561} - - component: {fileID: 358204560} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &358204560 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358204559} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &358204561 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358204559} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &683563953 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 683563959} - - component: {fileID: 683563958} - - component: {fileID: 683563957} - - component: {fileID: 683563956} - - component: {fileID: 683563955} - - component: {fileID: 683563954} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &683563954 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &683563955 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!124 &683563956 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!92 &683563957 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!20 &683563958 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &683563959 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1656007881 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1656007883} - - component: {fileID: 1656007882} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1656007882 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656007881} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1656007883 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656007881} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1835019344 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/BoomBoxWithAxes/glTF/BoomBoxWithAxes.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/BoomBoxWithAxes/glTF/BoomBoxWithAxes.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity.meta deleted file mode 100644 index 0dacd6bda..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BoomBoxTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f14687e9e9c77e541a4594944cace7b3 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity deleted file mode 100644 index 071bd6d4e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &908017463 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 908017465} - - component: {fileID: 908017464} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &908017464 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &908017465 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1001 &1461980088 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Buggy/glTF/Buggy.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Buggy/glTF/Buggy.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1742858399 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742858401} - - component: {fileID: 1742858400} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1742858400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1742858401 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1742858399} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity.meta deleted file mode 100644 index e349353ed..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/BuggyTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9765b46364f55db4da07dbf1c868e131 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity deleted file mode 100644 index d17998027..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity +++ /dev/null @@ -1,518 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &57913627 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/Constant/Constant.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFConstant - value: - objectReference: {fileID: 4800000, guid: ede6e66a96bc7164abd2a9217b5a8b4c, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/Constant/Constant.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &415601759 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 415601764} - - component: {fileID: 415601763} - - component: {fileID: 415601762} - - component: {fileID: 415601761} - - component: {fileID: 415601760} - - component: {fileID: 415601765} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &415601760 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_Enabled: 1 ---- !u!124 &415601761 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_Enabled: 1 ---- !u!92 &415601762 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_Enabled: 1 ---- !u!20 &415601763 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &415601764 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -4.1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &415601765 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 415601759} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!1 &492783221 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 492783223} - - component: {fileID: 492783222} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &492783222 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 492783221} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &492783223 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 492783221} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &968481391 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 968481393} - - component: {fileID: 968481392} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &968481392 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 968481391} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &968481393 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 968481391} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &976094672 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 976094676} - - component: {fileID: 976094675} - - component: {fileID: 976094674} - - component: {fileID: 976094673} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &976094673 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 976094672} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &976094674 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 976094672} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &976094675 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 976094672} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &976094676 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 976094672} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity.meta deleted file mode 100644 index 9ea4887ca..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/ConstantTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a5d0e8576c725bc42928c6b760ab9401 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity deleted file mode 100644 index a5c683b22..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity +++ /dev/null @@ -1,507 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &1430240377 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430240379} - - component: {fileID: 1430240378} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1430240378 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430240377} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1430240379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430240377} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2033690683 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2033690685} - - component: {fileID: 2033690684} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &2033690684 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2033690683} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &2033690685 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2033690683} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &2124777145 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Corset/glTF/Corset.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Corset/glTF/Corset.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity.meta deleted file mode 100644 index a085221a2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/CorsetTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b6ecc977ff0c9bc4d9c08e000d5ad2bc -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs deleted file mode 100644 index 86f28e3f0..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs +++ /dev/null @@ -1,176 +0,0 @@ -using Newtonsoft.Json; -using System.Collections.Generic; -using System.IO; -using System.Net.Http; -using UnityEditor; -using UnityEngine; -using UnityGLTF.Loader; - -namespace UnityGLTF -{ - [CustomEditor(typeof(SampleModelList))] - public class SampleModelListInspector : Editor - { - private List models = null; - private bool requestedModelList = false; - private Vector2 scrollPosition = Vector2.zero; - - public override void OnInspectorGUI() - { - DrawDefaultInspector(); - serializedObject.ApplyModifiedProperties(); - - bool enabled = true; - var targetObject = serializedObject.targetObject as SampleModelList; - - if (targetObject != null) - { - enabled = targetObject.enabled; - } - - bool shouldShowList = Application.isPlaying && enabled; - - if (!shouldShowList) - { - models = null; - requestedModelList = false; - scrollPosition = Vector2.zero; - } - else - { - if (!requestedModelList) - { - requestedModelList = true; - - DownloadSampleModelList(); - } - - EditorGUILayout.LabelField("Models:"); - - if (models != null) - { - using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPosition)) - { - scrollPosition = scrollView.scrollPosition; - - foreach (var model in models) - { - DrawModel(model); - } - } - } - } - } - - private void DrawModel(SampleModel model) - { - using (var horizontal = new EditorGUILayout.HorizontalScope()) - { - if (model.Expanded) - { - GUILayout.Label(model.Name); - - foreach (var variant in model.Variants) - { - DrawModelLoadButton(variant.Name, variant.ModelFilePath); - } - } - else - { - DrawModelLoadButton(model.Name, model.DefaultFilePath); - } - - if (model.Variants.Count > 1) - { - model.Expanded = DrawExpandCollapseButton(model.Expanded, model.Variants.Count); - } - } - } - - private bool DrawExpandCollapseButton(bool expanded, int count) - { - string expandCollapseText = expanded ? "-" : "+"; - string buttonText = $"{expandCollapseText} ({count})"; - var buttonPressed = GUILayout.Button(buttonText, GUILayout.Width(40)); - - if (buttonPressed) - { - return !expanded; - } - else - { - return expanded; - } - } - - private void DrawModelLoadButton(string title, string modelRelativePath) - { - var currentModelPath = serializedObject.FindProperty(SampleModelList.ModelRelativePathFieldName).stringValue; - bool focused = currentModelPath == modelRelativePath; - - GUIStyle style = new GUIStyle(GUI.skin.button); - if (focused) - { - style.fontStyle = FontStyle.Bold; - } - - var buttonPressed = GUILayout.Button(title, style); - - if (buttonPressed) - { - LoadModel(modelRelativePath); - } - } - - private void LoadModel(string relativePath) - { - serializedObject.FindProperty(SampleModelList.ModelRelativePathFieldName).stringValue = relativePath; - serializedObject.FindProperty(SampleModelList.LoadThisFrameFieldName).boolValue = true; - serializedObject.ApplyModifiedProperties(); - } - - private async void DownloadSampleModelList() - { - var pathRoot = serializedObject.FindProperty(SampleModelList.PathRootFieldName).stringValue; - var manifestRelativePath = serializedObject.FindProperty(SampleModelList.ManifestRelativePathFieldName).stringValue; - - var loader = new WebRequestLoader(pathRoot); - Stream stream; - try - { - stream = await loader.LoadStreamAsync(manifestRelativePath); - } - catch (HttpRequestException) - { - Debug.LogError($"Failed to download sample model list manifest from: {pathRoot}{manifestRelativePath}", serializedObject.targetObject); - throw; - } - - var jsonReader = CreateJsonReaderFromStream(stream); - jsonReader.Read(); - var listType = SampleModelListParser.DetermineListSource(jsonReader); - - jsonReader = CreateJsonReaderFromStream(stream); - jsonReader.Read(); - - - if (listType == SampleModelListParser.ListType.SampleModels) - { - models = SampleModelListParser.ParseSampleModels(jsonReader); - } - else - { - models = SampleModelListParser.ParseAssetGeneratorModels(jsonReader); - } - } - - private JsonReader CreateJsonReaderFromStream(Stream stream) - { - stream.Seek(0, SeekOrigin.Begin); - - var streamReader = new StreamReader(stream); - - return new JsonTextReader(streamReader); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs.meta deleted file mode 100644 index 61712a23b..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListInspector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f28130cf15191b44ea20112e38fb9a6c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs deleted file mode 100644 index 6b7a93980..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs +++ /dev/null @@ -1,329 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace UnityGLTF -{ - public class SampleModelVariant - { - public SampleModelVariant(string name, string modelFilePath) - { - Name = name; - ModelFilePath = modelFilePath; - } - - public string Name { get; } - public string ModelFilePath { get; } - } - - public class SampleModel - { - public string Name; - public string ScreenshotPath; - public List Variants; - public string DefaultFilePath => Variants[0].ModelFilePath; - public bool Expanded = false; - } - - public static class SampleModelListParser - { - public enum ListType - { - SampleModels, - AssetGenerator - } - - public static ListType DetermineListSource(JsonReader reader) - { - ParseStartArray(reader, "models"); - ParseStartObject(reader, "modelOrFolder"); - - if (reader.TokenType != JsonToken.PropertyName) - { - throw new Exception("Failed to parse first property to determine list type"); - } - - string firstProperty = reader.Value.ToString(); - - switch (firstProperty.ToLowerInvariant()) - { - case "folder": - case "id": - case "models": - return ListType.AssetGenerator; - - case "name": - case "screenshot": - case "variants": - return ListType.SampleModels; - - default: - throw new FormatException("Error parsing json to determine list type"); - } - } - - public static List ParseAssetGeneratorModels(JsonReader reader) - { - var models = new List(); - - ParseStartArray(reader, "folders"); - - while (reader.TokenType != JsonToken.EndArray) - { - ParseAssetGeneratorFolder(reader, models); - } - - ParseEndArray(reader, "folders"); - - return models; - } - - private static void ParseAssetGeneratorFolder(JsonReader reader, IList models) - { - string folderName = null; - - ParseStartObject(reader, "folder"); - - while (reader.TokenType != JsonToken.EndObject) - { - if (reader.TokenType != JsonToken.PropertyName) - { - throw new Exception("Failed to parse folder property"); - } - var propertyName = reader.Value.ToString().ToLowerInvariant(); - reader.Read(); - - switch (propertyName) - { - case "folder": - folderName = ParsePropertyValueAsString(reader, propertyName); - break; - case "id": - // There will be a number. Read that and ignore it. - reader.Read(); - break; - case "models": - Debug.Assert(!string.IsNullOrEmpty(folderName), "Asset generator list should have folder listed before models."); - ParseAssetGeneratorModels(reader, models, folderName); - break; - } - } - - ParseEndObject(reader, "folder"); - } - - private static void ParseAssetGeneratorModels(JsonReader reader, IList models, string folderName) - { - ParseStartArray(reader, "models"); - - while (reader.TokenType != JsonToken.EndArray) - { - models.Add(ParseAssetGeneratorModel(reader, folderName)); - } - - ParseEndArray(reader, "models"); - } - - private static SampleModel ParseAssetGeneratorModel(JsonReader reader, string folderName) - { - var result = new SampleModel(); - result.Variants = new List(); - - ParseStartObject(reader, "model"); - - while (reader.TokenType != JsonToken.EndObject) - { - if (reader.TokenType != JsonToken.PropertyName) - { - throw new Exception("Failed to parse model property"); - } - var propertyName = reader.Value.ToString().ToLowerInvariant(); - reader.Read(); - - switch (propertyName) - { - case "filename": - var fileName = ParsePropertyValueAsString(reader, propertyName); - result.Name = fileName; - result.Variants.Add(new SampleModelVariant(result.Name, $"{folderName}/{fileName}")); - break; - case "loadable": - // There will be a bool. Read that and ignore it. - reader.Read(); - break; - case "sampleimagename": - result.ScreenshotPath = ParsePropertyValueAsString(reader, propertyName); - break; - case "camera": - ParseCamera(reader); - break; - } - } - - ParseEndObject(reader, "model"); - - return result; - } - - private static void ParseCamera(JsonReader reader) - { - ParseStartObject(reader, "camera"); - - ParseToken(reader, JsonToken.PropertyName, "translation"); - ParseStartArray(reader, "translation"); - while (reader.TokenType != JsonToken.EndArray) - { - reader.Read(); - } - ParseEndArray(reader, "translation"); - - ParseEndObject(reader, "camera"); - } - - private static void ParseToken(JsonReader reader, JsonToken expectedTokenType, string expectedString) - { - if (reader.TokenType != expectedTokenType - || reader.Value.ToString().ToLowerInvariant() != expectedString) - { - throw new Exception($"Failed to parse {expectedString}"); - } - reader.Read(); - } - - public static List ParseSampleModels(JsonReader reader) - { - var models = new List(); - - ParseStartArray(reader, "models"); - - while (reader.TokenType != JsonToken.EndArray) - { - models.Add(ParseSampleModel(reader)); - } - - ParseEndArray(reader, "models"); - - return models; - } - - private static SampleModel ParseSampleModel(JsonReader reader) - { - var result = new SampleModel(); - - ParseStartObject(reader, "model"); - - while (reader.TokenType != JsonToken.EndObject) - { - if (reader.TokenType != JsonToken.PropertyName) - { - throw new Exception("Failed to parse model property"); - } - var propertyName = reader.Value.ToString().ToLowerInvariant(); - reader.Read(); - - switch (propertyName) - { - case "name": - result.Name = ParsePropertyValueAsString(reader, propertyName); - break; - case "screenshot": - result.ScreenshotPath = ParsePropertyValueAsString(reader, propertyName); - break; - case "variants": - Debug.Assert(!string.IsNullOrEmpty(result.Name), "Model index should have a name before a list of variants."); - result.Variants = ParseVariants(reader, result.Name); - break; - } - } - - ParseEndObject(reader, "model"); - - return result; - } - - private static string ParsePropertyValueAsString(JsonReader reader, string propertyName) - { - if (reader.TokenType != JsonToken.String) - { - throw new Exception($"Failed to parse string value for {propertyName}"); - } - var result = reader.Value.ToString(); - - reader.Read(); - - return result; - } - - private static List ParseVariants(JsonReader reader, string modelName) - { - var variants = new List(); - - ParseStartObject(reader, "variants"); - - while (reader.TokenType != JsonToken.EndObject) - { - variants.Add(ParseVariant(reader, modelName)); - } - - ParseEndObject(reader, "variants"); - - return variants; - } - - private static SampleModelVariant ParseVariant(JsonReader reader, string modelName) - { - if (reader.TokenType != JsonToken.PropertyName) - { - throw new Exception("Failed to parse model variant name"); - } - string variantType = reader.Value.ToString(); - reader.Read(); - - if (reader.TokenType != JsonToken.String) - { - throw new Exception("Failed to parse model variant filename"); - } - string variantName = reader.Value.ToString(); - reader.Read(); - - return new SampleModelVariant(variantType, $"{modelName}/{variantType}/{variantName}"); - } - - private static void ParseStartObject(JsonReader reader, string objectName) - { - if (reader.TokenType != JsonToken.StartObject) - { - throw new Exception($"Failed to parse {objectName} start"); - } - reader.Read(); - } - - private static void ParseEndObject(JsonReader reader, string objectName) - { - if (reader.TokenType != JsonToken.EndObject) - { - throw new Exception($"Failed to parse {objectName} end"); - } - reader.Read(); - } - - private static void ParseStartArray(JsonReader reader, string objectName) - { - if (reader.TokenType != JsonToken.StartArray) - { - throw new Exception($"Failed to parse {objectName} start"); - } - reader.Read(); - } - - private static void ParseEndArray(JsonReader reader, string objectName) - { - if (reader.TokenType != JsonToken.EndArray) - { - throw new Exception($"Failed to parse {objectName} end"); - } - reader.Read(); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs.meta deleted file mode 100644 index 0adfd8ab6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Editor/SampleModelListParser.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 59a81a17ba63ebb4a9897bfeb7693a26 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity deleted file mode 100644 index d15107e01..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity +++ /dev/null @@ -1,955 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &16045204 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 16045209} - - component: {fileID: 16045208} - - component: {fileID: 16045207} - - component: {fileID: 16045206} - - component: {fileID: 16045205} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &16045205 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 16045204} - m_Enabled: 1 ---- !u!124 &16045206 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 16045204} - m_Enabled: 1 ---- !u!92 &16045207 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 16045204} - m_Enabled: 1 ---- !u!20 &16045208 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 16045204} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &16045209 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 16045204} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &171165375 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 171165376} - - component: {fileID: 171165379} - - component: {fileID: 171165378} - - component: {fileID: 171165377} - m_Layer: 0 - m_Name: Cylinder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &171165376 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171165375} - m_LocalRotation: {x: -0, y: -0, z: 0.22258633, w: 0.974913} - m_LocalPosition: {x: 0.872, y: 0.75, z: -1.199} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 696459834} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 25.722002} ---- !u!23 &171165377 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171165375} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: cf392602be42ff24690a5ef39a3abc13, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!136 &171165378 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171165375} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &171165379 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171165375} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &322990269 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 322990271} - - component: {fileID: 322990270} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &322990270 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 322990269} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &322990271 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 322990269} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &578016859 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 578016861} - - component: {fileID: 578016860} - m_Layer: 0 - m_Name: TestExportScene - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &578016860 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 578016859} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7538181ffb49fb8459d770ff26ed0c0e, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &578016861 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 578016859} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 696459834} - - {fileID: 1330640425} - - {fileID: 1224927894} - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &696459833 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 696459834} - m_Layer: 0 - m_Name: TestNode - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &696459834 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 696459833} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1921302747} - - {fileID: 1543270391} - - {fileID: 1310634125} - - {fileID: 171165376} - - {fileID: 779185756} - m_Father: {fileID: 578016861} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &779185755 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 696459834} - m_Modifications: - - target: {fileID: 100004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_Name - value: d8 (1) - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.x - value: -1.881427 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.y - value: 0.315 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.z - value: 1.059433 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.7069834 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7072302 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: -89.98 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalScale.x - value: 100.00006 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalScale.y - value: 99.99998 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalScale.z - value: 100.00006 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} ---- !u!4 &779185756 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, - type: 3} - m_PrefabInstance: {fileID: 779185755} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &1224927893 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 578016861} - m_Modifications: - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.x - value: -1.244 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.y - value: -0.094 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalPosition.z - value: -1.301 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.x - value: -0.6955708 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.y - value: 0.45544925 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.z - value: 0.55213785 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalRotation.w - value: 0.06237793 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: -143.863 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 61.73 - objectReference: {fileID: 0} - - target: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 44.366 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, type: 3} ---- !u!4 &1224927894 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 400004, guid: 78f6fd4e1f591d348a0e9cb0cec70f1e, - type: 3} - m_PrefabInstance: {fileID: 1224927893} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1310634124 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1310634125} - - component: {fileID: 1310634128} - - component: {fileID: 1310634127} - - component: {fileID: 1310634126} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1310634125 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1310634124} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.68, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 696459834} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1310634126 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1310634124} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1310634127 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1310634124} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1310634128 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1310634124} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1330640421 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1330640425} - - component: {fileID: 1330640424} - - component: {fileID: 1330640423} - - component: {fileID: 1330640422} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1330640422 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330640421} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 4c385da771fe80b44ae83f94d0b06416, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1330640423 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330640421} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1330640424 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330640421} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1330640425 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330640421} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1.857} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 578016861} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1543270390 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1543270391} - - component: {fileID: 1543270394} - - component: {fileID: 1543270393} - - component: {fileID: 1543270392} - m_Layer: 0 - m_Name: Sphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1543270391 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543270390} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.62, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 696459834} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1543270392 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543270390} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 9a5c359792450dc4b9abe336d3803be5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!135 &1543270393 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543270390} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1543270394 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543270390} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1921302746 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1921302747} - - component: {fileID: 1921302750} - - component: {fileID: 1921302749} - - component: {fileID: 1921302748} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1921302747 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1921302746} - m_LocalRotation: {x: 0, y: 0.38268343, z: 0, w: 0.92387956} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 696459834} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0} ---- !u!23 &1921302748 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1921302746} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &1921302749 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1921302746} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &1921302750 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1921302746} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity.meta deleted file mode 100644 index 50fe46912..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/ExportTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 1492280843c14944f8919eda7fa0fb58 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity deleted file mode 100644 index 7bad1899c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity +++ /dev/null @@ -1,476 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &908017463 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 908017465} - - component: {fileID: 908017464} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &908017464 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &908017465 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 908017463} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1001 &1461980088 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: https://rawgit.com/sbtron/BabylonJS-glTFLoader/master/src/models/2.0/png/FarmLandDiorama/glTF/FarmLandDiorama.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: https://rawgit.com/sbtron/BabylonJS-glTFLoader/master/src/models/2.0/png/FarmLandDiorama/glTF/FarmLandDiorama.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity.meta deleted file mode 100644 index 6a8ffc021..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: df36c2dfaf0bc35488e81c2faf022bd5 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity deleted file mode 100644 index 39577e528..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity +++ /dev/null @@ -1,508 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030528, g: 0.49799836, b: 0.5628034, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 2.5, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 2.5, z: -5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1039131111 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1039131113} - - component: {fileID: 1039131112} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1039131112 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1039131111} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1039131113 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1039131111} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1667736112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1667736114} - - component: {fileID: 1667736113} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1667736113 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1667736114 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_LocalRotation: {x: 0.16373174, y: 0.49098268, z: -0.09453057, w: 0.85040694} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 60, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &2057340142 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_Name - value: GLTF - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF-pbrSpecularGlossiness/Lantern.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity.meta deleted file mode 100644 index 50c49ae32..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 3d986f306d83ee14d96b5fb1c7e86169 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity deleted file mode 100644 index 7a87aa117..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &10002063 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF/Lantern.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF/Lantern.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &979359784 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 979359786} - - component: {fileID: 979359785} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &979359785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &979359786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1667736112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1667736114} - - component: {fileID: 1667736113} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1667736113 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1667736114 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity.meta deleted file mode 100644 index e11a48e06..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/LanternTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 5a247e41f19cb4f40b0fe8392fd4901f -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials.meta deleted file mode 100644 index 7fbc7e071..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e0ff2e592f454da438dc0892b73cb272 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat deleted file mode 100644 index 2c9061f82..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat +++ /dev/null @@ -1,86 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: ConstantMat - m_Shader: {fileID: 4800000, guid: ede6e66a96bc7164abd2a9217b5a8b4c, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _LightMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cull: 2 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _EmissionUV: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _LightUV: 0 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _AmbientFactor: {r: 1, g: 1, b: 1, a: 1} - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0.2869213, g: 0.6985294, b: 0.27222103, a: 1} - - _LightmapFactor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat.meta deleted file mode 100644 index b5ea76f1d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/ConstantMat.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4c385da771fe80b44ae83f94d0b06416 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat deleted file mode 100644 index 89783efeb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: GLTFStandardMaterial - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat.meta deleted file mode 100644 index c2c8a26c8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/GLTFStandardMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4f9dcff77c12f5d4d921f2e37119feed -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat deleted file mode 100644 index 95daf620c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Material.001 - m_Shader: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicRoughnessMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cull: 0 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Roughness: 0.5 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.03254065, g: 0.062342405, b: 0.8000001, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat.meta deleted file mode 100644 index 8c2293dc4..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/Material.001.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e4a17babde6711a49a45783889680696 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat deleted file mode 100644 index 57caedf6d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: TestMaterial1 - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _EMISSION - m_LightmapFlags: 1 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 1 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.4894882, g: 0.3114187, b: 0.9411765, a: 1} - - _EmissionColor: {r: 0.8014706, g: 0.10607699, b: 0.10607699, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat.meta deleted file mode 100644 index bea0129d3..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/TestMaterial1.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9a5c359792450dc4b9abe336d3803be5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat deleted file mode 100644 index ac8b5561a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: UnityStandardMaterial - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _ALPHAPREMULTIPLY_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 3 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 1, g: 0, b: 0, a: 0.938} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat.meta deleted file mode 100644 index 313dc3e3a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Materials/UnityStandardMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cf392602be42ff24690a5ef39a3abc13 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: -1 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Models.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Models.meta deleted file mode 100644 index 610a8cfec..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Models.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c24f84562f8757440a0f8b47f09614c7 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx b/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx deleted file mode 100644 index 01a9d1c48..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx.meta deleted file mode 100644 index 343b87195..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Models/d8.fbx.meta +++ /dev/null @@ -1,108 +0,0 @@ -fileFormatVersion: 2 -guid: 78f6fd4e1f591d348a0e9cb0cec70f1e -ModelImporter: - serializedVersion: 23 - fileIDToRecycleName: - 100000: Cone - 100002: Cone.001 - 100004: //RootNode - 400000: Cone - 400002: Cone.001 - 400004: //RootNode - 2300000: Cone - 2300002: Cone.001 - 3300000: Cone - 3300002: Cone.001 - 4300000: Cone - 4300002: Cone.001 - externalObjects: - - first: - type: UnityEngine:Material - assembly: UnityEngine.CoreModule - name: Material.001 - second: {fileID: 2100000, guid: e4a17babde6711a49a45783889680696, type: 2} - materials: - importMaterials: 1 - materialName: 0 - materialSearch: 1 - materialLocation: 0 - animations: - legacyGenerateAnimations: 4 - bakeSimulation: 0 - resampleCurves: 1 - optimizeGameObjects: 0 - motionNodeName: - rigImportErrors: - rigImportWarnings: - animationImportErrors: - animationImportWarnings: - animationRetargetingWarnings: - animationDoRetargetingWarnings: 0 - importAnimatedCustomProperties: 0 - importConstraints: 0 - animationCompression: 1 - animationRotationError: 0.5 - animationPositionError: 0.5 - animationScaleError: 0.5 - animationWrapMode: 0 - extraExposedTransformPaths: [] - extraUserProperties: [] - clipAnimations: [] - isReadable: 1 - meshes: - lODScreenPercentages: [] - globalScale: 1 - meshCompression: 0 - addColliders: 0 - useSRGBMaterialColor: 1 - importVisibility: 0 - importBlendShapes: 1 - importCameras: 0 - importLights: 0 - swapUVChannels: 0 - generateSecondaryUV: 0 - useFileUnits: 1 - optimizeMeshForGPU: 1 - keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 1 - secondaryUVAngleDistortion: 8 - secondaryUVAreaDistortion: 15.000001 - secondaryUVHardAngle: 88 - secondaryUVPackMargin: 4 - useFileScale: 1 - previousCalculatedGlobalScale: 1 - hasPreviousCalculatedGlobalScale: 0 - tangentSpace: - normalSmoothAngle: 60 - normalImportMode: 0 - tangentImportMode: 3 - normalCalculationMode: 0 - legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1 - blendShapeNormalImportMode: 1 - normalSmoothingSource: 0 - importAnimation: 1 - copyAvatar: 0 - humanDescription: - serializedVersion: 2 - human: [] - skeleton: [] - armTwist: 0.5 - foreArmTwist: 0.5 - upperLegTwist: 0.5 - legTwist: 0.5 - armStretch: 0.05 - legStretch: 0.05 - feetSpacing: 0 - rootMotionBoneName: - hasTranslationDoF: 0 - hasExtraRoot: 0 - skeletonHasParents: 1 - lastHumanDescriptionAvatarSource: {instanceID: 0} - animationType: 0 - humanoidOversampling: 1 - additionalBone: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity b/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity deleted file mode 100644 index e3f9d3ecf..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity +++ /dev/null @@ -1,491 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &750635813 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 750635817} - - component: {fileID: 750635816} - - component: {fileID: 750635815} - - component: {fileID: 750635814} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &750635814 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 750635813} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &750635815 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 750635813} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &750635816 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 750635813} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &750635817 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 750635813} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &758867165 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 758867171} - - component: {fileID: 758867170} - - component: {fileID: 758867169} - - component: {fileID: 758867168} - - component: {fileID: 758867167} - - component: {fileID: 758867166} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &758867166 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &758867167 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_Enabled: 1 ---- !u!124 &758867168 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_Enabled: 1 ---- !u!92 &758867169 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_Enabled: 1 ---- !u!20 &758867170 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &758867171 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 758867165} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &804702897 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 804702899} - - component: {fileID: 804702898} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &804702898 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 804702897} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &804702899 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 804702897} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1647343056 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1647343058} - - component: {fileID: 1647343057} - m_Layer: 0 - m_Name: GLTF - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1647343057 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1647343056} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2719fa7e09cf264492f3aa25409f37e, type: 3} - m_Name: - m_EditorClassIdentifier: - SceneIndex: 0 - Url: http://localhost:8080/MultiScene/glTF/MultiScene.gltf ---- !u!4 &1647343058 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1647343056} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} ---- !u!1 &2030039726 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2030039728} - - component: {fileID: 2030039727} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &2030039727 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2030039726} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &2030039728 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2030039726} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 13.331022, y: 30.760239, z: 29.008717} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity.meta deleted file mode 100644 index 7c82e4053..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/MultiSceneTest.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ab0db09fd0021d64fb65b2f685d534ae -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity deleted file mode 100644 index 603a72ea8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &10002063 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 0.1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/Lantern/glTF/Lantern.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/DamagedHelmet/glTF-Binary/DamagedHelmet.glb - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &979359784 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 979359786} - - component: {fileID: 979359785} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &979359785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &979359786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1667736112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1667736114} - - component: {fileID: 1667736113} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1667736113 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1667736114 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity.meta deleted file mode 100644 index d818247a5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d57d27a96f86ef04a925a0d66ff55d5e -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts.meta deleted file mode 100644 index 8ed8bcfd9..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3762d3d344c0ba84d89e58f7b36435af -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs deleted file mode 100644 index ed4aa10e5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.IO; -using UnityEngine; - -namespace UnityGLTF.Examples -{ - public class GLTFExporterTest : MonoBehaviour - { - // Use this for initialization - void Awake() - { - var exporter = new GLTFSceneExporter(new[] {transform}, new ExportOptions()); - var appPath = Application.dataPath; - var wwwPath = appPath.Substring(0, appPath.LastIndexOf("Assets")) + "www"; - exporter.SaveGLTFandBin(Path.Combine(wwwPath, "TestScene"), "TestScene"); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs.meta deleted file mode 100644 index c297b0e6e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/GLTFExporterTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7538181ffb49fb8459d770ff26ed0c0e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs deleted file mode 100644 index 0e659591e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections; -using UnityEngine; -using UnityGLTF.Loader; - -namespace UnityGLTF.Examples -{ - public class MultiSceneComponent : MonoBehaviour - { - public int SceneIndex = 0; - public string Url; - - private GLTFSceneImporter _importer; - private ImportOptions _importOptions; - private string _fileName; - - void Start() - { - Debug.Log("Hit spacebar to change the scene."); - Uri uri = new Uri(Url); - var directoryPath = URIHelper.AbsoluteUriPath(uri); - _importOptions = new ImportOptions - { - DataLoader = new WebRequestLoader(directoryPath), - AsyncCoroutineHelper = gameObject.AddComponent(), - }; - _fileName = URIHelper.GetFileFromUri(uri); - - LoadScene(SceneIndex); - } - - void Update() - { - if (Input.GetKeyDown("space")) - { - SceneIndex = SceneIndex == 0 ? 1 : 0; - Debug.LogFormat("Loading scene {0}", SceneIndex); - LoadScene(SceneIndex); - } - } - - async void LoadScene(int SceneIndex) - { - foreach (Transform child in transform) - { - GameObject.Destroy(child.gameObject); - } - - _importer = new GLTFSceneImporter( - _fileName, - _importOptions - ); - - _importer.SceneParent = gameObject.transform; - await _importer.LoadSceneAsync(SceneIndex); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs.meta deleted file mode 100644 index b807fc8f2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/MultiSceneComponent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e2719fa7e09cf264492f3aa25409f37e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs deleted file mode 100644 index 373b149f5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs +++ /dev/null @@ -1,113 +0,0 @@ -using UnityEngine; - -// Taken from http://wiki.unity3d.com/index.php?title=MouseOrbitImproved -namespace UnityGLTF.Examples -{ - [RequireComponent(typeof(Camera))] - [AddComponentMenu("Camera-Control/Mouse Orbit with zoom")] - public class OrbitCameraController : MonoBehaviour - { - public Vector3 targetPosition = Vector3.zero; - public float distance = 5.0f; - public float xSpeed = 120.0f; - public float ySpeed = 120.0f; - public float zoomSpeed = 0.8f; - - public float yMinLimit = -85f; - public float yMaxLimit = 85f; - - public float distanceMin = .5f; - public float distanceMax = 150f; - - private Camera _camera; - - private Rigidbody cameraRigidBody; - - private float x = 0.0f; - private float y = 0.0f; - private Vector3 prevMousePosition; - - Quaternion rotation; - - // Use this for initialization - void Start() - { - _camera = GetComponent(); - - Vector3 angles = transform.eulerAngles; - x = angles.y; - y = angles.x; - rotation = Quaternion.Euler(y, x, 0); - - prevMousePosition = Input.mousePosition; - - cameraRigidBody = GetComponent(); - - // Make the rigid body not change rotation - if (cameraRigidBody != null) - { - cameraRigidBody.freezeRotation = true; - } - } - - void LateUpdate() - { - var height = Display.main.renderingHeight; - var width = Display.main.renderingWidth; - - if (Input.GetMouseButton(0)) - { - x += Input.GetAxis("Mouse X") * xSpeed * 0.06f; - y -= Input.GetAxis("Mouse Y") * ySpeed * 0.06f; - - y = ClampAngle(y, yMinLimit, yMaxLimit); - - rotation = Quaternion.Euler(y, x, 0); - } - else if (Input.GetMouseButton(1)) - { - var prevMouseWorldPosition = ProjectScreenPointToTargetPlane(prevMousePosition); - var mouseWorldPosition = ProjectScreenPointToTargetPlane(Input.mousePosition); - - targetPosition += prevMouseWorldPosition - mouseWorldPosition; - } - - var mouseOverRenderArea = - Input.mousePosition.x >= 0 && - Input.mousePosition.x <= width && - Input.mousePosition.y >= 0 && - Input.mousePosition.y <= height; - - if (Input.GetMouseButton(0) || mouseOverRenderArea) - { - distance = Mathf.Clamp(distance * Mathf.Exp(-Input.GetAxis("Mouse ScrollWheel") * zoomSpeed), distanceMin, distanceMax); - } - - Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance); - Vector3 position = rotation * negDistance + targetPosition; - - transform.rotation = rotation; - transform.position = position; - - prevMousePosition = Input.mousePosition; - } - - private Vector3 ProjectScreenPointToTargetPlane(Vector3 screenPosition) - { - var ray = _camera.ScreenPointToRay(screenPosition); - var planeDistance = distance / Mathf.Cos(Mathf.Deg2Rad * Vector3.Angle(_camera.transform.forward, ray.direction)); - - return _camera.transform.position + (ray.direction * planeDistance); - } - - public static float ClampAngle(float angle, float min, float max) - { - if (angle < -360F) - angle += 360F; - if (angle > 360F) - angle -= 360F; - return Mathf.Clamp(angle, min, max); - } - } -} - diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs.meta deleted file mode 100644 index 3e756a7fb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/OrbitCameraController.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 70ff706d2c89cc247a850af95597fcbb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs deleted file mode 100644 index 103c74b70..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Collections; -using System.IO; -using System.Threading.Tasks; -using GLTF; -using GLTF.Schema; -using UnityEngine; -using UnityGLTF; -using UnityGLTF.Loader; - -namespace UnityGLTF -{ - public class RootMergeComponent : MonoBehaviour - { - public string asset0Path; - public string asset1Path; - public bool Multithreaded = true; - - public int MaximumLod = 300; - - // todo undo -#if !WINDOWS_UWP - private async Task Start() - { - var fullPath0 = Application.streamingAssetsPath + Path.DirectorySeparatorChar + asset0Path; - IDataLoader loader0 = new FileLoader(URIHelper.GetDirectoryName(fullPath0)); - - var fullPath1 = Application.streamingAssetsPath + Path.DirectorySeparatorChar + asset1Path; - IDataLoader loader1 = new FileLoader(URIHelper.GetDirectoryName(fullPath1)); - - var asset0Stream = await loader0.LoadStreamAsync(Path.GetFileName(asset0Path)); - GLTFRoot asset0Root; - GLTFParser.ParseJson(asset0Stream, out asset0Root); - - var asset1Stream = await loader1.LoadStreamAsync(Path.GetFileName(asset1Path)); - GLTFRoot asset1Root; - GLTFParser.ParseJson(asset1Stream, out asset1Root); - - string newPath = "../../" + URIHelper.GetDirectoryName(asset0Path); - - int previousBufferCount = asset1Root.Buffers.Count; - int previousImageCount = asset1Root.Images.Count; - int previousSceneCounter = asset1Root.Scenes.Count; - GLTFHelpers.MergeGLTF(asset1Root, asset0Root); - - for (int i = previousBufferCount; i < asset1Root.Buffers.Count; ++i) - { - GLTF.Schema.GLTFBuffer buffer = asset1Root.Buffers[i]; - if (!URIHelper.IsBase64Uri(buffer.Uri)) - { - buffer.Uri = newPath + buffer.Uri; - } - } - - for (int i = previousImageCount; i < asset1Root.Images.Count; ++i) - { - GLTFImage image = asset1Root.Images[i]; - if (!URIHelper.IsBase64Uri(image.Uri)) - { - image.Uri = newPath + image.Uri; - } - } - - foreach (NodeId node in asset1Root.Scenes[asset0Root.Scene.Id + previousSceneCounter].Nodes) - { - node.Value.Translation.X += 5f; - asset1Root.Scene.Value.Nodes.Add(node); - } - GLTFSceneImporter importer = new GLTFSceneImporter( - asset1Root, - null, - new ImportOptions - { - DataLoader = loader1, - AsyncCoroutineHelper = gameObject.AddComponent() - }); - - importer.MaximumLod = MaximumLod; - importer.IsMultithreaded = Multithreaded; - await importer.LoadSceneAsync(-1); - } -#endif - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs.meta deleted file mode 100644 index 0a641e05d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/RootMergeComponent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0fec5969022b49741878ab5b33c551bf -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs deleted file mode 100644 index 03dbb893d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs +++ /dev/null @@ -1,48 +0,0 @@ -using UnityEngine; -using UnityGLTF; - -public class SampleModelList : MonoBehaviour -{ - public static string LoaderFieldName => nameof(loader); - public static string PathRootFieldName => nameof(pathRoot); - public static string ManifestRelativePathFieldName => nameof(manifestRelativePath); - public static string ModelRelativePathFieldName => nameof(modelRelativePath); - public static string LoadThisFrameFieldName => nameof(loadThisFrame); - - [SerializeField] - private GLTFComponent loader = null; - - [SerializeField] - private string pathRoot = "http://localhost:8080/glTF-Sample-Models/2.0/"; - -// Disable "unused private field" because it is accessed by SampleModelListInspector using serialization. -#pragma warning disable 414 - [SerializeField] - private string manifestRelativePath = "model-index.json"; -#pragma warning restore 414 - - [SerializeField] - private string modelRelativePath = null; - - [SerializeField] - private bool loadThisFrame = false; - - private async void Update() - { - if (loadThisFrame) - { - loadThisFrame = false; - - var path = pathRoot + modelRelativePath; - - Debug.Log(path, this); - - if (loader.LastLoadedScene != null) - { - Destroy(loader.LastLoadedScene); - } - loader.GLTFUri = path; - await loader.Load(); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs.meta deleted file mode 100644 index ba6d16c48..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SampleModelList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: df99c459245b3cd40be06aca24a19170 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs deleted file mode 100644 index f778b4e70..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs +++ /dev/null @@ -1,238 +0,0 @@ -// MIT License - Copyright (c) 2016 Can Güney Aksakalli -using UnityEngine; -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Sockets; -using System.Threading; - -namespace UnityGLTF.Examples -{ - class SimpleHTTPServer - { - private readonly string[] _indexFiles = - { - "index.html", - "index.htm", - "default.html", - "default.htm" - }; - -#if !WINDOWS_UWP - private static IDictionary _mimeTypeMappings = - new Dictionary(StringComparer.InvariantCultureIgnoreCase) - { -#else - private static IDictionary _mimeTypeMappings = -new Dictionary(StringComparer.OrdinalIgnoreCase) { -#endif - - #region extension to MIME type list - - {".asf", "video/x-ms-asf"}, - {".asx", "video/x-ms-asf"}, - {".avi", "video/x-msvideo"}, - {".bin", "application/octet-stream"}, - {".cco", "application/x-cocoa"}, - {".crt", "application/x-x509-ca-cert"}, - {".css", "text/css"}, - {".deb", "application/octet-stream"}, - {".der", "application/x-x509-ca-cert"}, - {".dll", "application/octet-stream"}, - {".dmg", "application/octet-stream"}, - {".ear", "application/java-archive"}, - {".eot", "application/octet-stream"}, - {".exe", "application/octet-stream"}, - {".flv", "video/x-flv"}, - {".gif", "image/gif"}, - {".gltf", "model/gltf+json"}, - {".glb", "model/gltf-binary"}, - {".hqx", "application/mac-binhex40"}, - {".htc", "text/x-component"}, - {".htm", "text/html"}, - {".html", "text/html"}, - {".ico", "image/x-icon"}, - {".img", "application/octet-stream"}, - {".iso", "application/octet-stream"}, - {".jar", "application/java-archive"}, - {".jardiff", "application/x-java-archive-diff"}, - {".jng", "image/x-jng"}, - {".jnlp", "application/x-java-jnlp-file"}, - {".jpeg", "image/jpeg"}, - {".jpg", "image/jpeg"}, - {".js", "application/x-javascript"}, - {".json", "application/json"}, - {".mml", "text/mathml"}, - {".mng", "video/x-mng"}, - {".mov", "video/quicktime"}, - {".mp3", "audio/mpeg"}, - {".mpeg", "video/mpeg"}, - {".mpg", "video/mpeg"}, - {".msi", "application/octet-stream"}, - {".msm", "application/octet-stream"}, - {".msp", "application/octet-stream"}, - {".pdb", "application/x-pilot"}, - {".pdf", "application/pdf"}, - {".pem", "application/x-x509-ca-cert"}, - {".pl", "application/x-perl"}, - {".pm", "application/x-perl"}, - {".png", "image/png"}, - {".prc", "application/x-pilot"}, - {".ra", "audio/x-realaudio"}, - {".rar", "application/x-rar-compressed"}, - {".rpm", "application/x-redhat-package-manager"}, - {".rss", "text/xml"}, - {".run", "application/x-makeself"}, - {".sea", "application/x-sea"}, - {".shtml", "text/html"}, - {".sit", "application/x-stuffit"}, - {".swf", "application/x-shockwave-flash"}, - {".tcl", "application/x-tcl"}, - {".tk", "application/x-tcl"}, - {".txt", "text/plain"}, - {".war", "application/java-archive"}, - {".wbmp", "image/vnd.wap.wbmp"}, - {".wmv", "video/x-ms-wmv"}, - {".xml", "text/xml"}, - {".xpi", "application/x-xpinstall"}, - {".zip", "application/zip"}, - - #endregion - }; - private Thread _serverThread; - private string _rootDirectory; -#if !WINDOWS_UWP - private HttpListener _listener; -#endif - private int _port = default; - - public int Port - { - get { return _port; } - private set { } - } - - /// - /// Construct server with given port. - /// - /// Directory path to serve. - /// Port of the server. - public SimpleHTTPServer(string path, int port) - { - this.Initialize(path, port); - } - - /// - /// Construct server with suitable port. - /// - /// Directory path to serve. - public SimpleHTTPServer(string path) - { -#if !WINDOWS_UWP - //get an empty port - TcpListener l = new TcpListener(IPAddress.Loopback, 0); - l.Start(); - int port = ((IPEndPoint)l.LocalEndpoint).Port; - l.Stop(); - this.Initialize(path, port); -#endif - } - - /// - /// Stop server and dispose all functions. - /// - public void Stop() - { -#if !WINDOWS_UWP - _serverThread.Abort(); - _listener.Stop(); -#endif - } - - private void Listen() - { -#if !WINDOWS_UWP - _listener = new HttpListener(); - _listener.Prefixes.Add("http://*:" + _port.ToString() + "/"); - _listener.Start(); - while (true) - { - try - { - HttpListenerContext context = _listener.GetContext(); - Process(context); - } - catch (Exception) - { - } - } -#endif - } - -#if !WINDOWS_UWP - private void Process(HttpListenerContext context) - { - string filename = context.Request.Url.AbsolutePath; - Console.WriteLine(filename); - filename = filename.Substring(1); - - if (string.IsNullOrEmpty(filename)) - { - foreach (string indexFile in _indexFiles) - { - if (File.Exists(Path.Combine(_rootDirectory, indexFile))) - { - filename = indexFile; - break; - } - } - } - - filename = Path.Combine(_rootDirectory, filename); - if (File.Exists(filename)) - { - context.Response.StatusCode = (int)HttpStatusCode.OK; - - try - { - Stream input = File.OpenRead(filename); - - //Adding permanent http response headers - string mime; - context.Response.ContentType = _mimeTypeMappings.TryGetValue(Path.GetExtension(filename), out mime) - ? mime - : "application/octet-stream"; - context.Response.ContentLength64 = input.Length; - context.Response.AddHeader("Date", DateTime.Now.ToString("r")); - context.Response.AddHeader("Last-Modified", System.IO.File.GetLastWriteTime(filename).ToString("r")); - - input.CopyTo(context.Response.OutputStream); - input.Close(); - } - catch (Exception e) - { - Debug.LogException(e); - context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; - } - } - else - { - context.Response.StatusCode = (int)HttpStatusCode.NotFound; - } - - context.Response.Close(); - } -#endif - - private void Initialize(string path, int port) - { -#if !WINDOWS_UWP - this._rootDirectory = path; - this._port = port; - _serverThread = new Thread(this.Listen); - _serverThread.Start(); -#endif - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs.meta deleted file mode 100644 index 41f72c847..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/SimpleWebServer.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 019611993d8c07549bf0ca9c4154daef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs deleted file mode 100644 index dec398bfb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs +++ /dev/null @@ -1,60 +0,0 @@ -using UnityEngine; - -namespace UnityGLTF.Examples -{ - public class VisualizeMeshAttributes : MonoBehaviour - { - [SerializeField] private MeshFilter Mesh = default; - [SerializeField] private float NormalScale = 0.1f; - [SerializeField] private float TangentScale = 0.1f; - [SerializeField] private bool VisualizeTangents = false; - [SerializeField] private bool VisualizeNormals = false; - - private Vector3[] vertices; - private Vector3[] normals; - private Vector4[] tangents; - - void OnEnable() - { - if (Mesh != null && Mesh.mesh != null) - { - vertices = Mesh.mesh.vertices; - normals = Mesh.mesh.normals; - tangents = Mesh.mesh.tangents; - } - } - - // Update is called once per frame - void Update() - { - if (vertices != null) - { - int numVerts = vertices.Length; - for (int vertexIndex = 0; vertexIndex < numVerts; vertexIndex++) - { - var vertexTransformed = this.transform.TransformPoint(vertices[vertexIndex]); - - if (VisualizeNormals && normals != null) - { - var normalTransformed = this.transform.InverseTransformVector(normals[vertexIndex]); - Debug.DrawLine(vertexTransformed, vertexTransformed + normalTransformed * NormalScale * 0.5f, - Color.green); - Debug.DrawLine(vertexTransformed + normalTransformed * NormalScale * 0.5f, - vertexTransformed + normalTransformed * NormalScale * 1.0f, Color.blue); - } - - if (VisualizeTangents && tangents != null) - { - var tangentTransformed = this.transform.TransformVector( - tangents[vertexIndex].w * new Vector3(tangents[vertexIndex].x, tangents[vertexIndex].y, - tangents[vertexIndex].z)); - Debug.DrawLine(vertexTransformed, vertexTransformed + tangentTransformed * TangentScale * 0.5f, - Color.black); - Debug.DrawLine(vertexTransformed + tangentTransformed * TangentScale * 0.5f, - vertexTransformed + tangentTransformed * TangentScale * 1.0f, Color.white); - } - } - } - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs.meta deleted file mode 100644 index a759f35b5..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/VisualizeMeshAttributes.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 62a324520be0e6045bc06e4d89e950de -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs deleted file mode 100644 index 487d9729e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using UnityEngine; - -namespace UnityGLTF.Examples -{ - public class WebServerComponent : MonoBehaviour - { - private SimpleHTTPServer _server; - - void Start() - { - var appPath = Application.dataPath; - var wwwPath = appPath.Substring(0, appPath.LastIndexOf("Assets")) + "www"; - _server = new SimpleHTTPServer(wwwPath, 8080); - Debug.Log("Starting web server..."); - } - - private void OnDestroy() - { - _server.Stop(); - } - } -} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs.meta b/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs.meta deleted file mode 100644 index 021ef6e34..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/Scripts/WebServerComponent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 946dbe02f30bd734c901251fcc62a97a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 100 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity deleted file mode 100644 index 5fbbaf692..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity +++ /dev/null @@ -1,608 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &10002063 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_Name - value: GLTFRiggedSimple - objectReference: {fileID: 0} - - target: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/AnimatedCube/glTF/AnimatedCube.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/RiggedSimple/glTF/RiggedSimple.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1001 &34862859 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_Name - value: GLTFMonster - objectReference: {fileID: 0} - - target: {fileID: 1000013594771676, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/AnimatedCube/glTF/AnimatedCube.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/Monster/glTF/Monster.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &328853373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 328853379} - - component: {fileID: 328853378} - - component: {fileID: 328853377} - - component: {fileID: 328853376} - - component: {fileID: 328853375} - - component: {fileID: 328853374} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &328853374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &328853375 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!124 &328853376 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!92 &328853377 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 ---- !u!20 &328853378 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &328853379 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 328853373} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &979359784 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 979359786} - - component: {fileID: 979359785} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &979359785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &979359786 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 979359784} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1667736112 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1667736114} - - component: {fileID: 1667736113} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1667736113 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1667736114 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1667736112} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity.meta deleted file mode 100644 index 19a90c77c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 99b419859af06014699108078f89d05e -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity deleted file mode 100644 index 9ea304a86..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity +++ /dev/null @@ -1,460 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &312208302 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 312208308} - - component: {fileID: 312208307} - - component: {fileID: 312208306} - - component: {fileID: 312208305} - - component: {fileID: 312208304} - - component: {fileID: 312208303} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &312208303 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &312208304 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!124 &312208305 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!92 &312208306 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!20 &312208307 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &312208308 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &447203720 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 447203724} - - component: {fileID: 447203723} - - component: {fileID: 447203722} - - component: {fileID: 447203721} - m_Layer: 0 - m_Name: Floor (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &447203721 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &447203722 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &447203723 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &447203724 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1590283291 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1590283293} - - component: {fileID: 1590283292} - m_Layer: 0 - m_Name: Light (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1590283292 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1590283291} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1590283293 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1590283291} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1924572384 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1924572386} - - component: {fileID: 1924572385} - m_Layer: 0 - m_Name: GLTF - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1924572385 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1924572384} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9087a95f22bcee64ebc45f6deec08714, type: 3} - m_Name: - m_EditorClassIdentifier: - GLTFUri: BoomBox/gltf-Binary/BoomBox.glb - Multithreaded: 0 - UseStream: 1 - AppendStreamingAssets: 1 - PlayAnimationOnLoad: 1 - Factory: {fileID: 0} - loadOnStart: 1 - MaterialsOnly: 0 - RetryCount: 10 - RetryTimeout: 2 - MaximumLod: 300 - Timeout: 8 - Collider: 0 - shaderOverride: {fileID: 0} ---- !u!4 &1924572386 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1924572384} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity.meta deleted file mode 100644 index 2e2e74b75..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 784bcaf2fa75ed34bb4e98852b512da2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity deleted file mode 100644 index 1e0ef2cb8..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity +++ /dev/null @@ -1,460 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &312208302 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 312208308} - - component: {fileID: 312208307} - - component: {fileID: 312208306} - - component: {fileID: 312208305} - - component: {fileID: 312208304} - - component: {fileID: 312208303} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &312208303 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &312208304 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!124 &312208305 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!92 &312208306 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 ---- !u!20 &312208307 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &312208308 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 312208302} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &447203720 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 447203724} - - component: {fileID: 447203723} - - component: {fileID: 447203722} - - component: {fileID: 447203721} - m_Layer: 0 - m_Name: Floor (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &447203721 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &447203722 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &447203723 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &447203724 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 447203720} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1590283291 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1590283293} - - component: {fileID: 1590283292} - m_Layer: 0 - m_Name: Light (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1590283292 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1590283291} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1590283293 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1590283291} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1924572384 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1924572386} - - component: {fileID: 1924572385} - m_Layer: 0 - m_Name: GLTF - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1924572385 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1924572384} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9087a95f22bcee64ebc45f6deec08714, type: 3} - m_Name: - m_EditorClassIdentifier: - GLTFUri: BoomBox/glTF/BoomBox.gltf - Multithreaded: 0 - UseStream: 1 - AppendStreamingAssets: 1 - PlayAnimationOnLoad: 1 - Factory: {fileID: 0} - loadOnStart: 1 - MaterialsOnly: 0 - RetryCount: 10 - RetryTimeout: 2 - MaximumLod: 300 - Timeout: 8 - Collider: 0 - shaderOverride: {fileID: 0} ---- !u!4 &1924572386 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1924572384} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity.meta deleted file mode 100644 index a411445fb..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/StreamTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 5f234a304e97dc74390efd8821b1ca5c -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity deleted file mode 100644 index 319033b97..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity +++ /dev/null @@ -1,519 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &358204559 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 358204561} - - component: {fileID: 358204560} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &358204560 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358204559} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &358204561 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358204559} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &683563953 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 683563959} - - component: {fileID: 683563958} - - component: {fileID: 683563957} - - component: {fileID: 683563956} - - component: {fileID: 683563955} - - component: {fileID: 683563954} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &683563954 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &683563955 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!124 &683563956 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!92 &683563957 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 ---- !u!20 &683563958 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &683563959 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 683563953} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1656007881 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1656007883} - - component: {fileID: 1656007882} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1656007882 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656007881} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1656007883 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656007881} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1835019344 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/TestScene/TestScene.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFConstant - value: - objectReference: {fileID: 4800000, guid: ede6e66a96bc7164abd2a9217b5a8b4c, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFStandard - value: - objectReference: {fileID: 4800000, guid: a5732b1b5b2e36d47a3da75e187eba06, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/TestScene/TestScene.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity.meta deleted file mode 100644 index 1a610e03e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TestSceneScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a098a7e6ffdf4eb4696cb0674a36abf4 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity b/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity deleted file mode 100644 index c5556113e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity +++ /dev/null @@ -1,532 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &194823117 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 194823121} - - component: {fileID: 194823120} - - component: {fileID: 194823119} - - component: {fileID: 194823118} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &194823118 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194823117} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &194823119 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194823117} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &194823120 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194823117} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &194823121 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194823117} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &816130868 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 816130870} - - component: {fileID: 816130869} - m_Layer: 0 - m_Name: GLTF - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &816130869 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 816130868} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9087a95f22bcee64ebc45f6deec08714, type: 3} - m_Name: - m_EditorClassIdentifier: - GLTFUri: http://localhost:8080/EXT_texture_transform/pyramid.gltf - Multithreaded: 1 - UseStream: 0 - AppendStreamingAssets: 1 - PlayAnimationOnLoad: 1 - Factory: {fileID: 0} - loadOnStart: 1 - MaterialsOnly: 0 - RetryCount: 10 - RetryTimeout: 2 - MaximumLod: 300 - Timeout: 8 - Collider: 0 - shaderOverride: {fileID: 0} ---- !u!4 &816130870 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 816130868} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1191630373 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1191630375} - - component: {fileID: 1191630374} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1191630374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1191630373} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1191630375 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1191630373} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1347932295 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1347932297} - - component: {fileID: 1347932296} - m_Layer: 0 - m_Name: GLTF2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1347932296 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347932295} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9087a95f22bcee64ebc45f6deec08714, type: 3} - m_Name: - m_EditorClassIdentifier: - GLTFUri: http://localhost:8080/EXT_texture_transform/quad.gltf - Multithreaded: 1 - UseStream: 0 - AppendStreamingAssets: 1 - PlayAnimationOnLoad: 1 - Factory: {fileID: 0} - loadOnStart: 1 - MaterialsOnly: 0 - RetryCount: 10 - RetryTimeout: 2 - MaximumLod: 300 - Timeout: 8 - Collider: 0 - shaderOverride: {fileID: 0} ---- !u!4 &1347932297 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1347932295} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -4.6} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1844349481 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1844349486} - - component: {fileID: 1844349485} - - component: {fileID: 1844349484} - - component: {fileID: 1844349483} - - component: {fileID: 1844349482} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1844349482 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844349481} - m_Enabled: 1 ---- !u!124 &1844349483 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844349481} - m_Enabled: 1 ---- !u!92 &1844349484 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844349481} - m_Enabled: 1 ---- !u!20 &1844349485 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844349481} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1844349486 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1844349481} - m_LocalRotation: {x: 0.12426477, y: -0, z: -0, w: 0.99224913} - m_LocalPosition: {x: -0.38, y: 1.67, z: -7.33} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 14.277, y: 0, z: 0} ---- !u!1 &2123236622 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2123236624} - - component: {fileID: 2123236623} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &2123236623 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2123236622} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &2123236624 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2123236622} - m_LocalRotation: {x: 0.40821788, y: 0.23456976, z: -0.10938167, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50.000004, y: 30, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity.meta deleted file mode 100644 index cff16ac56..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TextureTransformTest.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 02a966d1c55ae1042b47fa54f4a7716a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity b/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity deleted file mode 100644 index dcb63209c..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity +++ /dev/null @@ -1,513 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &178362980 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 178362984} - - component: {fileID: 178362983} - - component: {fileID: 178362982} - - component: {fileID: 178362981} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &178362981 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178362980} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &178362982 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178362980} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &178362983 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178362980} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &178362984 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178362980} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &805193140 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 805193142} - - component: {fileID: 805193141} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &805193141 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 805193140} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &805193142 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 805193140} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &953641229 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 953641231} - - component: {fileID: 953641230} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &953641230 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 953641229} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &953641231 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 953641229} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1001 &1500858477 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/TestScene/TestScene.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFConstant - value: - objectReference: {fileID: 4800000, guid: ede6e66a96bc7164abd2a9217b5a8b4c, type: 3} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/TestScene/TestScene.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1778956315 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1778956320} - - component: {fileID: 1778956319} - - component: {fileID: 1778956318} - - component: {fileID: 1778956317} - - component: {fileID: 1778956316} - - component: {fileID: 1778956321} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1778956316 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_Enabled: 1 ---- !u!124 &1778956317 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_Enabled: 1 ---- !u!92 &1778956318 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_Enabled: 1 ---- !u!20 &1778956319 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1778956320 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1778956321 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1778956315} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity.meta deleted file mode 100644 index 35849d916..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TransformTest.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a6ef8add669c8c9459978f2bc1eba0e5 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity deleted file mode 100644 index 4f80e731a..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity +++ /dev/null @@ -1,509 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.45030326, g: 0.49799633, b: 0.5628027, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1001 &182776192 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalScale.z - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: http://localhost:8080/glTF-Sample-Models/2.0/TriangleWithoutIndices/glTF/TriangleWithoutIndices.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: http://localhost:8080/glTF-Sample-Models/2.0/TriangleWithoutIndices/glTF/TriangleWithoutIndices.gltf - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1044806827 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1742858401} - - component: {fileID: 1742858400} - m_Layer: 0 - m_Name: Server - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1290886834 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1290886836} - - component: {fileID: 1290886835} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1290886835 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290886834} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1290886836 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1290886834} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} ---- !u!1 &1513217566 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1513217572} - - component: {fileID: 1513217571} - - component: {fileID: 1513217570} - - component: {fileID: 1513217569} - - component: {fileID: 1513217568} - - component: {fileID: 1513217567} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1513217567 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -20 - yMaxLimit: 80 - distanceMin: 0.5 - distanceMax: 15 ---- !u!81 &1513217568 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!124 &1513217569 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!92 &1513217570 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 ---- !u!20 &1513217571 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1513217572 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1513217566} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1742858400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1044806827} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 946dbe02f30bd734c901251fcc62a97a, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1742858401 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1044806827} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1904599574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1904599578} - - component: {fileID: 1904599577} - - component: {fileID: 1904599576} - - component: {fileID: 1904599575} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &1904599575 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1904599576 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1904599577 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1904599578 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1904599574} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity.meta deleted file mode 100644 index abd39b2bd..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2f9c33a560f6fbc4e84417bce6daa904 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity b/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity deleted file mode 100644 index a1ce6a5ad..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity +++ /dev/null @@ -1,469 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &360634774 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 360634778} - - component: {fileID: 360634777} - - component: {fileID: 360634776} - - component: {fileID: 360634775} - m_Layer: 0 - m_Name: Floor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &360634775 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360634774} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &360634776 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360634774} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &360634777 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360634774} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &360634778 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 360634774} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.778, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &481748067 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4000011406631220, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Multithreaded - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: UseStream - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: Url - value: /gltf/BoomBox.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: GLTFUri - value: BoomBox/gltf/BoomBox.gltf - objectReference: {fileID: 0} - - target: {fileID: 114000010638385648, guid: 5255039e40b37b14fbcc0b72a30fc62e, - type: 3} - propertyPath: AppendStreamingAssets - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5255039e40b37b14fbcc0b72a30fc62e, type: 3} ---- !u!1 &1650054226 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 100002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1650054232} - - component: {fileID: 1650054231} - - component: {fileID: 1650054230} - - component: {fileID: 1650054229} - - component: {fileID: 1650054228} - - component: {fileID: 1650054227} - m_Layer: 0 - m_Name: Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1650054227 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70ff706d2c89cc247a850af95597fcbb, type: 3} - m_Name: - m_EditorClassIdentifier: - targetPosition: {x: 0, y: 0, z: 0} - distance: 5 - xSpeed: 120 - ySpeed: 120 - zoomSpeed: 0.8 - yMinLimit: -85 - yMaxLimit: 85 - distanceMin: 0.5 - distanceMax: 150 ---- !u!81 &1650054228 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 8100000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_Enabled: 1 ---- !u!124 &1650054229 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 12400000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_Enabled: 1 ---- !u!92 &1650054230 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 9200000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_Enabled: 1 ---- !u!20 &1650054231 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2000000, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.62552905, g: 0.684092, b: 0.7761194, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.02 - far clip plane: 400 - field of view: 60 - orthographic: 0 - orthographic size: 100 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1650054232 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 400002, guid: 49a0e923d39ec3c4c8bb97699e2f2903, - type: 2} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1650054226} - m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.000000063325004} - m_LocalPosition: {x: 0, y: 0, z: 2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1690206989 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1690206991} - - component: {fileID: 1690206990} - m_Layer: 0 - m_Name: Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1690206990 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1690206989} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1.3 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1690206991 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1690206989} - m_LocalRotation: {x: 0.048932634, y: 0.9485057, z: -0.18261904, w: 0.2541514} - m_LocalPosition: {x: 3.56, y: 5.64, z: 6.41} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 21.796001, y: 150, z: 0} diff --git a/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity.meta b/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity.meta deleted file mode 100644 index 3ca6502c6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Samples/UWPTestScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9754353895356ff4ea70dce4d6df4d75 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFBenchmark.cs b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFBenchmark.cs deleted file mode 100644 index b644e407e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFBenchmark.cs +++ /dev/null @@ -1,80 +0,0 @@ -#if UNITY_EDITOR -using System; -using UnityEngine; -using UnityEditor; -using System.Collections; -using UnityEngine.Networking; -using System.Text; -using System.IO; -using GLTF; -using GLTF.Schema; - -public class GLTFBenchmark : MonoBehaviour -{ - public string[] GLTFUrls = new string[] - { - "http://localhost:8080/BoomBox/glTF/BoomBox.gltf", - "http://localhost:8080/Lantern/glTF/Lantern.gltf", - "http://localhost:8080/Corset/glTF/Corset.gltf" - }; - public int NumberOfIterations = 5; - public bool SaveCSV = true; - - IEnumerator Start () - { - var timer = new System.Diagnostics.Stopwatch(); - - var csv = new StringBuilder(); - - csv.AppendLine("Name, Time (ms)"); - - Debug.Log("Start Parsing Benchmark."); - - foreach (var gltfUrl in GLTFUrls) - { - var www = UnityWebRequest.Get(gltfUrl); - -#if UNITY_2017_2_OR_NEWER - yield return www.SendWebRequest(); -#else - yield return www.Send(); -#endif - - Debug.LogFormat("Benchmarking: {0}", gltfUrl); - long totalTime = 0; - for (var i = 0; i < NumberOfIterations; i++) - { - timer.Start(); - GLTFRoot gltfRoot = null; - GLTFParser.ParseJson(new MemoryStream(www.downloadHandler.data), out gltfRoot); - timer.Stop(); - - Debug.LogFormat("Iteration {0} took: {1}ms", i, timer.ElapsedMilliseconds); - totalTime += timer.ElapsedMilliseconds; - } - - var avgTime = (float)totalTime / NumberOfIterations; - Debug.LogFormat("Average parse time {0}ms", avgTime); - csv.AppendFormat("{0}, {1}\n", gltfUrl, avgTime); - } - - - - Debug.Log("End Parsing Benchmark."); - - Debug.Log("Done."); - - if (SaveCSV) - { - var fileName = string.Format("glTFBench_{0}iter", NumberOfIterations); - var path = EditorUtility.SaveFilePanel("Save GLTF Benchmark .csv", "", fileName, "csv"); - - if (path != null) - { - File.WriteAllText(path, csv.ToString()); - Debug.LogFormat("Benchmark written to: {0}", path); - } - } - } -} -#endif diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFRootTests.cs b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFRootTests.cs deleted file mode 100644 index 2028b1222..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFRootTests.cs +++ /dev/null @@ -1,24 +0,0 @@ -using NUnit.Framework; - - -// todo blgross port to base layer -#if false -public class GLTFRootTest { - - [Test] - public void TestMinimumGLTF() - { - var testStr = @" - { - ""asset"": { - ""version"": ""2.0"" - } - } - "; - - var testRoot = GLTFParser.ParseString(testStr); - - Assert.AreEqual(testRoot.Asset.Version, "2.0"); - } -} -#endif \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.prefab b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.prefab deleted file mode 100644 index 1ea663f6d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GLTFTestComponent.prefab +++ /dev/null @@ -1,47 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1000013333174952 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4000010219582968} - - component: {fileID: 114000011737172762} - m_Layer: 0 - m_Name: GLTFTestComponent - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000010219582968 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013333174952} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &114000011737172762 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013333174952} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41bd8a5daef51444a8f243c2b8ba42f8, type: 3} - m_Name: - m_EditorClassIdentifier: - Url: - Multithreaded: 1 diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader deleted file mode 100644 index 8d66560f2..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader +++ /dev/null @@ -1,73 +0,0 @@ -// Simple shader for applying a gradient to a Skybox material, allowing the same shading -// logic as a Gradient environmental lighting, but with the Intensity not available to Gradient lighting. - -// Based loosely on the built-in hidden GradientSky shader, but with the old style for naming conventions and none of the new render-pipeline dependencies (some simplifications -// due to the limited use case). -// https://github.com/Unity-Technologies/ScriptableRenderPipeline/blob/master/com.unity.render-pipelines.high-definition/Runtime/Sky/GradientSky/GradientSky.shader -Shader "Skybox/Gradient" -{ - Properties - { - // Default values based on RenderSettings default values for m_AmbientSkyColor, m_AmbientEquatorColor, and m_AmbientGroundColor - [HDR]_SkyColor("Sky Color", Color) = (0.212, 0.227, 0.259, 1) - [HDR]_EquatorColor("Equator Color", Color) = (0.114, 0.125, 0.133, 1) - [HDR]_GroundColor("Ground Color", Color) = (0.047, 0.043, 0.035, 1) - _Intensity("Intensity", Float) = 1.0 - } - - SubShader - { - Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" } - Cull Off - ZWrite Off - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma target 2.0 - - #include "UnityCG.cginc" - - half4 _SkyColor, _EquatorColor ,_GroundColor; - half _Intensity; - - struct appdata_t - { - float4 vertex : POSITION; - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct v2f - { - float4 vertex : SV_POSITION; - float3 texcoord : TEXCOORD0; - UNITY_VERTEX_OUTPUT_STEREO - }; - - v2f vert(appdata_t v) - { - v2f o; - UNITY_SETUP_INSTANCE_ID(v); - UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); - o.vertex = UnityObjectToClipPos(v.vertex); - o.texcoord = v.vertex.xyz; - return o; - } - - float4 frag(v2f i) : SV_Target - { - float verticalGradient = i.texcoord.y; - half topLerpFactor = saturate(verticalGradient); - half bottomLerpFactor = saturate(-verticalGradient); - half3 color = lerp(_EquatorColor, _GroundColor, bottomLerpFactor); - color = lerp(color, _SkyColor, topLerpFactor) * _Intensity; - return float4(color, 1); - } - ENDCG - } - } - - Fallback Off -} diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader.meta deleted file mode 100644 index adbfa2e40..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/GradientSkybox.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: c01e68fc7a67d7c47a316ee81530ac69 -ShaderImporter: - externalObjects: {} - defaultTextures: [] - nonModifiableTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat deleted file mode 100644 index 103947a00..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat +++ /dev/null @@ -1,81 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SkyboxLightingMaterial - m_Shader: {fileID: 4800000, guid: c01e68fc7a67d7c47a316ee81530ac69, type: 3} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Intensity: 5 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _EquatorColor: {r: 0.6901961, g: 0.6901961, b: 0.6901961, a: 1} - - _GroundColor: {r: 0, g: 0, b: 0, a: 1} - - _SkyColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat.meta deleted file mode 100644 index 0ba99eac1..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxLightingMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b4101f3a635a9cd4187c92cf274d68ce -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat deleted file mode 100644 index e3757f1d6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat +++ /dev/null @@ -1,112 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: SkyboxMaterial - m_Shader: {fileID: 104, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _MAPPING_LATITUDE_LONGITUDE_LAYOUT - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BackTex: - m_Texture: {fileID: 2800000, guid: 4cffab752c188a344a88f15ebcaec872, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DownTex: - m_Texture: {fileID: 2800000, guid: 8e1ef1553bba10c4c909a708dc1dc398, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _FrontTex: - m_Texture: {fileID: 2800000, guid: 4e58b0cc172f4e94e97cdf7c3c1838ce, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _LeftTex: - m_Texture: {fileID: 2800000, guid: 478af5dcbc0a98b4bb59c0ddb651223e, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _RightTex: - m_Texture: {fileID: 2800000, guid: 334c3b266375d324498865bfb70ae415, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _Tex: - m_Texture: {fileID: 8900000, guid: 89f974ac697f8c348897a2cc7e13a754, type: 2} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _UpTex: - m_Texture: {fileID: 2800000, guid: 58bba66ad2d01dd4ba60c90d9d9e01e9, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _Exposure: 1 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _ImageType: 0 - - _Layout: 0 - - _Mapping: 1 - - _Metallic: 0 - - _MirrorOnBack: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Rotation: 0 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _Tint: {r: 0.5803922, g: 0.5803922, b: 0.55, a: 1} diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat.meta deleted file mode 100644 index 14c95cc64..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/SkyboxMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ab1d3ce216922394fa9b7b0bcf303df6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png deleted file mode 100644 index 0d049a6f2..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png.meta deleted file mode 100644 index 82243dd16..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Back.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 4cffab752c188a344a88f15ebcaec872 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png deleted file mode 100644 index 33ebaf05b..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png.meta deleted file mode 100644 index 22f8fbe7e..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Down.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 8e1ef1553bba10c4c909a708dc1dc398 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png deleted file mode 100644 index e8a655dab..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png.meta deleted file mode 100644 index 917115aba..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Front.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 4e58b0cc172f4e94e97cdf7c3c1838ce -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png deleted file mode 100644 index 450b0c1a5..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png.meta deleted file mode 100644 index 4fb713cd6..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Left.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 478af5dcbc0a98b4bb59c0ddb651223e -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png deleted file mode 100644 index 78b418530..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png.meta deleted file mode 100644 index 8d0ff6c5f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Right.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 334c3b266375d324498865bfb70ae415 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png deleted file mode 100644 index 011d626a5..000000000 Binary files a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png and /dev/null differ diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png.meta b/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png.meta deleted file mode 100644 index 2fd72de1d..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/Runtime/Skybox_Up.png.meta +++ /dev/null @@ -1,110 +0,0 @@ -fileFormatVersion: 2 -guid: 58bba66ad2d01dd4ba60c90d9d9e01e9 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Standalone - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - serializedVersion: 2 - buildTarget: Windows Store Apps - maxTextureSize: 128 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/Assets/UnityGLTF/Tests/UnityGLTFTests.asmdef b/UnityGLTF/Assets/UnityGLTF/Tests/UnityGLTFTests.asmdef deleted file mode 100644 index e820e4857..000000000 --- a/UnityGLTF/Assets/UnityGLTF/Tests/UnityGLTFTests.asmdef +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "UnityGLTFTests", - "optionalUnityReferences": [ - "TestAssemblies" - ], - "references": [ - "UnityGLTFScripts", - "UnityGLTFEditor" - ], - "includePlatforms": [], - "excludePlatforms": [] -} \ No newline at end of file diff --git a/UnityGLTF/Assets/UnityGLTF/package.json b/UnityGLTF/Assets/UnityGLTF/package.json deleted file mode 100644 index 4ce07282f..000000000 --- a/UnityGLTF/Assets/UnityGLTF/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "org.khronos.unitygltf", - "displayName": "Khronos GLTF Loader", - "version": "1.0.0", - "unity": "2018.3", - "description": "Unity3D library for importing and exporting GLTF 2.0 assets. https://github.com/KhronosGroup/UnityGLTF", - "keywords": [ - "gltf", - "khronos", - "runtime", - "loader" - ], - "author": "Khronos Group", - "samples": [ - { - "displayName": "Sample Scenes", - "description": "Various scenes showing GLTF functionality.", - "path": "Samples~" - } - ], - "dependencies": {} -} diff --git a/UnityGLTF/Assets/csc.rsp b/UnityGLTF/Assets/csc.rsp deleted file mode 100644 index 1993f48c1..000000000 --- a/UnityGLTF/Assets/csc.rsp +++ /dev/null @@ -1 +0,0 @@ --r:System.Net.Http.dll \ No newline at end of file diff --git a/UnityGLTF/Assets/csc.rsp.meta b/UnityGLTF/Assets/csc.rsp.meta deleted file mode 100644 index 417c0a805..000000000 --- a/UnityGLTF/Assets/csc.rsp.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2b9bbe579380e1b4d9cfb38838d4f9ab -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityGLTF/ProjectSettings/AudioManager.asset b/UnityGLTF/ProjectSettings/AudioManager.asset deleted file mode 100644 index 27287fec5..000000000 --- a/UnityGLTF/ProjectSettings/AudioManager.asset +++ /dev/null @@ -1,19 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 1024 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 - m_RequestedDSPBufferSize: 0 diff --git a/UnityGLTF/ProjectSettings/ClusterInputManager.asset b/UnityGLTF/ProjectSettings/ClusterInputManager.asset deleted file mode 100644 index e7886b266..000000000 --- a/UnityGLTF/ProjectSettings/ClusterInputManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] diff --git a/UnityGLTF/ProjectSettings/DynamicsManager.asset b/UnityGLTF/ProjectSettings/DynamicsManager.asset deleted file mode 100644 index f7ec7c9c0..000000000 --- a/UnityGLTF/ProjectSettings/DynamicsManager.asset +++ /dev/null @@ -1,33 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 10 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_ClothInterCollisionDistance: 0 - m_ClothInterCollisionStiffness: 0 - m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 1 - m_ReuseCollisionCallbacks: 0 - m_ClothInterCollisionSettingsToggle: 0 - m_ContactPairsMode: 0 - m_BroadphaseType: 0 - m_WorldBounds: - m_Center: {x: 0, y: 0, z: 0} - m_Extent: {x: 250, y: 250, z: 250} - m_WorldSubdivisions: 8 - m_FrictionType: 0 - m_EnableEnhancedDeterminism: 0 - m_EnableUnifiedHeightmaps: 1 diff --git a/UnityGLTF/ProjectSettings/EditorBuildSettings.asset b/UnityGLTF/ProjectSettings/EditorBuildSettings.asset deleted file mode 100644 index a757f30c4..000000000 --- a/UnityGLTF/ProjectSettings/EditorBuildSettings.asset +++ /dev/null @@ -1,86 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1045 &1 -EditorBuildSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Scenes: - - enabled: 1 - path: Assets/UnityGLTF/Samples/AnimatedCube.unity - guid: fb84f951a6d047a42954ae48b885521d - - enabled: 1 - path: Assets/UnityGLTF/Samples/BinaryBuggyTestScene.unity - guid: 1ad808956b95f394da8643e3a2b516a0 - - enabled: 1 - path: Assets/UnityGLTF/Samples/StreamTestScene.unity - guid: 5f234a304e97dc74390efd8821b1ca5c - - enabled: 1 - path: Assets/UnityGLTF/Samples/LanternSpecGlossTestScene.unity - guid: 3d986f306d83ee14d96b5fb1c7e86169 - - enabled: 1 - path: Assets/UnityGLTF/Samples/LanternTestScene.unity - guid: 5a247e41f19cb4f40b0fe8392fd4901f - - enabled: 1 - path: Assets/UnityGLTF/Samples/TextureTransformTest.unity - guid: 02a966d1c55ae1042b47fa54f4a7716a - - enabled: 1 - path: Assets/UnityGLTF/Samples/Benchmark.unity - guid: e67b7ff194f3d0c4bbd1c24f3fcf7d09 - - enabled: 1 - path: Assets/UnityGLTF/Samples/BinaryCorsetTestScene.unity - guid: ba9f47b2af06bd44c8fb7877bae29e16 - - enabled: 1 - path: Assets/UnityGLTF/Samples/StreamBinaryTestScene.unity - guid: 784bcaf2fa75ed34bb4e98852b512da2 - - enabled: 1 - path: Assets/UnityGLTF/Samples/BuggyTestScene.unity - guid: 9765b46364f55db4da07dbf1c868e131 - - enabled: 1 - path: Assets/UnityGLTF/Samples/SkinnedAnimationTestScene.unity - guid: 99b419859af06014699108078f89d05e - - enabled: 1 - path: Assets/UnityGLTF/Samples/TriangleWithoutIndicesTestScene.unity - guid: 2f9c33a560f6fbc4e84417bce6daa904 - - enabled: 1 - path: Assets/UnityGLTF/Runtime/Shaders/ShaderRetention/ShaderRetention.unity - guid: da9cfbe5162455445a223e080858cb2c - - enabled: 1 - path: Assets/UnityGLTF/Samples/BinaryLanternTestScene.unity - guid: 6061c6963fb64694891664b8fc1674f9 - - enabled: 1 - path: Assets/UnityGLTF/Samples/TestSceneScene.unity - guid: a098a7e6ffdf4eb4696cb0674a36abf4 - - enabled: 1 - path: Assets/UnityGLTF/Samples/ConstantTestScene.unity - guid: a5d0e8576c725bc42928c6b760ab9401 - - enabled: 1 - path: Assets/UnityGLTF/Samples/CorsetTestScene.unity - guid: b6ecc977ff0c9bc4d9c08e000d5ad2bc - - enabled: 1 - path: Assets/UnityGLTF/Samples/ExportTestScene.unity - guid: 1492280843c14944f8919eda7fa0fb58 - - enabled: 1 - path: Assets/UnityGLTF/Samples/UWPTestScene.unity - guid: 9754353895356ff4ea70dce4d6df4d75 - - enabled: 1 - path: Assets/UnityGLTF/Samples/SciFiHelmetTestScene.unity - guid: d57d27a96f86ef04a925a0d66ff55d5e - - enabled: 1 - path: Assets/UnityGLTF/Samples/BoomBoxTestScene.unity - guid: f14687e9e9c77e541a4594944cace7b3 - - enabled: 1 - path: Assets/UnityGLTF/Samples/AssetMergeTestScene.unity - guid: bd1231aa6ce5b384c81e0045766c6db2 - - enabled: 1 - path: Assets/UnityGLTF/Samples/TransformTest.unity - guid: a6ef8add669c8c9459978f2bc1eba0e5 - - enabled: 1 - path: Assets/UnityGLTF/Samples/BinaryBoomBoxTestScene.unity - guid: 7bdca45e8c776c540bb1483ed5848eec - - enabled: 1 - path: Assets/UnityGLTF/Samples/MultiSceneTest.unity - guid: ab0db09fd0021d64fb65b2f685d534ae - - enabled: 1 - path: Assets/UnityGLTF/Samples/FarmlandDioramaTestScene.unity - guid: df36c2dfaf0bc35488e81c2faf022bd5 - m_configObjects: {} diff --git a/UnityGLTF/ProjectSettings/EditorSettings.asset b/UnityGLTF/ProjectSettings/EditorSettings.asset deleted file mode 100644 index 5280d90cc..000000000 --- a/UnityGLTF/ProjectSettings/EditorSettings.asset +++ /dev/null @@ -1,23 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 7 - m_ExternalVersionControlSupport: Visible Meta Files - m_SerializationMode: 2 - m_LineEndingsForNewScripts: 1 - m_DefaultBehaviorMode: 0 - m_PrefabRegularEnvironment: {fileID: 0} - m_PrefabUIEnvironment: {fileID: 0} - m_SpritePackerMode: 2 - m_SpritePackerPaddingPower: 1 - m_EtcTextureCompressorBehavior: 0 - m_EtcTextureFastCompressor: 2 - m_EtcTextureNormalCompressor: 2 - m_EtcTextureBestCompressor: 5 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd - m_ProjectGenerationRootNamespace: - m_CollabEditorSettings: - inProgressEnabled: 1 - m_EnableTextureStreamingInPlayMode: 1 diff --git a/UnityGLTF/ProjectSettings/GraphicsSettings.asset b/UnityGLTF/ProjectSettings/GraphicsSettings.asset deleted file mode 100644 index 31624fb7f..000000000 --- a/UnityGLTF/ProjectSettings/GraphicsSettings.asset +++ /dev/null @@ -1,65 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!30 &1 -GraphicsSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_Deferred: - m_Mode: 1 - m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} - m_DeferredReflections: - m_Mode: 1 - m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} - m_ScreenSpaceShadows: - m_Mode: 1 - m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} - m_LegacyDeferred: - m_Mode: 1 - m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} - m_DepthNormals: - m_Mode: 1 - m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} - m_MotionVectors: - m_Mode: 1 - m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} - m_LightHalo: - m_Mode: 1 - m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} - m_LensFlare: - m_Mode: 1 - m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} - m_AlwaysIncludedShaders: - - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} - m_PreloadedShaders: [] - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} - m_CustomRenderPipeline: {fileID: 0} - m_TransparencySortMode: 0 - m_TransparencySortAxis: {x: 0, y: 0, z: 1} - m_DefaultRenderingPath: 1 - m_DefaultMobileRenderingPath: 1 - m_TierSettings: [] - m_LightmapStripping: 0 - m_FogStripping: 0 - m_InstancingStripping: 0 - m_LightmapKeepPlain: 1 - m_LightmapKeepDirCombined: 1 - m_LightmapKeepDynamicPlain: 1 - m_LightmapKeepDynamicDirCombined: 1 - m_LightmapKeepShadowMask: 1 - m_LightmapKeepSubtractive: 1 - m_FogKeepLinear: 1 - m_FogKeepExp: 1 - m_FogKeepExp2: 1 - m_AlbedoSwatchInfos: [] - m_LightsUseLinearIntensity: 0 - m_LightsUseColorTemperature: 0 - m_LogWhenShaderIsCompiled: 0 diff --git a/UnityGLTF/ProjectSettings/InputManager.asset b/UnityGLTF/ProjectSettings/InputManager.asset deleted file mode 100644 index 17c8f538e..000000000 --- a/UnityGLTF/ProjectSettings/InputManager.asset +++ /dev/null @@ -1,295 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 diff --git a/UnityGLTF/ProjectSettings/NavMeshAreas.asset b/UnityGLTF/ProjectSettings/NavMeshAreas.asset deleted file mode 100644 index 3b0b7c3d1..000000000 --- a/UnityGLTF/ProjectSettings/NavMeshAreas.asset +++ /dev/null @@ -1,91 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_SettingNames: - - Humanoid diff --git a/UnityGLTF/ProjectSettings/NetworkManager.asset b/UnityGLTF/ProjectSettings/NetworkManager.asset deleted file mode 100644 index 5dc6a831d..000000000 --- a/UnityGLTF/ProjectSettings/NetworkManager.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!149 &1 -NetworkManager: - m_ObjectHideFlags: 0 - m_DebugLevel: 0 - m_Sendrate: 15 - m_AssetToPrefab: {} diff --git a/UnityGLTF/ProjectSettings/Physics2DSettings.asset b/UnityGLTF/ProjectSettings/Physics2DSettings.asset deleted file mode 100644 index 417ef4573..000000000 --- a/UnityGLTF/ProjectSettings/Physics2DSettings.asset +++ /dev/null @@ -1,56 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_JobOptions: - serializedVersion: 2 - useMultithreading: 0 - useConsistencySorting: 0 - m_InterpolationPosesPerJob: 100 - m_NewContactsPerJob: 30 - m_CollideContactsPerJob: 100 - m_ClearFlagsPerJob: 200 - m_ClearBodyForcesPerJob: 200 - m_SyncDiscreteFixturesPerJob: 50 - m_SyncContinuousFixturesPerJob: 50 - m_FindNearestContactsPerJob: 100 - m_UpdateTriggerContactsPerJob: 100 - m_IslandSolverCostThreshold: 100 - m_IslandSolverBodyCostScale: 1 - m_IslandSolverContactCostScale: 10 - m_IslandSolverJointCostScale: 10 - m_IslandSolverBodiesPerJob: 50 - m_IslandSolverContactsPerJob: 50 - m_AutoSimulation: 1 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_CallbacksOnDisable: 1 - m_ReuseCollisionCallbacks: 0 - m_AutoSyncTransforms: 1 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/UnityGLTF/ProjectSettings/PresetManager.asset b/UnityGLTF/ProjectSettings/PresetManager.asset deleted file mode 100644 index 636a595b3..000000000 --- a/UnityGLTF/ProjectSettings/PresetManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1386491679 &1 -PresetManager: - m_ObjectHideFlags: 0 - m_DefaultList: [] diff --git a/UnityGLTF/ProjectSettings/ProjectSettings.asset b/UnityGLTF/ProjectSettings/ProjectSettings.asset deleted file mode 100644 index 1af717532..000000000 --- a/UnityGLTF/ProjectSettings/ProjectSettings.asset +++ /dev/null @@ -1,715 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!129 &1 -PlayerSettings: - m_ObjectHideFlags: 0 - serializedVersion: 18 - productGUID: 3f4dc7395d1f2ff42b654788bc1f374e - AndroidProfiler: 0 - AndroidFilterTouchesWhenObscured: 0 - AndroidEnableSustainedPerformanceMode: 0 - defaultScreenOrientation: 4 - targetDevice: 2 - useOnDemandResources: 0 - accelerometerFrequency: 60 - companyName: DefaultCompany - productName: GLTFLoader - defaultCursor: {fileID: 0} - cursorHotspot: {x: 0, y: 0} - m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 1 - m_ShowUnitySplashLogo: 1 - m_SplashScreenOverlayOpacity: 1 - m_SplashScreenAnimation: 1 - m_SplashScreenLogoStyle: 1 - m_SplashScreenDrawMode: 0 - m_SplashScreenBackgroundAnimationZoom: 1 - m_SplashScreenLogoAnimationZoom: 1 - m_SplashScreenBackgroundLandscapeAspect: 1 - m_SplashScreenBackgroundPortraitAspect: 1 - m_SplashScreenBackgroundLandscapeUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenBackgroundPortraitUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenLogos: [] - m_VirtualRealitySplashScreen: {fileID: 0} - m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 - defaultScreenWidthWeb: 960 - defaultScreenHeightWeb: 600 - m_StereoRenderingPath: 0 - m_ActiveColorSpace: 0 - m_MTRendering: 1 - m_StackTraceTypes: 010000000100000001000000010000000100000001000000 - iosShowActivityIndicatorOnLoading: -1 - androidShowActivityIndicatorOnLoading: -1 - displayResolutionDialog: 1 - iosUseCustomAppBackgroundBehavior: 0 - iosAllowHTTPDownload: 1 - allowedAutorotateToPortrait: 1 - allowedAutorotateToPortraitUpsideDown: 1 - allowedAutorotateToLandscapeRight: 1 - allowedAutorotateToLandscapeLeft: 1 - useOSAutorotation: 1 - use32BitDisplayBuffer: 1 - preserveFramebufferAlpha: 0 - disableDepthAndStencilBuffers: 0 - androidStartInFullscreen: 1 - androidRenderOutsideSafeArea: 0 - androidBlitType: 0 - defaultIsNativeResolution: 1 - macRetinaSupport: 1 - runInBackground: 1 - captureSingleScreen: 0 - muteOtherAudioSources: 0 - Prepare IOS For Recording: 0 - Force IOS Speakers When Recording: 0 - deferSystemGesturesMode: 0 - hideHomeButton: 0 - submitAnalytics: 1 - usePlayerLog: 1 - bakeCollisionMeshes: 0 - forceSingleInstance: 0 - resizableWindow: 0 - useMacAppStoreValidation: 0 - macAppStoreCategory: public.app-category.games - gpuSkinning: 0 - graphicsJobs: 0 - xboxPIXTextureCapture: 0 - xboxEnableAvatar: 0 - xboxEnableKinect: 0 - xboxEnableKinectAutoTracking: 0 - xboxEnableFitness: 0 - visibleInBackground: 0 - allowFullscreenSwitch: 1 - graphicsJobMode: 0 - fullscreenMode: 1 - xboxSpeechDB: 0 - xboxEnableHeadOrientation: 0 - xboxEnableGuest: 0 - xboxEnablePIXSampling: 0 - metalFramebufferOnly: 0 - xboxOneResolution: 0 - xboxOneSResolution: 0 - xboxOneXResolution: 3 - xboxOneMonoLoggingLevel: 0 - xboxOneLoggingLevel: 1 - xboxOneDisableEsram: 0 - xboxOnePresentImmediateThreshold: 0 - switchQueueCommandMemory: 1048576 - switchQueueControlMemory: 16384 - switchQueueComputeMemory: 262144 - switchNVNShaderPoolsGranularity: 33554432 - switchNVNDefaultPoolsGranularity: 16777216 - switchNVNOtherPoolsGranularity: 16777216 - vulkanEnableSetSRGBWrite: 0 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 - bundleVersion: 1.0 - preloadedAssets: [] - metroInputSource: 0 - wsaTransparentSwapchain: 0 - m_HolographicPauseOnTrackingLoss: 1 - xboxOneDisableKinectGpuReservation: 0 - xboxOneEnable7thCore: 0 - isWsaHolographicRemotingEnabled: 0 - vrSettings: - cardboard: - depthFormat: 0 - enableTransitionView: 0 - daydream: - depthFormat: 0 - useSustainedPerformanceMode: 0 - enableVideoLayer: 0 - useProtectedVideoMemory: 0 - minimumSupportedHeadTracking: 0 - maximumSupportedHeadTracking: 1 - hololens: - depthFormat: 1 - depthBufferSharingEnabled: 0 - oculus: - sharedDepthBuffer: 0 - dashSupport: 0 - lowOverheadMode: 0 - protectedContext: 0 - v2Signing: 0 - enable360StereoCapture: 0 - protectGraphicsMemory: 0 - enableFrameTimingStats: 0 - useHDRDisplay: 0 - m_ColorGamuts: 00000000 - targetPixelDensity: 30 - resolutionScalingMode: 0 - androidSupportedAspectRatio: 1 - androidMaxAspectRatio: 2.1 - applicationIdentifier: - Android: com.Company.ProductName - Standalone: unity.DefaultCompany.GLTFLoader - Tizen: com.Company.ProductName - iOS: com.Company.ProductName - tvOS: com.Company.ProductName - buildNumber: - iOS: 0 - AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 16 - AndroidTargetSdkVersion: 0 - AndroidPreferredInstallLocation: 1 - aotOptions: - stripEngineCode: 1 - iPhoneStrippingLevel: 0 - iPhoneScriptCallOptimization: 0 - ForceInternetPermission: 0 - ForceSDCardPermission: 0 - CreateWallpaper: 0 - APKExpansionFiles: 0 - keepLoadedShadersAlive: 0 - StripUnusedMeshComponents: 0 - VertexChannelCompressionMask: 4054 - iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 9.0 - tvOSSdkVersion: 0 - tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 9.0 - uIPrerenderedIcon: 0 - uIRequiresPersistentWiFi: 0 - uIRequiresFullScreen: 1 - uIStatusBarHidden: 1 - uIExitOnSuspend: 0 - uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPhone58inPortraitSplashScreen: {fileID: 0} - iPhone58inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} - appleTVSplashScreen: {fileID: 0} - appleTVSplashScreen2x: {fileID: 0} - tvOSSmallIconLayers: [] - tvOSSmallIconLayers2x: [] - tvOSLargeIconLayers: [] - tvOSLargeIconLayers2x: [] - tvOSTopShelfImageLayers: [] - tvOSTopShelfImageLayers2x: [] - tvOSTopShelfImageWideLayers: [] - tvOSTopShelfImageWideLayers2x: [] - iOSLaunchScreenType: 0 - iOSLaunchScreenPortrait: {fileID: 0} - iOSLaunchScreenLandscape: {fileID: 0} - iOSLaunchScreenBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreenFillPct: 100 - iOSLaunchScreenSize: 100 - iOSLaunchScreenCustomXibPath: - iOSLaunchScreeniPadType: 0 - iOSLaunchScreeniPadImage: {fileID: 0} - iOSLaunchScreeniPadBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreeniPadFillPct: 100 - iOSLaunchScreeniPadSize: 100 - iOSLaunchScreeniPadCustomXibPath: - iOSUseLaunchScreenStoryboard: 0 - iOSLaunchScreenCustomStoryboardPath: - iOSDeviceRequirements: [] - iOSURLSchemes: [] - iOSBackgroundModes: 0 - iOSMetalForceHardShadows: 0 - metalEditorSupport: 1 - metalAPIValidation: 1 - iOSRenderExtraFrameOnPause: 1 - appleDeveloperTeamID: - iOSManualSigningProvisioningProfileID: - tvOSManualSigningProvisioningProfileID: - iOSManualSigningProvisioningProfileType: 0 - tvOSManualSigningProvisioningProfileType: 0 - appleEnableAutomaticSigning: 0 - iOSRequireARKit: 0 - iOSAutomaticallyDetectAndAddCapabilities: 1 - appleEnableProMotion: 0 - clonedFromGUID: 00000000000000000000000000000000 - templatePackageId: - templateDefaultScene: - AndroidTargetArchitectures: 5 - AndroidSplashScreenScale: 0 - androidSplashScreen: {fileID: 0} - AndroidKeystoreName: - AndroidKeyaliasName: - AndroidBuildApkPerCpuArchitecture: 0 - AndroidTVCompatibility: 1 - AndroidIsGame: 1 - AndroidEnableTango: 0 - androidEnableBanner: 1 - androidUseLowAccuracyLocation: 0 - m_AndroidBanners: - - width: 320 - height: 180 - banner: {fileID: 0} - androidGamepadSupportLevel: 0 - resolutionDialogBanner: {fileID: 0} - m_BuildTargetIcons: - - m_BuildTarget: - m_Icons: - - serializedVersion: 2 - m_Icon: {fileID: 0} - m_Width: 128 - m_Height: 128 - m_Kind: 39095 - m_BuildTargetPlatformIcons: [] - m_BuildTargetBatching: [] - m_BuildTargetGraphicsAPIs: [] - m_BuildTargetVRSettings: - - m_BuildTarget: Android - m_Enabled: 0 - m_Devices: - - Oculus - - m_BuildTarget: Metro - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: N3DS - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: PS3 - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: PS4 - m_Enabled: 0 - m_Devices: - - PlayStationVR - - m_BuildTarget: PSM - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: PSP2 - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: SamsungTV - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: Standalone - m_Enabled: 1 - m_Devices: - - Oculus - - m_BuildTarget: Tizen - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: WebGL - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: WebPlayer - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: WiiU - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: Xbox360 - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: XboxOne - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: iOS - m_Enabled: 0 - m_Devices: [] - - m_BuildTarget: tvOS - m_Enabled: 0 - m_Devices: [] - m_BuildTargetEnableVuforiaSettings: [] - openGLRequireES31: 0 - openGLRequireES31AEP: 0 - m_TemplateCustomTags: {} - mobileMTRendering: - iPhone: 1 - tvOS: 1 - m_BuildTargetGroupLightmapEncodingQuality: - - m_BuildTarget: Standalone - m_EncodingQuality: 1 - - m_BuildTarget: XboxOne - m_EncodingQuality: 1 - - m_BuildTarget: PS4 - m_EncodingQuality: 1 - m_BuildTargetGroupLightmapSettings: [] - playModeTestRunnerEnabled: 1 - runPlayModeTestAsEditModeTest: 0 - actionOnDotNetUnhandledException: 1 - enableInternalProfiler: 0 - logObjCUncaughtExceptions: 1 - enableCrashReportAPI: 0 - cameraUsageDescription: - locationUsageDescription: - microphoneUsageDescription: - switchNetLibKey: - switchSocketMemoryPoolSize: 6144 - switchSocketAllocatorPoolSize: 128 - switchSocketConcurrencyLimit: 14 - switchScreenResolutionBehavior: 2 - switchUseCPUProfiler: 0 - switchApplicationID: 0x0005000C10000001 - switchNSODependencies: - switchTitleNames_0: - switchTitleNames_1: - switchTitleNames_2: - switchTitleNames_3: - switchTitleNames_4: - switchTitleNames_5: - switchTitleNames_6: - switchTitleNames_7: - switchTitleNames_8: - switchTitleNames_9: - switchTitleNames_10: - switchTitleNames_11: - switchTitleNames_12: - switchTitleNames_13: - switchTitleNames_14: - switchPublisherNames_0: - switchPublisherNames_1: - switchPublisherNames_2: - switchPublisherNames_3: - switchPublisherNames_4: - switchPublisherNames_5: - switchPublisherNames_6: - switchPublisherNames_7: - switchPublisherNames_8: - switchPublisherNames_9: - switchPublisherNames_10: - switchPublisherNames_11: - switchPublisherNames_12: - switchPublisherNames_13: - switchPublisherNames_14: - switchIcons_0: {fileID: 0} - switchIcons_1: {fileID: 0} - switchIcons_2: {fileID: 0} - switchIcons_3: {fileID: 0} - switchIcons_4: {fileID: 0} - switchIcons_5: {fileID: 0} - switchIcons_6: {fileID: 0} - switchIcons_7: {fileID: 0} - switchIcons_8: {fileID: 0} - switchIcons_9: {fileID: 0} - switchIcons_10: {fileID: 0} - switchIcons_11: {fileID: 0} - switchIcons_12: {fileID: 0} - switchIcons_13: {fileID: 0} - switchIcons_14: {fileID: 0} - switchSmallIcons_0: {fileID: 0} - switchSmallIcons_1: {fileID: 0} - switchSmallIcons_2: {fileID: 0} - switchSmallIcons_3: {fileID: 0} - switchSmallIcons_4: {fileID: 0} - switchSmallIcons_5: {fileID: 0} - switchSmallIcons_6: {fileID: 0} - switchSmallIcons_7: {fileID: 0} - switchSmallIcons_8: {fileID: 0} - switchSmallIcons_9: {fileID: 0} - switchSmallIcons_10: {fileID: 0} - switchSmallIcons_11: {fileID: 0} - switchSmallIcons_12: {fileID: 0} - switchSmallIcons_13: {fileID: 0} - switchSmallIcons_14: {fileID: 0} - switchManualHTML: - switchAccessibleURLs: - switchLegalInformation: - switchMainThreadStackSize: 1048576 - switchPresenceGroupId: 0x0005000C10000001 - switchLogoHandling: 0 - switchReleaseVersion: 0 - switchDisplayVersion: 1.0.0 - switchStartupUserAccount: 0 - switchTouchScreenUsage: 0 - switchSupportedLanguagesMask: 0 - switchLogoType: 0 - switchApplicationErrorCodeCategory: - switchUserAccountSaveDataSize: 0 - switchUserAccountSaveDataJournalSize: 0 - switchApplicationAttribute: 0 - switchCardSpecSize: 4 - switchCardSpecClock: 25 - switchRatingsMask: 0 - switchRatingsInt_0: 0 - switchRatingsInt_1: 0 - switchRatingsInt_2: 0 - switchRatingsInt_3: 0 - switchRatingsInt_4: 0 - switchRatingsInt_5: 0 - switchRatingsInt_6: 0 - switchRatingsInt_7: 0 - switchRatingsInt_8: 0 - switchRatingsInt_9: 0 - switchRatingsInt_10: 0 - switchRatingsInt_11: 0 - switchRatingsInt_12: 0 - switchLocalCommunicationIds_0: 0x0005000C10000001 - switchLocalCommunicationIds_1: - switchLocalCommunicationIds_2: - switchLocalCommunicationIds_3: - switchLocalCommunicationIds_4: - switchLocalCommunicationIds_5: - switchLocalCommunicationIds_6: - switchLocalCommunicationIds_7: - switchParentalControl: 0 - switchAllowsScreenshot: 1 - switchAllowsVideoCapturing: 1 - switchAllowsRuntimeAddOnContentInstall: 0 - switchDataLossConfirmation: 0 - switchUserAccountLockEnabled: 0 - switchSystemResourceMemory: 16777216 - switchSupportedNpadStyles: 3 - switchNativeFsCacheSize: 32 - switchIsHoldTypeHorizontal: 0 - switchSupportedNpadCount: 8 - switchSocketConfigEnabled: 0 - switchTcpInitialSendBufferSize: 32 - switchTcpInitialReceiveBufferSize: 64 - switchTcpAutoSendBufferSizeMax: 256 - switchTcpAutoReceiveBufferSizeMax: 256 - switchUdpSendBufferSize: 9 - switchUdpReceiveBufferSize: 42 - switchSocketBufferEfficiency: 4 - switchSocketInitializeEnabled: 1 - switchNetworkInterfaceManagerInitializeEnabled: 1 - switchPlayerConnectionEnabled: 1 - ps4NPAgeRating: 12 - ps4NPTitleSecret: - ps4NPTrophyPackPath: - ps4ParentalLevel: 1 - ps4ContentID: ED1633-NPXX51362_00-0000000000000000 - ps4Category: 0 - ps4MasterVersion: 01.00 - ps4AppVersion: 01.00 - ps4AppType: 0 - ps4ParamSfxPath: - ps4VideoOutPixelFormat: 0 - ps4VideoOutInitialWidth: 1920 - ps4VideoOutBaseModeInitialWidth: 1920 - ps4VideoOutReprojectionRate: 120 - ps4PronunciationXMLPath: - ps4PronunciationSIGPath: - ps4BackgroundImagePath: - ps4StartupImagePath: - ps4StartupImagesFolder: - ps4IconImagesFolder: - ps4SaveDataImagePath: - ps4SdkOverride: - ps4BGMPath: - ps4ShareFilePath: - ps4ShareOverlayImagePath: - ps4PrivacyGuardImagePath: - ps4NPtitleDatPath: - ps4RemotePlayKeyAssignment: -1 - ps4RemotePlayKeyMappingDir: - ps4PlayTogetherPlayerCount: 0 - ps4EnterButtonAssignment: 1 - ps4ApplicationParam1: 0 - ps4ApplicationParam2: 0 - ps4ApplicationParam3: 0 - ps4ApplicationParam4: 0 - ps4DownloadDataSize: 0 - ps4GarlicHeapSize: 2048 - ps4ProGarlicHeapSize: 2560 - ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ - ps4pnSessions: 1 - ps4pnPresence: 1 - ps4pnFriends: 1 - ps4pnGameCustomData: 1 - playerPrefsSupport: 0 - enableApplicationExit: 0 - resetTempFolder: 1 - restrictedAudioUsageRights: 0 - ps4UseResolutionFallback: 0 - ps4ReprojectionSupport: 0 - ps4UseAudio3dBackend: 0 - ps4SocialScreenEnabled: 0 - ps4ScriptOptimizationLevel: 3 - ps4Audio3dVirtualSpeakerCount: 14 - ps4attribCpuUsage: 0 - ps4PatchPkgPath: - ps4PatchLatestPkgPath: - ps4PatchChangeinfoPath: - ps4PatchDayOne: 0 - ps4attribUserManagement: 0 - ps4attribMoveSupport: 0 - ps4attrib3DSupport: 0 - ps4attribShareSupport: 0 - ps4attribExclusiveVR: 0 - ps4disableAutoHideSplash: 0 - ps4videoRecordingFeaturesUsed: 0 - ps4contentSearchFeaturesUsed: 0 - ps4attribEyeToEyeDistanceSettingVR: 0 - ps4IncludedModules: [] - monoEnv: - splashScreenBackgroundSourceLandscape: {fileID: 0} - splashScreenBackgroundSourcePortrait: {fileID: 0} - spritePackerPolicy: - webGLMemorySize: 256 - webGLExceptionSupport: 1 - webGLNameFilesAsHashes: 0 - webGLDataCaching: 0 - webGLDebugSymbols: 0 - webGLEmscriptenArgs: - webGLModulesDirectory: - webGLTemplate: APPLICATION:Default - webGLAnalyzeBuildSize: 0 - webGLUseEmbeddedResources: 0 - webGLCompressionFormat: 1 - webGLLinkerTarget: 1 - webGLThreadsSupport: 0 - scriptingDefineSymbols: - 1: CROSS_PLATFORM_INPUT - 4: CROSS_PLATFORM_INPUT;MOBILE_INPUT - 7: CROSS_PLATFORM_INPUT;MOBILE_INPUT - 14: MOBILE_INPUT - 17: MOBILE_INPUT - 20: MOBILE_INPUT - 22: MOBILE_INPUT - platformArchitecture: {} - scriptingBackend: - Android: 0 - Standalone: 0 - il2cppCompilerConfiguration: {} - managedStrippingLevel: {} - incrementalIl2cppBuild: {} - allowUnsafeCode: 0 - additionalIl2CppArgs: - scriptingRuntimeVersion: 1 - apiCompatibilityLevelPerPlatform: {} - m_RenderingPath: 1 - m_MobileRenderingPath: 1 - metroPackageName: GLTFLoader - metroPackageVersion: 1.0.0.0 - metroCertificatePath: - metroCertificatePassword: - metroCertificateSubject: - metroCertificateIssuer: - metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: GLTFLoader - wsaImages: {} - metroTileShortName: - metroTileShowName: 0 - metroMediumTileShowName: 0 - metroLargeTileShowName: 0 - metroWideTileShowName: 0 - metroSupportStreamingInstall: 0 - metroLastRequiredScene: 0 - metroDefaultTileSize: 1 - metroTileForegroundText: 2 - metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} - metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, - a: 1} - metroSplashScreenUseBackgroundColor: 0 - platformCapabilities: - WindowsStoreApps: - AllJoyn: False - BlockedChatMessages: False - Bluetooth: False - Chat: False - CodeGeneration: False - EnterpriseAuthentication: False - HumanInterfaceDevice: False - InputInjectionBrokered: False - InternetClient: False - InternetClientServer: False - Location: False - Microphone: False - MusicLibrary: False - Objects3D: False - PhoneCall: False - PicturesLibrary: False - PrivateNetworkClientServer: False - Proximity: False - RemovableStorage: False - SharedUserCertificates: False - SpatialPerception: False - UserAccountInformation: False - VideosLibrary: False - VoipCall: False - WebCam: False - metroTargetDeviceFamilies: {} - metroFTAName: - metroFTAFileTypes: [] - metroProtocolName: - metroCompilationOverrides: 1 - XboxOneProductId: - XboxOneUpdateKey: - XboxOneSandboxId: - XboxOneContentId: - XboxOneTitleId: - XboxOneSCId: - XboxOneGameOsOverridePath: - XboxOnePackagingOverridePath: - XboxOneAppManifestOverridePath: - XboxOneVersion: 1.0.0.0 - XboxOnePackageEncryption: 0 - XboxOnePackageUpdateGranularity: 2 - XboxOneDescription: - XboxOneLanguage: - - enus - XboxOneCapability: [] - XboxOneGameRating: {} - XboxOneIsContentPackage: 0 - XboxOneEnableGPUVariability: 0 - XboxOneSockets: {} - XboxOneSplashScreen: {fileID: 0} - XboxOneAllowedProductIds: [] - XboxOnePersistentLocalStorageSize: 0 - XboxOneXTitleMemory: 8 - xboxOneScriptCompiler: 0 - XboxOneOverrideIdentityName: - vrEditorSettings: - daydream: - daydreamIconForeground: {fileID: 0} - daydreamIconBackground: {fileID: 0} - cloudServicesEnabled: - Analytics: 0 - Build: 0 - Collab: 0 - ErrorHub: 0 - Game_Performance: 0 - Hub: 0 - Purchasing: 0 - UNet: 0 - Unity_Ads: 0 - luminIcon: - m_Name: - m_ModelFolderPath: - m_PortalFolderPath: - luminCert: - m_CertPath: - m_PrivateKeyPath: - luminIsChannelApp: 0 - luminVersion: - m_VersionCode: 1 - m_VersionName: - facebookSdkVersion: 7.9.1 - facebookAppId: - facebookCookies: 1 - facebookLogging: 1 - facebookStatus: 1 - facebookXfbml: 0 - facebookFrictionlessRequests: 1 - apiCompatibilityLevel: 3 - cloudProjectId: - framebufferDepthMemorylessMode: 0 - projectName: - organizationId: - cloudEnabled: 0 - enableNativePlatformBackendsForNewInputSystem: 0 - disableOldInputManagerSupport: 0 - legacyClampBlendShapeWeights: 1 diff --git a/UnityGLTF/ProjectSettings/ProjectVersion.txt b/UnityGLTF/ProjectSettings/ProjectVersion.txt deleted file mode 100644 index 4c21eea52..000000000 --- a/UnityGLTF/ProjectSettings/ProjectVersion.txt +++ /dev/null @@ -1 +0,0 @@ -m_EditorVersion: 2018.4.14f1 diff --git a/UnityGLTF/ProjectSettings/QualitySettings.asset b/UnityGLTF/ProjectSettings/QualitySettings.asset deleted file mode 100644 index 7ee87c596..000000000 --- a/UnityGLTF/ProjectSettings/QualitySettings.asset +++ /dev/null @@ -1,219 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 5 - m_QualitySettings: - - serializedVersion: 2 - name: Fastest - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Fast - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Simple - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Good - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Beautiful - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 70 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Fantastic - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - blendWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 4 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: {} diff --git a/UnityGLTF/ProjectSettings/TagManager.asset b/UnityGLTF/ProjectSettings/TagManager.asset deleted file mode 100644 index 1c92a7840..000000000 --- a/UnityGLTF/ProjectSettings/TagManager.asset +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 diff --git a/UnityGLTF/ProjectSettings/TimeManager.asset b/UnityGLTF/ProjectSettings/TimeManager.asset deleted file mode 100644 index 558a017e1..000000000 --- a/UnityGLTF/ProjectSettings/TimeManager.asset +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!5 &1 -TimeManager: - m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.33333334 - m_TimeScale: 1 - Maximum Particle Timestep: 0.03 diff --git a/UnityGLTF/ProjectSettings/UnityConnectSettings.asset b/UnityGLTF/ProjectSettings/UnityConnectSettings.asset deleted file mode 100644 index fa0b14657..000000000 --- a/UnityGLTF/ProjectSettings/UnityConnectSettings.asset +++ /dev/null @@ -1,34 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!310 &1 -UnityConnectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 1 - m_Enabled: 0 - m_TestMode: 0 - m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events - m_EventUrl: https://cdp.cloud.unity3d.com/v1/events - m_ConfigUrl: https://config.uca.cloud.unity3d.com - m_TestInitMode: 0 - CrashReportingSettings: - m_EventUrl: https://perf-events.cloud.unity3d.com - m_Enabled: 0 - m_LogBufferSize: 10 - m_CaptureEditorExceptions: 1 - UnityPurchasingSettings: - m_Enabled: 0 - m_TestMode: 0 - UnityAnalyticsSettings: - m_Enabled: 0 - m_TestMode: 0 - m_InitializeOnStartup: 1 - UnityAdsSettings: - m_Enabled: 0 - m_InitializeOnStartup: 1 - m_TestMode: 0 - m_IosGameId: - m_AndroidGameId: - m_GameIds: {} - m_GameId: - PerformanceReportingSettings: - m_Enabled: 0 diff --git a/UnityGLTF/ProjectSettings/VFXManager.asset b/UnityGLTF/ProjectSettings/VFXManager.asset deleted file mode 100644 index 6e0eaca40..000000000 --- a/UnityGLTF/ProjectSettings/VFXManager.asset +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!937362698 &1 -VFXManager: - m_ObjectHideFlags: 0 - m_IndirectShader: {fileID: 0} - m_CopyBufferShader: {fileID: 0} - m_SortShader: {fileID: 0} - m_RenderPipeSettingsPath: - m_FixedTimeStep: 0.016666668 - m_MaxDeltaTime: 0.05 diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material/Material_00_ACTUAL.png deleted file mode 100644 index 9dcefe21d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material/Material_00_EXPECTED.png deleted file mode 100644 index 9dcefe21d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_01_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material/Material_01_ACTUAL.png deleted file mode 100644 index ef1e3d086..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_01_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_01_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material/Material_01_EXPECTED.png deleted file mode 100644 index ef1e3d086..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_01_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material/Material_04_ACTUAL.png deleted file mode 100644 index d40fac2eb..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material/Material_04_EXPECTED.png deleted file mode 100644 index d40fac2eb..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_06_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material/Material_06_ACTUAL.png deleted file mode 100644 index ec7b552ff..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_06_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_06_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material/Material_06_EXPECTED.png deleted file mode 100644 index ec7b552ff..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_06_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_07_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material/Material_07_ACTUAL.png deleted file mode 100644 index bc6be5581..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_07_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material/Material_07_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material/Material_07_EXPECTED.png deleted file mode 100644 index bc6be5581..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material/Material_07_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_ACTUAL.png deleted file mode 100644 index 220809d90..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_EXPECTED.png deleted file mode 100644 index 220809d90..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_ACTUAL.png deleted file mode 100644 index 04cc931e1..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_EXPECTED.png deleted file mode 100644 index 04cc931e1..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_01_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_ACTUAL.png deleted file mode 100644 index c2d3a91a5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_EXPECTED.png deleted file mode 100644 index c2d3a91a5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_ACTUAL.png deleted file mode 100644 index 39c890aa7..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_EXPECTED.png deleted file mode 100644 index 39c890aa7..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_ACTUAL.png deleted file mode 100644 index af1b99863..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_EXPECTED.png deleted file mode 100644 index af1b99863..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_ACTUAL.png deleted file mode 100644 index d941b1e2f..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_EXPECTED.png deleted file mode 100644 index d941b1e2f..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_05_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_ACTUAL.png deleted file mode 100644 index add36f2df..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_EXPECTED.png deleted file mode 100644 index add36f2df..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_AlphaBlend/Material_AlphaBlend_06_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_ACTUAL.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_EXPECTED.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_ACTUAL.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_EXPECTED.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_01_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_ACTUAL.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_EXPECTED.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_ACTUAL.png deleted file mode 100644 index 8fa2d3dc5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_EXPECTED.png deleted file mode 100644 index 8fa2d3dc5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_DoubleSided/Material_DoubleSided_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_ACTUAL.png deleted file mode 100644 index f28e1461d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_EXPECTED.png deleted file mode 100644 index f28e1461d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_ACTUAL.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_EXPECTED.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_ACTUAL.png deleted file mode 100644 index 0edb76e14..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_EXPECTED.png deleted file mode 100644 index 0edb76e14..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_ACTUAL.png deleted file mode 100644 index c6a75e44e..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_EXPECTED.png deleted file mode 100644 index c6a75e44e..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_05_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_ACTUAL.png deleted file mode 100644 index 0b32ae81b..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_EXPECTED.png deleted file mode 100644 index 0b32ae81b..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_06_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_ACTUAL.png deleted file mode 100644 index 2bc16f412..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_EXPECTED.png deleted file mode 100644 index 2bc16f412..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_08_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_MetallicRoughness/Material_MetallicRoughness_09_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_ACTUAL.png deleted file mode 100644 index 0f60c603d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_EXPECTED.png deleted file mode 100644 index 0f60c603d..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_01_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_ACTUAL.png deleted file mode 100644 index c548aee8a..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_EXPECTED.png deleted file mode 100644 index c548aee8a..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_Mixed/Material_Mixed_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_EXPECTED.png deleted file mode 100644 index 623607c59..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_ACTUAL.png deleted file mode 100644 index 0463da4e3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_EXPECTED.png deleted file mode 100644 index 0463da4e3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_EXPECTED.png deleted file mode 100644 index c0b2ebc80..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_05_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_06_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_EXPECTED.png deleted file mode 100644 index 76a02c57e..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_10_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_EXPECTED.png deleted file mode 100644 index 63995b1ac..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_11_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_EXPECTED.png deleted file mode 100644 index 77c35e592..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_12_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_ACTUAL.png deleted file mode 100644 index e114aab76..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_EXPECTED.png deleted file mode 100644 index 38ab0c6b3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Material_SpecularGlossiness/Material_SpecularGlossiness_13_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_ACTUAL.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_EXPECTED.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_ACTUAL.png deleted file mode 100644 index 5f599f670..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_EXPECTED.png deleted file mode 100644 index 5f599f670..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_ACTUAL.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_EXPECTED.png deleted file mode 100644 index ebbe97a13..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_ACTUAL.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_EXPECTED.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_ACTUAL.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_EXPECTED.png deleted file mode 100644 index 4233e4612..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_05_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_ACTUAL.png deleted file mode 100644 index 8fa2d3dc5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_EXPECTED.png deleted file mode 100644 index 8fa2d3dc5..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_06_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_ACTUAL.png deleted file mode 100644 index 1497c821f..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_EXPECTED.png deleted file mode 100644 index 1497c821f..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_Primitives/Mesh_Primitives_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_ACTUAL.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_EXPECTED.png deleted file mode 100644 index dd19c0af6..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_00_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_ACTUAL.png deleted file mode 100644 index fa4c19fc3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_EXPECTED.png deleted file mode 100644 index fa4c19fc3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_01_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_ACTUAL.png deleted file mode 100644 index ec3f0d275..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_EXPECTED.png deleted file mode 100644 index ec3f0d275..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_02_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_ACTUAL.png deleted file mode 100644 index febfa0235..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_EXPECTED.png deleted file mode 100644 index febfa0235..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_03_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_ACTUAL.png deleted file mode 100644 index fa4c19fc3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_EXPECTED.png deleted file mode 100644 index fa4c19fc3..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_04_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_ACTUAL.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_ACTUAL.png deleted file mode 100644 index ec3f0d275..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_ACTUAL.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_EXPECTED.png b/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_EXPECTED.png deleted file mode 100644 index ec3f0d275..000000000 Binary files a/UnityGLTF/ScenarioTests/Output/Mesh_PrimitivesUV/Mesh_PrimitivesUV_05_EXPECTED.png and /dev/null differ diff --git a/UnityGLTF/ScenarioTests/TestsToRun.txt b/UnityGLTF/ScenarioTests/TestsToRun.txt deleted file mode 100644 index c227c415e..000000000 --- a/UnityGLTF/ScenarioTests/TestsToRun.txt +++ /dev/null @@ -1,47 +0,0 @@ -Material_00 -Material_01 -Material_04 -Material_06 -Material_07 -Material_AlphaBlend_00 -Material_AlphaBlend_01 -Material_AlphaBlend_02 -Material_AlphaBlend_03 -Material_AlphaBlend_04 -Material_AlphaBlend_05 -Material_AlphaBlend_06 -Material_DoubleSided_00 -Material_DoubleSided_01 -Material_DoubleSided_02 -Material_DoubleSided_03 -Material_MetallicRoughness_00 -Material_MetallicRoughness_02 -Material_MetallicRoughness_03 -Material_MetallicRoughness_04 -Material_MetallicRoughness_05 -Material_MetallicRoughness_06 -Material_MetallicRoughness_08 -Material_MetallicRoughness_09 -Material_Mixed_00 -Material_Mixed_01 -Material_Mixed_02 -Material_SpecularGlossiness_00 -Material_SpecularGlossiness_03 -Material_SpecularGlossiness_05 -Material_SpecularGlossiness_06 -Mesh_PrimitiveAttribute_00 -Mesh_PrimitiveAttribute_02 -Mesh_PrimitiveAttribute_00 -Mesh_PrimitiveAttribute_03 -Mesh_PrimitiveAttribute_04 -Mesh_PrimitiveAttribute_05 -Mesh_PrimitiveAttribute_06 -Mesh_Primitives_00 -Mesh_PrimitivesUV_00 -Mesh_PrimitivesUV_01 -Mesh_PrimitivesUV_02 -Mesh_PrimitivesUV_03 -Mesh_PrimitivesUV_04 -Mesh_PrimitivesUV_05 - - diff --git a/UnityGLTF/UnityGLTF-dll.csproj b/UnityGLTF/UnityGLTF-dll.csproj deleted file mode 100644 index 04560bdc6..000000000 --- a/UnityGLTF/UnityGLTF-dll.csproj +++ /dev/null @@ -1,88 +0,0 @@ - - - Debug - AnyCPU - {F7C86AC9-627D-4D15-BC95-9E4571B83878} - Library - false - UnityGLTF - v4.7.1 - 512 - - - true - full - false - bin\Debug\ - TRACE;DEBUG;UNITY_2017_1_OR_NEWER,UNITY_2017_2_OR_NEWER,UNITY_2017_3_OR_NEWER - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE;UNITY_2017_1_OR_NEWER,UNITY_2017_2_OR_NEWER,UNITY_2017_3_OR_NEWER - prompt - 4 - - - UnityGLTF - - - - False - Assets\UnityGLTF\Runtime\Plugins\net35\GLTFSerialization.dll - - - - - - - - - - - C:\Program Files\Unity\Hub\Editor\2017.4.18f1\Editor\Data\Managed\UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.1.9f2\Editor\Data\Managed\UnityEngine.dll - C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/UnityGLTF/UnityGLTF-dll.sln b/UnityGLTF/UnityGLTF-dll.sln deleted file mode 100644 index 81b500215..000000000 --- a/UnityGLTF/UnityGLTF-dll.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2003 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityGLTF-dll", "UnityGLTF-dll.csproj", "{F7C86AC9-627D-4D15-BC95-9E4571B83878}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F7C86AC9-627D-4D15-BC95-9E4571B83878}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7C86AC9-627D-4D15-BC95-9E4571B83878}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7C86AC9-627D-4D15-BC95-9E4571B83878}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7C86AC9-627D-4D15-BC95-9E4571B83878}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {D5E897F1-2E7A-4F91-A5E3-8A55517B7263} - EndGlobalSection -EndGlobal diff --git a/UnityGLTF/www/.gitattributes b/UnityGLTF/www/.gitattributes deleted file mode 100644 index 24a8e8793..000000000 --- a/UnityGLTF/www/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.png filter=lfs diff=lfs merge=lfs -text diff --git a/UnityGLTF/www/Constant/Constant.bin b/UnityGLTF/www/Constant/Constant.bin deleted file mode 100644 index 5731e2de4..000000000 Binary files a/UnityGLTF/www/Constant/Constant.bin and /dev/null differ diff --git a/UnityGLTF/www/Constant/Constant.blend b/UnityGLTF/www/Constant/Constant.blend deleted file mode 100644 index fc7e57578..000000000 Binary files a/UnityGLTF/www/Constant/Constant.blend and /dev/null differ diff --git a/UnityGLTF/www/Constant/Constant.gltf b/UnityGLTF/www/Constant/Constant.gltf deleted file mode 100644 index c071848ba..000000000 --- a/UnityGLTF/www/Constant/Constant.gltf +++ /dev/null @@ -1,476 +0,0 @@ -{ - "accessors" : [ - { - "bufferView" : 0, - "componentType" : 5121, - "count" : 36, - "max" : [ - 35 - ], - "min" : [ - 0 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 1, - "componentType" : 5126, - "count" : 36, - "max" : [ - 0.8161786794662476, - 0.8660248517990112, - 0.7071068286895752 - ], - "min" : [ - -0.8161787986755371, - -0.8660248517990112, - -0.7071068286895752 - ], - "type" : "VEC3" - }, - { - "bufferView" : 2, - "componentType" : 5126, - "count" : 36, - "max" : [ - 0.8171306848526001, - 0.5777987241744995, - 0.70710688829422 - ], - "min" : [ - -0.8171306848526001, - -0.5777986645698547, - -0.7071070075035095 - ], - "type" : "VEC3" - }, - { - "bufferView" : 3, - "componentType" : 5126, - "count" : 36, - "max" : [ - 1.0, - 1.0 - ], - "min" : [ - 0.0, - 0.0 - ], - "type" : "VEC2" - }, - { - "bufferView" : 4, - "componentType" : 5126, - "count" : 36, - "max" : [ - 0.9935897588729858, - 0.9935897449031472 - ], - "min" : [ - 0.006410255562514067, - 0.00641024112701416 - ], - "type" : "VEC2" - }, - { - "bufferView" : 5, - "componentType" : 5123, - "count" : 960, - "max" : [ - 272 - ], - "min" : [ - 0 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 6, - "componentType" : 5126, - "count" : 273, - "max" : [ - 0.7499999403953552, - 0.75, - 0.75 - ], - "min" : [ - -0.75, - -0.75, - -0.75 - ], - "type" : "VEC3" - }, - { - "bufferView" : 7, - "componentType" : 5126, - "count" : 273, - "max" : [ - 0.99993896484375, - 1.0, - 1.0 - ], - "min" : [ - -0.99993896484375, - -1.0, - -1.0 - ], - "type" : "VEC3" - }, - { - "bufferView" : 8, - "componentType" : 5126, - "count" : 273, - "max" : [ - 0.9940249919891357, - 0.9944479027763009 - ], - "min" : [ - 0.0059750378131866455, - 0.005552113056182861 - ], - "type" : "VEC2" - }, - { - "bufferView" : 9, - "componentType" : 5126, - "count" : 273, - "max" : [ - 1.0, - 1.0, - 1.0, - 1.0 - ], - "min" : [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "type" : "VEC4" - }, - { - "bufferView" : 10, - "componentType" : 5121, - "count" : 186, - "max" : [ - 71 - ], - "min" : [ - 0 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 11, - "componentType" : 5126, - "count" : 72, - "max" : [ - 0.75, - 0.75, - 0.75 - ], - "min" : [ - -0.75, - -0.75, - -0.75 - ], - "type" : "VEC3" - }, - { - "bufferView" : 12, - "componentType" : 5126, - "count" : 72, - "max" : [ - 0.8641010522842407, - 1.0, - 0.8641010522842407 - ], - "min" : [ - -0.8641010522842407, - -0.503280758857727, - -0.8641010522842407 - ], - "type" : "VEC3" - }, - { - "bufferView" : 13, - "componentType" : 5126, - "count" : 72, - "max" : [ - 0.9820756912231445, - 0.9941402832046151 - ], - "min" : [ - 0.005677140783518553, - 0.014366507530212402 - ], - "type" : "VEC2" - } - ], - "asset" : { - "generator" : "Khronos Blender glTF 2.0 exporter", - "version" : "2.0" - }, - "bufferViews" : [ - { - "buffer" : 0, - "byteLength" : 36, - "byteOffset" : 0, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 432, - "byteOffset" : 36, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 432, - "byteOffset" : 468, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 288, - "byteOffset" : 900, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 288, - "byteOffset" : 1188, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 1920, - "byteOffset" : 1476, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 3276, - "byteOffset" : 3396, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 3276, - "byteOffset" : 6672, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 2184, - "byteOffset" : 9948, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 4368, - "byteOffset" : 12132, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 186, - "byteOffset" : 16500, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 864, - "byteOffset" : 16686, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 864, - "byteOffset" : 17550, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 576, - "byteOffset" : 18414, - "target" : 34962 - } - ], - "buffers" : [ - { - "byteLength" : 18990, - "uri" : "Constant.bin" - } - ], - "images" : [ - { - "uri" : "box-lightmap.png" - }, - { - "uri" : "alpha.png" - }, - { - "uri" : "sphere-lightmap.png" - }, - { - "uri" : "cone-lightmap.png" - } - ], - "materials" : [ - { - "alphaMode" : "MASK", - "doubleSided" : true, - "emissiveFactor" : [ - 0.0, - 1.0, - 0.0 - ], - "emissiveTexture" : { - "index" : 1 - }, - "name" : "Material", - "commonConstant" : { - "lightmapTexture": { - "index": 0, - "texCoord": 1 - } - } - }, - { - "emissiveFactor" : [ - 0.0, - 0.0, - 1.0 - ], - "name" : "Material.002", - "commonConstant" : { - "lightmapTexture": { - "index": 2 - }, - "lightmapFactor": [1,1,1] - } - }, - { - "emissiveFactor" : [ - 1.0, - 0.0, - 0.0 - ], - "name" : "Material.003", - "commonConstant" : { - "lightmapTexture": { - "index": 3 - } - } - } - ], - "meshes" : [ - { - "name" : "Cube", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TEXCOORD_0" : 3, - "TEXCOORD_1" : 4 - }, - "indices" : 0, - "material" : 0 - } - ] - }, - { - "name" : "Icosphere", - "primitives" : [ - { - "attributes" : { - "COLOR_0" : 9, - "NORMAL" : 7, - "POSITION" : 6, - "TEXCOORD_0" : 8 - }, - "indices" : 5, - "material" : 1 - } - ] - }, - { - "name" : "Cone", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 12, - "POSITION" : 11, - "TEXCOORD_0" : 13 - }, - "indices" : 10, - "material" : 2 - } - ] - } - ], - "nodes" : [ - { - "mesh" : 2, - "name" : "Cone", - "translation" : [ - 0.0, - 0.7512085437774658, - 2.0 - ] - }, - { - "mesh" : 0, - "name" : "Cube", - "translation" : [ - 0.0, - 0.861341118812561, - -0.0 - ] - }, - { - "mesh" : 1, - "name" : "Icosphere", - "translation" : [ - 0.0, - 0.75, - -2.0 - ] - } - ], - "samplers" : [ - {} - ], - "scene" : 0, - "scenes" : [ - { - "name" : "Scene", - "nodes" : [ - 0, - 2, - 1 - ] - } - ], - "textures" : [ - { - "sampler" : 0, - "source" : 0 - }, - { - "sampler" : 0, - "source" : 1 - }, - { - "sampler" : 0, - "source" : 2 - }, - { - "sampler" : 0, - "source" : 3 - } - ], - "extensionsUsed": ["KHR_materials_common"] -} diff --git a/UnityGLTF/www/Constant/alpha.png b/UnityGLTF/www/Constant/alpha.png deleted file mode 100644 index 755bb1b12..000000000 --- a/UnityGLTF/www/Constant/alpha.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f4e4c66d86406c6aa850df77ed5e52f2831ac2d90a4c97a7427105973616e8f -size 10750 diff --git a/UnityGLTF/www/Constant/box-lightmap.png b/UnityGLTF/www/Constant/box-lightmap.png deleted file mode 100644 index 4876cfeb5..000000000 --- a/UnityGLTF/www/Constant/box-lightmap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0816c074f89118fc09f36cddf08b3c3f9761b4898c8fad11c0f81eb9ef5616e6 -size 128928 diff --git a/UnityGLTF/www/Constant/cone-lightmap.png b/UnityGLTF/www/Constant/cone-lightmap.png deleted file mode 100644 index 89a1979b6..000000000 --- a/UnityGLTF/www/Constant/cone-lightmap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:19241dcf5d0dae02a5a2ff1bd0b90832bbb62ab437707d829240f6d1da26174e -size 80810 diff --git a/UnityGLTF/www/Constant/sphere-lightmap.png b/UnityGLTF/www/Constant/sphere-lightmap.png deleted file mode 100644 index 6ec52f957..000000000 --- a/UnityGLTF/www/Constant/sphere-lightmap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b16321123ebadf7e155e9d29cbaa38c980104a67c31d8b22e4d76da000cbeef -size 146780 diff --git a/UnityGLTF/www/EXT_texture_transform/colorgrid.png b/UnityGLTF/www/EXT_texture_transform/colorgrid.png deleted file mode 100644 index 8be1f0c0e..000000000 --- a/UnityGLTF/www/EXT_texture_transform/colorgrid.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04065469c3fc0fb704797d49a8c4e1753efe547c3749702b648ab78e4b7a1953 -size 286178 diff --git a/UnityGLTF/www/EXT_texture_transform/pyramid.bin b/UnityGLTF/www/EXT_texture_transform/pyramid.bin deleted file mode 100644 index fb94ac48f..000000000 Binary files a/UnityGLTF/www/EXT_texture_transform/pyramid.bin and /dev/null differ diff --git a/UnityGLTF/www/EXT_texture_transform/pyramid.gltf b/UnityGLTF/www/EXT_texture_transform/pyramid.gltf deleted file mode 100644 index 5758f7c18..000000000 --- a/UnityGLTF/www/EXT_texture_transform/pyramid.gltf +++ /dev/null @@ -1,311 +0,0 @@ -{ - "accessors" : [ - { - "bufferView" : 0, - "componentType" : 5121, - "count" : 36, - "max" : [ - 23 - ], - "min" : [ - 0 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 1, - "componentType" : 5126, - "count" : 24, - "max" : [ - 2.0, - 1.0, - 2.000000238418579 - ], - "min" : [ - -1.999999761581421, - 0.0, - -1.999999761581421 - ], - "type" : "VEC3" - }, - { - "bufferView" : 2, - "componentType" : 5126, - "count" : 24, - "max" : [ - 1.0, - 1.0, - 1.0 - ], - "min" : [ - -1.0, - -1.0, - -1.0 - ], - "type" : "VEC3" - }, - { - "bufferView" : 3, - "componentType" : 5126, - "count" : 24, - "max" : [ - 5.364416892916779e-07, - 1.0, - 1.0, - 1.0 - ], - "min" : [ - -1.639128583974525e-07, - -1.0, - -1.0, - 1.0 - ], - "type" : "VEC4" - }, - { - "bufferView" : 4, - "componentType" : 5126, - "count" : 24, - "max" : [ - 1.0, - 1.0 - ], - "min" : [ - 0.0, - 0.0 - ], - "type" : "VEC2" - } - ], - "asset" : { - "generator" : "Khronos Blender glTF 2.0 exporter", - "version" : "2.0" - }, - "bufferViews" : [ - { - "buffer" : 0, - "byteLength" : 36, - "byteOffset" : 0, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 288, - "byteOffset" : 36, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 288, - "byteOffset" : 324, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 384, - "byteOffset" : 612, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 192, - "byteOffset" : 996, - "target" : 34962 - } - ], - "buffers" : [ - { - "byteLength" : 1188, - "uri" : "pyramid.bin" - } - ], - "images" : [ - { - "uri" : "colorgrid.png" - } - ], - "materials" : [ - { - "name" : "Material", - "pbrMetallicRoughness" : { - "baseColorTexture" : { - "index" : 0 - } - } - }, - { - "name" : "Material.001", - "pbrMetallicRoughness" : { - "baseColorTexture" : { - "index" : 0, - "extensions": { - "EXT_texture_transform": { - "offset": [0,0], - "scale": [1, 0.75] - } - } - } - } - }, - { - "name" : "Material.002", - "pbrMetallicRoughness" : { - "baseColorTexture" : { - "index" : 0, - "extensions": { - "EXT_texture_transform": { - "offset": [0,0], - "scale": [1, 0.5] - } - } - } - } - }, - { - "name" : "Material.003", - "pbrMetallicRoughness" : { - "baseColorTexture" : { - "index" : 0, - "extensions": { - "EXT_texture_transform": { - "offset": [0,0], - "scale": [1, 0.25] - } - } - } - } - } - ], - "meshes" : [ - { - "name" : "Cube.003", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TANGENT" : 3, - "TEXCOORD_0" : 4 - }, - "indices" : 0, - "material" : 3 - } - ] - }, - { - "name" : "Cube.001", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TANGENT" : 3, - "TEXCOORD_0" : 4 - }, - "indices" : 0, - "material" : 1 - } - ] - }, - { - "name" : "Cube", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TANGENT" : 3, - "TEXCOORD_0" : 4 - }, - "indices" : 0, - "material" : 0 - } - ] - }, - { - "name" : "Cube.002", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TANGENT" : 3, - "TEXCOORD_0" : 4 - }, - "indices" : 0, - "material" : 2 - } - ] - } - ], - "nodes" : [ - { - "mesh" : 2, - "name" : "Cube" - }, - { - "mesh" : 1, - "name" : "Cube.001", - "scale" : [ - 0.75, - 1.0, - 0.75 - ], - "translation" : [ - 0.0, - 1.0, - -0.0 - ] - }, - { - "mesh" : 3, - "name" : "Cube.002", - "scale" : [ - 0.5, - 1.0, - 0.5 - ], - "translation" : [ - 0.0, - 2.0, - -0.0 - ] - }, - { - "mesh" : 0, - "name" : "Cube.003", - "scale" : [ - 0.25, - 1.0, - 0.25 - ], - "translation" : [ - 0.0, - 3.0, - -0.0 - ] - } - ], - "samplers" : [ - {} - ], - "scene" : 0, - "scenes" : [ - { - "name" : "Scene", - "nodes" : [ - 3, - 2, - 1, - 0 - ] - } - ], - "textures" : [ - { - "sampler" : 0, - "source" : 0 - } - ], - "extensionsUsed": ["EXT_texture_transform"] -} diff --git a/UnityGLTF/www/EXT_texture_transform/quad.bin b/UnityGLTF/www/EXT_texture_transform/quad.bin deleted file mode 100644 index be8cea2fd..000000000 Binary files a/UnityGLTF/www/EXT_texture_transform/quad.bin and /dev/null differ diff --git a/UnityGLTF/www/EXT_texture_transform/quad.gltf b/UnityGLTF/www/EXT_texture_transform/quad.gltf deleted file mode 100644 index 33ad09213..000000000 --- a/UnityGLTF/www/EXT_texture_transform/quad.gltf +++ /dev/null @@ -1,166 +0,0 @@ -{ - "accessors" : [ - { - "bufferView" : 0, - "componentType" : 5121, - "count" : 9, - "max" : [ - 4 - ], - "min" : [ - 0 - ], - "type" : "SCALAR" - }, - { - "bufferView" : 1, - "componentType" : 5126, - "count" : 5, - "max" : [ - 1.0, - 0.0, - 1.0 - ], - "min" : [ - -1.0, - 0.0, - -1.0 - ], - "type" : "VEC3" - }, - { - "bufferView" : 2, - "componentType" : 5126, - "count" : 5, - "max" : [ - 0.0, - 1.0, - -0.0 - ], - "min" : [ - 0.0, - 1.0, - -0.0 - ], - "type" : "VEC3" - }, - { - "bufferView" : 3, - "componentType" : 5126, - "count" : 5, - "max" : [ - 0.9999000430107117, - 0.9999000199895818 - ], - "min" : [ - 9.998001041822135e-05, - 9.995698928833008e-05 - ], - "type" : "VEC2" - } - ], - "asset" : { - "generator" : "Khronos Blender glTF 2.0 exporter", - "version" : "2.0" - }, - "bufferViews" : [ - { - "buffer" : 0, - "byteLength" : 9, - "byteOffset" : 0, - "target" : 34963 - }, - { - "buffer" : 0, - "byteLength" : 60, - "byteOffset" : 12, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 60, - "byteOffset" : 72, - "target" : 34962 - }, - { - "buffer" : 0, - "byteLength" : 40, - "byteOffset" : 132, - "target" : 34962 - } - ], - "buffers" : [ - { - "byteLength" : 172, - "uri" : "quad.bin" - } - ], - "images" : [ - { - "uri" : "colorgrid.png" - } - ], - "materials" : [ - { - "name" : "Material", - "pbrMetallicRoughness" : { - "baseColorTexture" : { - "index" : 0, - "extensions": { - "EXT_texture_transform": { - "offset": [0.5, 0.5], - "scale": [0.5, 0.5] - } - } - } - } - } - ], - "meshes" : [ - { - "name" : "Plane", - "primitives" : [ - { - "attributes" : { - "NORMAL" : 2, - "POSITION" : 1, - "TEXCOORD_0" : 3 - }, - "indices" : 0, - "material" : 0 - } - ] - } - ], - "nodes" : [ - { - "mesh" : 0, - "name" : "Plane", - "rotation" : [ - 0.7071068286895752, - 0.0, - -0.0, - 0.7071068286895752 - ] - } - ], - "samplers" : [ - {} - ], - "scene" : 0, - "scenes" : [ - { - "name" : "Scene", - "nodes" : [ - 0 - ] - } - ], - "textures" : [ - { - "sampler" : 0, - "source" : 0 - } - ], - "extensionsUsed": ["EXT_texture_transform"] -} diff --git a/UnityGLTF/www/MultiScene/README.md b/UnityGLTF/www/MultiScene/README.md deleted file mode 100644 index a32669793..000000000 --- a/UnityGLTF/www/MultiScene/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Corset -## Screenshot - -![screenshot](screenshot/screenshot.jpg) - - -## License Information - -Donated by Microsoft for glTF testing. \ No newline at end of file diff --git a/UnityGLTF/www/MultiScene/glTF/Corset.bin b/UnityGLTF/www/MultiScene/glTF/Corset.bin deleted file mode 100644 index a9eaf750e..000000000 Binary files a/UnityGLTF/www/MultiScene/glTF/Corset.bin and /dev/null differ diff --git a/UnityGLTF/www/MultiScene/glTF/Corset_baseColor.png b/UnityGLTF/www/MultiScene/glTF/Corset_baseColor.png deleted file mode 100644 index eeca7daa1..000000000 --- a/UnityGLTF/www/MultiScene/glTF/Corset_baseColor.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98afc47c4942f8161e920811be0144eb5cb17724f1988d533b40952ce6a46c24 -size 4368487 diff --git a/UnityGLTF/www/MultiScene/glTF/Corset_normal.png b/UnityGLTF/www/MultiScene/glTF/Corset_normal.png deleted file mode 100644 index 4fa3fea3a..000000000 --- a/UnityGLTF/www/MultiScene/glTF/Corset_normal.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fae7b816eaa4f036f85ec7aff1367c74f31cdc8f0994e4106acaf81cc6d3ab7c -size 4974340 diff --git a/UnityGLTF/www/MultiScene/glTF/Corset_occlusionRoughnessMetallic.png b/UnityGLTF/www/MultiScene/glTF/Corset_occlusionRoughnessMetallic.png deleted file mode 100644 index 014fcbaf0..000000000 --- a/UnityGLTF/www/MultiScene/glTF/Corset_occlusionRoughnessMetallic.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9614ef28937281be98e0156af209155378f35470d20b7920a6c5d052c9e10e66 -size 4051851 diff --git a/UnityGLTF/www/MultiScene/glTF/MultiScene.gltf b/UnityGLTF/www/MultiScene/glTF/MultiScene.gltf deleted file mode 100644 index 07181b4da..000000000 --- a/UnityGLTF/www/MultiScene/glTF/MultiScene.gltf +++ /dev/null @@ -1,226 +0,0 @@ -{ - "accessors": [ - { - "bufferView": 0, - "byteOffset": 0, - "componentType": 5126, - "count": 11505, - "type": "VEC2", - "max": [ - 1.0, - -0.008408904 - ], - "min": [ - 0.00469656335, - -0.996301055 - ] - }, - { - "bufferView": 1, - "byteOffset": 0, - "componentType": 5126, - "count": 11505, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "byteOffset": 0, - "componentType": 5126, - "count": 11505, - "type": "VEC4", - "max": [ - 0.9997274, - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 3, - "byteOffset": 0, - "componentType": 5126, - "count": 11505, - "type": "VEC3", - "max": [ - 0.019474864, - 0.05784153, - 0.019474864 - ], - "min": [ - -0.0194748752, - 0.0, - -0.0194748677 - ] - }, - { - "bufferView": 4, - "byteOffset": 0, - "componentType": 5123, - "count": 54972, - "type": "SCALAR", - "max": [ - 11504 - ], - "min": [ - 0 - ] - } - ], - "asset": { - "generator": "glTF Tools for Unity", - "version": "2.0" - }, - "bufferViews": [ - { - "buffer": 0, - "byteOffset": 0, - "byteLength": 92040 - }, - { - "buffer": 0, - "byteOffset": 92040, - "byteLength": 138060 - }, - { - "buffer": 0, - "byteOffset": 230100, - "byteLength": 184080 - }, - { - "buffer": 0, - "byteOffset": 414180, - "byteLength": 138060 - }, - { - "buffer": 0, - "byteOffset": 552240, - "byteLength": 109944 - } - ], - "buffers": [ - { - "uri": "Corset.bin", - "byteLength": 662184 - } - ], - "images": [ - { - "uri": "Corset_baseColor.png" - }, - { - "uri": "Corset_occlusionRoughnessMetallic.png" - }, - { - "uri": "Corset_normal.png" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "TEXCOORD_0": 0, - "NORMAL": 1, - "TANGENT": 2, - "POSITION": 3 - }, - "indices": 4, - "material": 0, - "mode": 4 - } - ], - "name": "pCube49" - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "baseColorTexture": { - "index": 0 - }, - "metallicRoughnessTexture": { - "index": 1 - } - }, - "normalTexture": { - "index": 2 - }, - "occlusionTexture": { - "index": 1 - }, - "name": "Corset_O" - } - ], - "nodes": [ - { - "children": [], - "mesh": 0, - "scale": [ - 25.0, - 25.0, - 25.0 - ], - "translation": [ - 0.0, - -0.623, - 0.089 - ], - "name": "Corset Small" - }, - { - "children": [], - "mesh": 0, - "scale": [ - 100.0, - 100.0, - 100.0 - ], - "translation": [ - 0.0, - -0.623, - 0.089 - ], - "name": "Corset Large" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 0 - ] - }, - { - "nodes": [ - 1 - ] - } - ], - "textures": [ - { - "source": 0 - }, - { - "source": 1 - }, - { - "source": 2 - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/www/MultiScene/screenshot/screenshot.jpg b/UnityGLTF/www/MultiScene/screenshot/screenshot.jpg deleted file mode 100644 index 9ccd6d3f8..000000000 Binary files a/UnityGLTF/www/MultiScene/screenshot/screenshot.jpg and /dev/null differ diff --git a/UnityGLTF/www/TestScene/TestScene.bin b/UnityGLTF/www/TestScene/TestScene.bin deleted file mode 100644 index 458d95ab2..000000000 Binary files a/UnityGLTF/www/TestScene/TestScene.bin and /dev/null differ diff --git a/UnityGLTF/www/TestScene/TestScene.gltf b/UnityGLTF/www/TestScene/TestScene.gltf deleted file mode 100644 index d471b54c0..000000000 --- a/UnityGLTF/www/TestScene/TestScene.gltf +++ /dev/null @@ -1,936 +0,0 @@ -{ - "extensionsUsed": [ - "KHR_materials_common" - ], - "accessors": [ - { - "bufferView": 0, - "componentType": 5126, - "count": 24, - "type": "VEC3", - "max": [ - 0.5, - 0.5, - 0.5 - ], - "min": [ - -0.5, - -0.5, - -0.5 - ] - }, - { - "bufferView": 1, - "componentType": 5126, - "count": 24, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 2, - "componentType": 5126, - "count": 24, - "type": "VEC4", - "max": [ - 0.0, - 0.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - 0.0, - -1.0, - 1.0 - ] - }, - { - "bufferView": 3, - "componentType": 5126, - "count": 24, - "type": "VEC2", - "max": [ - 1.0, - 0.0 - ], - "min": [ - 0.0, - -1.0 - ] - }, - { - "bufferView": 4, - "componentType": 5126, - "count": 24, - "type": "VEC2", - "max": [ - 0.9966580867767334, - -0.0040557663887739182 - ], - "min": [ - 0.0040557663887739182, - -0.65283584594726563 - ] - }, - { - "bufferView": 5, - "componentType": 5121, - "count": 36, - "type": "SCALAR", - "max": [ - 23.0 - ], - "min": [ - 0.0 - ] - }, - { - "bufferView": 6, - "componentType": 5126, - "count": 515, - "type": "VEC3", - "max": [ - 0.5, - 0.5, - 0.5 - ], - "min": [ - -0.5, - -0.5, - -0.5 - ] - }, - { - "bufferView": 7, - "componentType": 5126, - "count": 515, - "type": "VEC3", - "max": [ - 0.99997496604919434, - 1.0, - 0.99997353553771973 - ], - "min": [ - -0.99997496604919434, - -1.0, - -0.9999769926071167 - ] - }, - { - "bufferView": 8, - "componentType": 5126, - "count": 515, - "type": "VEC4", - "max": [ - 1.0, - 0.056131001561880112, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -0.065983392298221588, - -1.0, - -1.0 - ] - }, - { - "bufferView": 9, - "componentType": 5126, - "count": 515, - "type": "VEC2", - "max": [ - 0.99833369255065918, - -0.017628978937864304 - ], - "min": [ - -0.00092136859893798828, - -0.97589123249053955 - ] - }, - { - "bufferView": 10, - "componentType": 5126, - "count": 515, - "type": "VEC2", - "max": [ - 1.0000003576278687, - 0.0 - ], - "min": [ - 0.0, - -0.65385353565216064 - ] - }, - { - "bufferView": 11, - "componentType": 5123, - "count": 2304, - "type": "SCALAR", - "max": [ - 514.0 - ], - "min": [ - 0.0 - ] - }, - { - "bufferView": 12, - "componentType": 5126, - "count": 121, - "type": "VEC3", - "max": [ - 5.0, - 1.1102230246251565E-16, - 5.0 - ], - "min": [ - -5.0, - -1.1102230246251565E-16, - -5.0 - ] - }, - { - "bufferView": 13, - "componentType": 5126, - "count": 121, - "type": "VEC3", - "max": [ - 0.0, - 1.0, - 0.0 - ], - "min": [ - 0.0, - 1.0, - 0.0 - ] - }, - { - "bufferView": 14, - "componentType": 5126, - "count": 121, - "type": "VEC4", - "max": [ - -1.0, - 0.0, - 0.0, - 1.0 - ], - "min": [ - -1.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "bufferView": 15, - "componentType": 5126, - "count": 121, - "type": "VEC2", - "max": [ - 1.0, - 0.0 - ], - "min": [ - 0.0, - -1.0 - ] - }, - { - "bufferView": 16, - "componentType": 5121, - "count": 600, - "type": "SCALAR", - "max": [ - 120.0 - ], - "min": [ - 0.0 - ] - }, - { - "bufferView": 17, - "componentType": 5126, - "count": 88, - "type": "VEC3", - "max": [ - 0.50000011920928955, - 1.0, - 0.5000002384185791 - ], - "min": [ - -0.5, - -1.0, - -0.50000005960464478 - ] - }, - { - "bufferView": 18, - "componentType": 5126, - "count": 88, - "type": "VEC3", - "max": [ - 1.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "bufferView": 19, - "componentType": 5126, - "count": 88, - "type": "VEC4", - "max": [ - 1.0, - 0.0, - 1.0, - 1.0 - ], - "min": [ - -1.0, - 0.0, - -1.0, - 1.0 - ] - }, - { - "bufferView": 20, - "componentType": 5126, - "count": 88, - "type": "VEC2", - "max": [ - 0.99974912405014038, - -0.00045373811735771596 - ], - "min": [ - 0.00069368560798466206, - -0.999430775642395 - ] - }, - { - "bufferView": 21, - "componentType": 5126, - "count": 88, - "type": "VEC2", - "max": [ - 0.99716836214065552, - -0.002600180683657527 - ], - "min": [ - 0.0043606190010905266, - -0.99788063764572144 - ] - }, - { - "bufferView": 22, - "componentType": 5121, - "count": 240, - "type": "SCALAR", - "max": [ - 87.0 - ], - "min": [ - 0.0 - ] - }, - { - "bufferView": 23, - "componentType": 5126, - "count": 16, - "type": "VEC3", - "max": [ - 0.0099999997764825821, - 0.0099999997764825821, - 0.0 - ], - "min": [ - -0.0099999997764825821, - -0.0099999997764825821, - -0.0099999997764825821 - ] - }, - { - "bufferView": 24, - "componentType": 5126, - "count": 16, - "type": "VEC3", - "max": [ - 0.57735025882720947, - 0.57735025882720947, - 1.0 - ], - "min": [ - -0.57735025882720947, - -0.57735031843185425, - -0.57735025882720947 - ] - }, - { - "bufferView": 25, - "componentType": 5126, - "count": 16, - "type": "VEC4", - "max": [ - 1.0, - 0.0, - 0.0, - 1.0 - ], - "min": [ - 1.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "bufferView": 26, - "componentType": 5121, - "count": 18, - "type": "SCALAR", - "max": [ - 15.0 - ], - "min": [ - 0.0 - ] - }, - { - "bufferView": 27, - "componentType": 5126, - "count": 16, - "type": "VEC3", - "max": [ - 0.010000000707805157, - 0.0099999988451600075, - 0.0099999997764825821 - ], - "min": [ - -0.0099999988451600075, - -0.010000000707805157, - -2.6871764813307664E-09 - ] - }, - { - "bufferView": 28, - "componentType": 5126, - "count": 16, - "type": "VEC3", - "max": [ - 0.5773501992225647, - 0.577350378036499, - 0.57735049724578857 - ], - "min": [ - -0.577350378036499, - -0.57735013961791992, - -1.0 - ] - }, - { - "bufferView": 29, - "componentType": 5126, - "count": 16, - "type": "VEC4", - "max": [ - 1.0, - 0.0, - 0.0, - 1.0 - ], - "min": [ - 1.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "bufferView": 30, - "componentType": 5121, - "count": 18, - "type": "SCALAR", - "max": [ - 15.0 - ], - "min": [ - 0.0 - ] - } - ], - "asset": { - "version": "2.0" - }, - "buffers": [ - { - "uri": "TestScene.bin", - "byteLength": 47720 - } - ], - "bufferViews": [ - { - "buffer": 0, - "byteLength": 288 - }, - { - "buffer": 0, - "byteOffset": 288, - "byteLength": 288 - }, - { - "buffer": 0, - "byteOffset": 576, - "byteLength": 384 - }, - { - "buffer": 0, - "byteOffset": 960, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 1152, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 1344, - "byteLength": 36 - }, - { - "buffer": 0, - "byteOffset": 1380, - "byteLength": 6180 - }, - { - "buffer": 0, - "byteOffset": 7560, - "byteLength": 6180 - }, - { - "buffer": 0, - "byteOffset": 13740, - "byteLength": 8240 - }, - { - "buffer": 0, - "byteOffset": 21980, - "byteLength": 4120 - }, - { - "buffer": 0, - "byteOffset": 26100, - "byteLength": 4120 - }, - { - "buffer": 0, - "byteOffset": 30220, - "byteLength": 4608 - }, - { - "buffer": 0, - "byteOffset": 34828, - "byteLength": 1452 - }, - { - "buffer": 0, - "byteOffset": 36280, - "byteLength": 1452 - }, - { - "buffer": 0, - "byteOffset": 37732, - "byteLength": 1936 - }, - { - "buffer": 0, - "byteOffset": 39668, - "byteLength": 968 - }, - { - "buffer": 0, - "byteOffset": 40636, - "byteLength": 600 - }, - { - "buffer": 0, - "byteOffset": 41236, - "byteLength": 1056 - }, - { - "buffer": 0, - "byteOffset": 42292, - "byteLength": 1056 - }, - { - "buffer": 0, - "byteOffset": 43348, - "byteLength": 1408 - }, - { - "buffer": 0, - "byteOffset": 44756, - "byteLength": 704 - }, - { - "buffer": 0, - "byteOffset": 45460, - "byteLength": 704 - }, - { - "buffer": 0, - "byteOffset": 46164, - "byteLength": 240 - }, - { - "buffer": 0, - "byteOffset": 46404, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 46596, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 46788, - "byteLength": 256 - }, - { - "buffer": 0, - "byteOffset": 47044, - "byteLength": 18 - }, - { - "buffer": 0, - "byteOffset": 47062, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 47254, - "byteLength": 192 - }, - { - "buffer": 0, - "byteOffset": 47446, - "byteLength": 256 - }, - { - "buffer": 0, - "byteOffset": 47702, - "byteLength": 18 - } - ], - "materials": [ - { - "pbrMetallicRoughness": { - "metallicFactor": 0.0, - "roughnessFactor": 0.5 - }, - "emissiveFactor": [ - 0.0, - 0.0, - 0.0 - ], - "name": "Default-Material" - }, - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.489488125, - 0.311418653, - 0.9411765, - 1.0 - ], - "metallicFactor": 0.0, - "roughnessFactor": 0.0 - }, - "emissiveFactor": [ - 0.8014706, - 0.106076963, - 0.106076963 - ], - "name": "TestMaterial1" - }, - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 1.0, - 0.0, - 0.0, - 0.938 - ], - "metallicFactor": 0.0, - "roughnessFactor": 0.5 - }, - "alphaMode": "BLEND", - "name": "UnityStandardMaterial" - }, - { - "pbrMetallicRoughness": { - "baseColorFactor": [ - 0.03254065, - 0.0623423755, - 0.8000001, - 1.0 - ], - "metallicFactor": 0.0, - "roughnessFactor": 0.5 - }, - "doubleSided": true, - "name": "Material.001" - }, - { - "commonConstant": {}, - "emissiveFactor": [ - 0.286921263, - 0.6985294, - 0.272221 - ], - "name": "ConstantMat" - } - ], - "meshes": [ - { - "primitives": [ - { - "attributes": { - "POSITION": 0, - "NORMAL": 1, - "TANGENT": 2, - "TEXCOORD_0": 3, - "TEXCOORD_1": 4 - }, - "indices": 5, - "material": 0 - } - ], - "name": "Cube" - }, - { - "primitives": [ - { - "attributes": { - "POSITION": 6, - "NORMAL": 7, - "TANGENT": 8, - "TEXCOORD_0": 9, - "TEXCOORD_1": 10 - }, - "indices": 11, - "material": 1 - } - ], - "name": "Sphere" - }, - { - "primitives": [ - { - "attributes": { - "POSITION": 12, - "NORMAL": 13, - "TANGENT": 14, - "TEXCOORD_0": 15 - }, - "indices": 16, - "material": 0 - } - ], - "name": "Plane" - }, - { - "primitives": [ - { - "attributes": { - "POSITION": 17, - "NORMAL": 18, - "TANGENT": 19, - "TEXCOORD_0": 20, - "TEXCOORD_1": 21 - }, - "indices": 22, - "material": 2 - } - ], - "name": "Cylinder" - }, - { - "primitives": [ - { - "attributes": { - "POSITION": 23, - "NORMAL": 24, - "TANGENT": 25 - }, - "indices": 26, - "material": 3 - }, - { - "attributes": { - "POSITION": 27, - "NORMAL": 28, - "TANGENT": 29 - }, - "indices": 30, - "material": 3 - } - ], - "name": "d8 (1)" - }, - { - "primitives": [ - { - "attributes": { - "POSITION": 0, - "NORMAL": 1, - "TANGENT": 2, - "TEXCOORD_0": 3, - "TEXCOORD_1": 4 - }, - "indices": 5, - "material": 4 - } - ], - "name": "Cube" - } - ], - "nodes": [ - { - "children": [ - 1, - 7, - 8 - ], - "name": "TestExportScene" - }, - { - "children": [ - 2, - 3, - 4, - 5, - 6 - ], - "name": "TestNode" - }, - { - "mesh": 0, - "rotation": [ - 0.0, - -0.382683426, - 0.0, - 0.923879564 - ], - "name": "Cube" - }, - { - "mesh": 1, - "translation": [ - 1.62, - 0.0, - 0.0 - ], - "name": "Sphere" - }, - { - "mesh": 2, - "translation": [ - 0.0, - -0.68, - 0.0 - ], - "name": "Plane" - }, - { - "mesh": 3, - "rotation": [ - 0.0, - 0.0, - 0.222586334, - 0.974913 - ], - "translation": [ - 0.872, - 0.75, - 1.199 - ], - "name": "Cylinder" - }, - { - "mesh": 4, - "rotation": [ - 0.7069834, - 0.0, - 0.0, - 0.7072302 - ], - "scale": [ - 100.000061, - 99.99998, - 100.000061 - ], - "translation": [ - -1.881427, - 0.315, - -1.059433 - ], - "name": "d8 (1)" - }, - { - "mesh": 5, - "translation": [ - 0.0, - 0.0, - -1.857 - ], - "name": "Cube" - }, - { - "mesh": 4, - "rotation": [ - 0.6955708, - -0.455449253, - 0.552137852, - 0.06237793 - ], - "scale": [ - 100.0, - 100.0, - 100.0 - ], - "translation": [ - -1.244, - -0.094, - 1.301 - ], - "name": "d8" - } - ], - "scene": 0, - "scenes": [ - { - "nodes": [ - 0 - ], - "name": "TestScene" - } - ] -} \ No newline at end of file diff --git a/UnityGLTF/www/glTF-Asset-Generator b/UnityGLTF/www/glTF-Asset-Generator deleted file mode 160000 index d800bc4b9..000000000 --- a/UnityGLTF/www/glTF-Asset-Generator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d800bc4b9add8a7a10e4de9b77329662b391d78a diff --git a/UnityGLTF/www/glTF-Sample-Models b/UnityGLTF/www/glTF-Sample-Models deleted file mode 160000 index 074754bc9..000000000 --- a/UnityGLTF/www/glTF-Sample-Models +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 074754bc9d0c9638139a4d2ec534f61448574868 diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 312738ab5..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 1.0.{build} -image: Visual Studio 2017 -before_build: -- cmd: nuget restore GLTFSerialization\GLTFSerialization.sln -build: - project: GLTFSerialization\GLTFSerialization.sln - verbosity: minimal \ No newline at end of file diff --git a/current-package/README.txt b/current-package/README.txt deleted file mode 100644 index c49b881fa..000000000 --- a/current-package/README.txt +++ /dev/null @@ -1 +0,0 @@ -Directory for UnityPackage Release (TEST ONLY) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 000000000..6e3f41936 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "org.khronos.unitygltf", + "displayName": "UnityGLTF", + "version": "2.8.1-exp", + "unity": "2020.3", + "description": "Import and export glTF 2.0 assets, both in the editor and at runtime.", + "repository": { + "url": "https://github.com/KhronosGroup/UnityGLTF.git" + }, + "keywords": [ + "gltf", + "khronos", + "runtime", + "loader", + "import", + "export" + ], + "author": "Khronos Group", + "dependencies": { + "com.unity.nuget.newtonsoft-json": "2.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.shadergraph": "10.0.0" + }, + "samples": [ + { + "displayName": "KHR_audio Plugin", + "description": "Experimental plugin adding KHR_audio support.", + "path": "Samples~/KHR_audio" + } + ] +} diff --git a/UnityGLTF/Assets/UnityGLTF/package.json.meta b/package.json.meta similarity index 100% rename from UnityGLTF/Assets/UnityGLTF/package.json.meta rename to package.json.meta diff --git a/scripts/LaunchUnityDocker.sh b/scripts/LaunchUnityDocker.sh deleted file mode 100644 index efb60f9ad..000000000 --- a/scripts/LaunchUnityDocker.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/sh - -UNITY_VERSION=2018.4.14f1 -docker run -it --rm \ --e "UNITY_USERNAME=username@example.com" \ --e "UNITY_PASSWORD=example_password" \ --e "TEST_PLATFORM=linux" \ --e "WORKDIR=/root/project" \ --v "$(pwd):/root/project" \ -gableroux/unity3d:$UNITY_VERSION \ -bash diff --git a/scripts/ServerBuilds.md b/scripts/ServerBuilds.md deleted file mode 100644 index f26e125b8..000000000 --- a/scripts/ServerBuilds.md +++ /dev/null @@ -1,41 +0,0 @@ -# Server Builds - -The server build for UnityGLTF takes place on 2 independent systems: -- [AppVeyor](https://www.appveyor.com/) - - Configured with `appveyor.yml`. - - Builds the `GLTFSerialization` solution and runs its unit tests. - - Runs on all Pull Requests (and commits). -- [Travis CI](https://travis-ci.org/) - - Configured with `.travis.yml`. - - Builds the portion of the `GLTFSerialization` solution needed in Unity. - - Builds the `UnityGLTF` Unity project and runs its tests. - - Runs only on in-repository Pull Requests (and commits) for [security reasons](https://docs.travis-ci.com/user/pull-requests#pull-requests-and-security-restrictions). - -## Updating the Unity license or version -If the Unity license evers expires or the version of Unity is being changed, a new Unity License File will need to be generated. -- On a local machine (probably a Mac), enlist in this repository and ensure [docker](https://www.docker.com/) is installed -- Locally update the [LaunchUnityDocker.sh](./LaunchUnityDocker.sh) script to use the actual username and password of the Unity account whose credentials will be used on the build machines, as well as updating the desired UNITY_VERSION. - - Do **NOT** check in the username or password changes. - - Feeding your username and password through a script instead of directly in bash prevents these from being captured in your bash history. -- In the docker container's bash (once it is launched), have Unity request a license by running: - - xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout -batchmode -username "$UNITY_USERNAME" -password "$UNITY_PASSWORD" -- Wait for a line to print that looks like `LICENSE SYSTEM [2017723 8:6:38] Posting keystore.keystore - else - echo '$ANDROID_KEYSTORE_BASE64'" env var not found, building with Unity's default debug keystore" - fi -fi - -LICENSE="UNITY_LICENSE_CONTENT_"$UPPERCASE_BUILD_TARGET - -if [ -z "${!LICENSE}" ] -then - echo "$LICENSE env var not found, using default UNITY_LICENSE_CONTENT env var" - LICENSE=UNITY_LICENSE_CONTENT -else - echo "Using $LICENSE env var" -fi - -echo "Writing $LICENSE to license file /root/.local/share/unity3d/Unity/Unity_lic.ulf" -echo "${!LICENSE}" | tr -d '\r' > /root/.local/share/unity3d/Unity/Unity_lic.ulf - -echo -en "travis_fold:end:before_script.1\\r" - diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100644 index adf3c5eca..000000000 --- a/scripts/build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo -en "travis_fold:start:build.1\\r" && echo "Building for $BUILD_TARGET" - -${UNITY_EXECUTABLE:-xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity} \ - -projectPath $PROJECT_PATH \ - -quit \ - -batchmode \ - -buildTarget $BUILD_TARGET \ - -logFile /dev/stdout - -UNITY_EXIT_CODE=$? - -if [ $UNITY_EXIT_CODE -eq 0 ]; then - echo "Run succeeded, no failures occurred"; -elif [ $UNITY_EXIT_CODE -eq 2 ]; then - echo "Run succeeded, some tests failed"; -elif [ $UNITY_EXIT_CODE -eq 3 ]; then - echo "Run failure (other failure)"; -else - echo "Unexpected exit code $UNITY_EXIT_CODE"; -fi - -echo -en "travis_fold:end:build.1\\r" - diff --git a/scripts/docker_build.sh b/scripts/docker_build.sh deleted file mode 100644 index 03fba06e5..000000000 --- a/scripts/docker_build.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -e - -docker run \ - -e BUILD_NAME \ - -e PROJECT_PATH \ - -e UNITY_LICENSE_CONTENT \ - -e BUILD_TARGET \ - -e UNITY_USERNAME \ - -e UNITY_PASSWORD \ - -w /project/ \ - -v $(pwd):/project/ \ - $IMAGE_NAME \ - /bin/bash -c "/project/scripts/before_script.sh && /project/scripts/build.sh" diff --git a/scripts/docker_test.sh b/scripts/docker_test.sh deleted file mode 100644 index c13c62e15..000000000 --- a/scripts/docker_test.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -set -e - -docker run \ - -e PROJECT_PATH \ - -e UNITY_LICENSE_CONTENT \ - -e TEST_PLATFORM \ - -e UNITY_USERNAME \ - -e UNITY_PASSWORD \ - -w /project/ \ - -v $(pwd):/project/ \ - $IMAGE_NAME \ - /bin/bash -c "/project/scripts/before_script.sh && /project/scripts/test.sh" diff --git a/scripts/export-unity-package.sh b/scripts/export-unity-package.sh deleted file mode 100755 index 6bd9dfa34..000000000 --- a/scripts/export-unity-package.sh +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/sh - -project_path=$(pwd)/UnityGLTF -log_file=$(pwd)/build/unity-mac.log -export_path=$(pwd)/current-package/UnityGLTF.unitypackage - -error_code=0 - -echo "Creating package." -/Applications/Unity/Unity.app/Contents/MacOS/Unity \ - -batchmode \ - -nographics \ - -silent-crashes \ - -logFile "$log_file" \ - -projectPath "$project_path" \ - -exportPackage "Assets/UnityGLTF" "$export_path" \ - -quit -if [ $? = 0 ] ; then - echo "Created package successfully." - error_code=0 -else - echo "Creating package failed. Exited with $?." - error_code=1 -fi - -echo 'Build logs:' -cat $log_file - -echo "Finishing with code $error_code" -exit $error_code \ No newline at end of file diff --git a/scripts/export-upm-package.sh b/scripts/export-upm-package.sh deleted file mode 100644 index 70ce44cd3..000000000 --- a/scripts/export-upm-package.sh +++ /dev/null @@ -1,63 +0,0 @@ -#! /bin/bash - -project_path=$(pwd)/UnityGLTF -log_file=$(pwd)/build/unity-mac.log - -cached_folder=$(pwd) -upm_name=org.khronos.UnityGLTF -echo "##vso[task.setvariable variable=UPM_NAME]$upm_name" -upm_src_folder_path=$(pwd)/UnityGLTF/Assets/UnityGLTF -upm_manifest_path=$(pwd)/scripts/package.json -upm_staging_path=$(pwd)/current-package/$upm_name -upm_staging_UWP_plugins_path=$upm_staging_path/UnityGLTF/Plugins/uap10.0.10586 -upm_zip_export_path=$(pwd)/current-package/$upm_name.zip -upm_targz_export_path=$(pwd)/current-package/$upm_name.tar.gz - -if [[ $BUILD_SOURCEBRANCH == *"refs/tags"* ]]; then - echo "Detected refs/tags in $BUILD_SOURCEBRANCH so this must be a tagged release build." - # Splits the string with "refs/tags", takes the second value and then - # swaps out any slashes for underscores - GIT_TAG=$(echo $BUILD_SOURCEBRANCH | awk -F'refs/tags/' '{print $2}' | tr '/' '_') - echo "Setting GIT_TAG variable to: $GIT_TAG" - echo "##vso[task.setvariable variable=GIT_TAG]$GIT_TAG" -else - echo "Did not detect refs/tags in $BUILD_SOURCEBRANCH so skipping GIT_TAG variable set" -fi - -# msbuild spits out every single dependency dll for UWP -# These are the only files that are needed by the UPM package for Unity 2018.3+ -# Including all the files in the UWP plugin directory causes name collision errors when -# building for UWP in Unity -upm_UWP_Plugins=( - "GLTFSerialization.dll" - "GLTFSerialization.dll.meta" - "GLTFSerialization.pdb" - "Newtonsoft.Json.dll" - "Newtonsoft.Json.dll.meta" -) - -error_code=0 -echo $upm_name -echo $upm_src_folder_path -echo $upm_manifest_path -echo $upm_staging_path - -echo "Creating package folder" -mkdir $upm_staging_path -echo "Copying package.json" -cp $upm_manifest_path $upm_staging_path - -echo "Copying package contents from $upm_src_folder_path" -cp -r $upm_src_folder_path $upm_staging_path - -echo "Changing to $upm_staging_path folder" -cd $upm_staging_path - -echo "Cleaning out UWP plugin DLLs that are not needed for Unity2018.3+" -find $upm_staging_UWP_plugins_path -maxdepth 1 -type f | grep -vE "$(IFS=\| && echo "${upm_UWP_Plugins[*]}")" | xargs rm - -echo "Files left in $upm_staging_UWP_plugins_path" -for entry in "$upm_staging_UWP_plugins_path"/* -do - echo "$entry" -done \ No newline at end of file diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index dfbb44b38..000000000 --- a/scripts/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "org.khronos.unitygltf", - "displayName": "Khronos GLTF Loader", - "version": "1.0.0", - "unity": "2018.3", - "description": "Unity3D library for importing and exporting GLTF 2.0 assets. https://github.com/KhronosGroup/UnityGLTF", - "keywords": [ - "gltf", - "khronos", - "runtime", - "loader" - ], - "author": "Khronos Group", - "dependencies": {} -} diff --git a/scripts/test.sh b/scripts/test.sh deleted file mode 100644 index 252905500..000000000 --- a/scripts/test.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -echo -en "travis_fold:start:test.1\\r" && echo "Testing for $TEST_PLATFORM" - -${UNITY_EXECUTABLE:-xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity} \ - -projectPath $PROJECT_PATH \ - -runTests \ - -testPlatform $TEST_PLATFORM \ - -testResults $(pwd)/$TEST_PLATFORM-results.xml \ - -logFile /dev/stdout \ - -batchmode - -UNITY_EXIT_CODE=$? - -if [ $UNITY_EXIT_CODE -eq 0 ]; then - echo "Run succeeded, no failures occurred"; -elif [ $UNITY_EXIT_CODE -eq 2 ]; then - echo "Run succeeded, some tests failed"; -elif [ $UNITY_EXIT_CODE -eq 3 ]; then - echo "Run failure (other failure)"; -else - echo "Unexpected exit code $UNITY_EXIT_CODE"; -fi - -echo -en "travis_fold:end:test.1\\r" - -# Log the complete test results -echo -en "travis_fold:start:test.2\\r" && echo "$(pwd)/$TEST_PLATFORM-results.xml" -cat $(pwd)/$TEST_PLATFORM-results.xml -echo -en "travis_fold:end:test.2\\r" - -# Check for a Passed result in the test results -cat $(pwd)/$TEST_PLATFORM-results.xml | grep test-run | grep Passed -exit $UNITY_TEST_EXIT_CODE