diff --git a/Assets/Materials/Chapter13.meta b/Assets/Allegorithmic.meta
similarity index 57%
rename from Assets/Materials/Chapter13.meta
rename to Assets/Allegorithmic.meta
index 526c57da..efb63d53 100644
--- a/Assets/Materials/Chapter13.meta
+++ b/Assets/Allegorithmic.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: efff6d433a38746ffb30c13c91129aad
+guid: 1bf71675b8e0d4364a17de033b62e458
folderAsset: yes
-timeCreated: 1443588245
-licenseType: Free
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins.meta b/Assets/Allegorithmic/Plugins.meta
new file mode 100644
index 00000000..ff88f801
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e7b6cc32d512ba049ab6ab4ae9afb4c6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/EULA.txt b/Assets/Allegorithmic/Plugins/EULA.txt
new file mode 100644
index 00000000..e8f6f268
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/EULA.txt
@@ -0,0 +1,44 @@
+
+SUBSTANCE PLUGIN LICENSE AGREEMENT
+Last updated: May 28, 2018
+
+Acceptance and Legal Entity Representations
+
+PLEASE READ THE FOLLOWING TERMS AND CONDITIONS CAREFULLY BEFORE INSTALLING OR USING THE SOFTWARE. THE TERMS AND CONDITIONS OF THIS SOFTWARE LICENSE AGREEMENT (AGREEMENT) GOVERN USE OF THE SOFTWARE UNLESS YOU AND ALLEGORITHMIC SAS (ALLEGORITHMIC) HAVE EXECUTED A SEPARATE AGREEMENT GOVERNING USE OF THE SOFTWARE.
+
+Allegorithmic is willing to license the Software to you only upon the condition that you accept all the terms contained in this Agreement. By installing or using the Software, you are agreeing that you understand this Agreement and accept all of its terms. If you are accepting the terms of this Agreement on behalf of a Legal Entity, you represent and warrant that you have the authority to bind that Legal Entity to the terms of this Agreement, and, in such event, will refer to that Legal Entity. If you do not accept all the terms of this Agreement, then Allegorithmic is unwilling to license the Software to you, and you must destroy all copies of the Software in your possession or control and so certify by email to Allegorithmic within thirty (30) days. If Allegorithmic timely receives such certification, Allegorithmic shall refund the fees paid.
+0. Definitions
+- Copyright Asset means interactive media content including without limitation materials, brushes, patches, High Dynamic Range Images (HDRI's), meshes, Substance files and any other form of works which are subject to copyright laws, that are distributed either through (i) an Allegorithmic proprietary License on Substance Source or another proprietary Allegorithmic platform or (ii) a Creative Commons License on Substance Share.
+- Legal Entity means any company, corporation, limited liability company, general partnership, limited partnership, limited liability partnership, proprietorship, joint venture or other form of business organization. Legal Entity includes, without limitation, any government, non-profit, educational or academic institution, including but not limited to any primary or secondary school, vocational school, college or university.
+- Licensee Content means textures, images, substances or other content that you develop with the Software.
+- Software means all beta, versions and updates of all the Substance Plugin software products identified on Allegorithmic and Third-Party Provider websites.
+- Substance Plugin means the Substance plugin subject to this Agreement, as identified on Allegorithmic and Third-Party Provider websites.
+- Third-Party Provider means the third-party provider duly authorized and licensed by Allegorithmic to distribute the Substance Plugin to you on its website(s).
+1. Grant of License
+a. Use Rights. Subject to your compliance with the terms and conditions of this Agreement and payment of all applicable fees, Allegorithmic grants you a non-exclusive, non-transferable license to install and execute the executable form of the Software, solely for internal use by a single person to develop Licensee Content. You may not sublicense the rights granted herein.
+b. Copies of the Substance plugin and Other Products. You may install the plugin and any other Substance products on a computer, solely for your convenience, but only for use by a single person. You may make a single copy of the Software solely for backup or archival purposes. For the sake of clarity, you may only use one installation at any given time. We may in our sole discretion authorize you to install the Software on an additional computer or computers upon deactivation of the Software installed on existing computers.
+2. Restrictions
+a. General Restrictions. Except as expressly specified in this Agreement, you may not: (i) copy (except in the course of loading or installing) or modify or create derivative works of the Software; (ii) distribute, transfer, sublicense, lease, lend, rent or otherwise provide access to the Software to any third party; (iii) make the functionality of the Software available to multiple users or third parties through any means, including but not limited to by uploading the Software to a network or file-sharing service or through any hosting, application services provider, service bureau, software-as-a-service (SaaS) or any other type of services; (iv) use the Software or the Copyright Assets to (A) develop a competing product to any Substance suite products offered by Allegorithmic or (B) for any research, development and commercialization of texturing and/or material authoring products, assets, services or technologies, based on or deriving from machine learning, including deep learning, and/or other artificial intelligence techniques. These restrictions shall apply for ten (10) years from the effective date of the Agreement on the territory from which Allegorithmic operates, including but not restrictively countries of the European Union, the U.S.A and the Canada; or (v) do anything that could cause or result in the Software or the Copyright Assets being subject to any open source license (or similar license) that requires as a condition of use, modification or distribution that the Copyright Assets or Software (including the runtime portion thereof) or other software combined or distributed with the Software be: (A) disclosed or distributed in source code form, (B) licensed for the purpose of making derivative works, or (C) redistributable at no charge. You acknowledge and agree that portions of the Software, including but not limited to the source code and the specific design and structure of individual modules or programs, are confidential and constitute or contain trade secrets of Allegorithmic and its licensors. Accordingly, you agree not to disassemble, decompile or reverse engineer the Software, in whole or in part, or permit or authorize a third party to do so, except to the extent such activities are expressly permitted by law notwithstanding this prohibition.
+b. Specific restrictions applicable to Copyright Assets.
+With respect to Copyright Assets and except as expressly permitted under the Agreement:
+You shall not, and shall not assist, enable or otherwise permit or allow any third party to: (i) decompile, disassemble or otherwise reverse engineer or attempt to derive the source code of (unless expressly permitted under applicable law) or any technical data, know-how, trade secrets, processes, techniques, specifications, protocols, methods, algorithms, interfaces, ideas, solutions, structures or other information embedded or used in Copyright Assets, (ii) rent, lend, loan, lease, sell, encumber, distribute, sublicense, or otherwise permit use of or access to Copyright Asset by third parties, (iii) remove, alter, or obscure any proprietary or restrictive notices affixed to or contained in Copyright Assets, (iv) circumvent or attempt to circumvent any technological protective measure contained in or supported by Copyright Asset; or any copy, portion, extract or derivative thereof, (v) use the Copyright Asset in any manner that violates any applicable law or regulation whether local, national or international, (vi) use the Copyright Asset in any manner that violates any Intellectual Property Rights or privacy rights of Allegorithmic or any third party.
+3. Ownership
+The Software is licensed, not sold. Allegorithmic and/or its licensors retain ownership of the Software including all intellectual property rights therein. The Software is protected by copyright laws and international treaties. Allegorithmic reserves all rights in the Software not expressly granted to you in this Agreement. You will not delete or in any manner alter any Allegorithmic or third-party copyright, trademark or other proprietary rights notices or markings appearing on or in the Software.
+4. Fees and Taxes
+You agree to pay all amounts due for the Software as set forth in the applicable online stores, quote and/or invoice. All fees payable under this Agreement are net amounts and are payable in full, without deduction for taxes or duties of any kind. You will be responsible for, and will promptly pay, all taxes and duties of any kind (including but not limited to sales, use and withholding taxes) associated with this Agreement or your receipt or use of the Software, except for taxes based on Allegorithmic net income. In the event that Allegorithmic is required to collect any tax for which you are responsible, you will pay such tax directly to Allegorithmic. If you pay any withholding taxes that are required to be paid under applicable law, you will promptly furnish Allegorithmic with written documentation of all such tax payments, including receipts.
+5. Consent to Data Collection
+You acknowledge and agree the Software may make Internet connections and report information back to Allegorithmic to (i) check for Software updates; (ii) provide aggregated usage statistics of your use of the Software and the use of your Licensee Content by end users; and (iii) validate license keys in order to prevent unauthorized use and analyze Software use. In accordance with E.U. Regulation 2016/679 of 27 April 2016, you have a right to obtain information on your data, a right of access to your data, a right to rectification and erasure of your data, a right to object on legitimate grounds to their processing, and a right to data portability, as well as a right to give specific and general guidelines concerning the storage, erasure and communication of your data after your death.You can exercise these rights by sending a request, together a copy of a signed ID document, by email to legal@allegorithmic.com or by post to 3 avenue Julien, 63000 Clermont-Ferrand.
+6. Support
+As licensee of the Software you may contact Allegorithmic Support by email via contact@allegorithmic.com in accordance with Allegorithmic current policies. You also may access the Allegorithmic Support resources on the Allegorithmic Web site at http://support.allegorithmic.com/.
+7. Term
+If you have licensed a trial version of the Software, the license granted under this Agreement will remain in effect for a period of 30 days, unless earlier terminated in accordance with this Agreement.
+For paid in full, perpetual licenses, the license granted under this Agreement will remain in effect unless earlier terminated in accordance with this Agreement. The license granted under this Agreement will automatically terminate, with or without notice from Allegorithmic, if you breach any term of this Agreement or fail to pay all fees due for the license as applicable. Upon termination, you must at Allegorithmic's option either promptly delete and destroy or return to Allegorithmic all copies of the Software in your possession or control. Allegorithmic may also disable the Software you have licensed upon expiration of a subscription term license or in the event you breach this Agreement.
+8. No Warranty
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. ALLEGORITHMIC AND ITS LICENSORS DISCLAIM ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, AND ANY WARRANTIES AND CONDITIONS ARISING OUT OF COURSE OF DEALING OR USAGE OF TRADE. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED FROM ALLEGORITHMIC OR ELSEWHERE WILL CREATE ANY WARRANTY OR CONDITION NOT EXPRESSLY STATED IN THIS AGREEMENT.
+9. Limitation of Liability
+ALLEGORITHMIC AND ITS LICENSORS TOTAL LIABILITY TO YOU FROM ALL CAUSES OF ACTION AND UNDER ALL THEORIES OF LIABILITY WILL BE LIMITED TO THE GREATER OF THE AMOUNTS PAID BY YOU FOR THE SOFTWARE OR ONE HUNDRED U.S. DOLLARS (US$100). IN NO EVENT WILL ALLEGORITHMIC OR ITS LICENSORS BE LIABLE TO YOU FOR ANY SPECIAL, INCIDENTAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING LOSS OF DATA, BUSINESS, PROFITS OR ABILITY TO EXECUTE) OR FOR THE COST OF PROCURING SUBSTITUTE PRODUCTS ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE EXECUTION OR PERFORMANCE OF THE SOFTWARE, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, AND WHETHER OR NOT ALLEGORITHMIC OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE. THE FOREGOING LIMITATIONS WILL SURVIVE AND APPLY EVEN IF ANY LIMITED REMEDY SPECIFIED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.
+10. Export Law
+You agree to comply fully with all export laws and regulations to ensure that neither the Software nor any technical data related thereto nor any direct product thereof are exported or re-exported directly or indirectly in violation of, or used for any purposes prohibited by, such laws and regulations.
+11. General
+This Agreement will be governed by and construed in accordance with the laws of France, without regard to or application of conflict of laws rules or principles. The United Nations Convention on Contracts for the International Sale of Goods will not apply. Any dispute arising out of or in connection with this Agreement, including any disputes regarding the existence, validity or termination thereof, shall be settled by simplified arbitration arranged by French Court. Notwithstanding the foregoing, you agree that Allegorithmic shall have the right to seek injunctive remedies (or an equivalent type of urgent legal relief) in any court of competent jurisdiction. You may not assign or transfer this Agreement or any rights granted hereunder, by operation of law or otherwise, without Allegorithmic prior written consent, and any attempt by you to do so, without such consent, will be void. Without limiting the generality of the foregoing, if you are an employee of a Legal Entity, you may not assign or transfer this Agreement or any rights granted hereunder to your employer without Allegorithmic prior written consent, and any attempt by you to do so, without such consent, will be void. Except as expressly set forth in this Agreement, the exercise by either party of any of its remedies under this Agreement will be without prejudice to its other remedies under this Agreement or otherwise. All notices or approvals required or permitted under this Agreement will be in writing and delivered by confirmed facsimile transmission, by overnight delivery service, or by certified mail, and in each instance will be deemed given upon receipt. All notices or approvals will be sent to the addresses set forth in the applicable ordering document or invoice or to such other address as may be specified by either party to the other in accordance with this section. The failure by either party to enforce any provision of this Agreement will not constitute a waiver of future enforcement of that or any other provision. Any waiver, modification or amendment of any provision of this Agreement will be effective only if in writing and signed by authorized representatives of both parties. If any provision of this Agreement is held to be unenforceable or invalid that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. This Agreement is the complete and exclusive understanding and agreement between the parties regarding its subject matter, and supersedes all proposals, understandings or communications between the parties, oral or written, regarding its subject matter, unless you and Allegorithmic have executed a separate agreement governing use of the Software. The English language version of this Agreement is legally binding in case of any inconsistencies between the English version and any translations. Any terms or conditions contained in your purchase order or other ordering document that are inconsistent with or in addition to the terms and conditions of this Agreement are hereby rejected by Allegorithmic and will be deemed null.
+
diff --git a/Assets/Allegorithmic/Plugins/EULA.txt.meta b/Assets/Allegorithmic/Plugins/EULA.txt.meta
new file mode 100644
index 00000000..b5b8c84e
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/EULA.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 621b2d5ea7ccae24db255abafe8d423d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle.meta
new file mode 100644
index 00000000..730f3007
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle.meta
@@ -0,0 +1,40 @@
+fileFormatVersion: 2
+guid: 32ccb4a722ae62b438353357177d72c8
+folderAsset: yes
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': OSXIntel
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ '': OSXIntel64
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents.meta
new file mode 100644
index 00000000..443fe59d
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b02191648317c46439d56b9bf04c25e3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist
new file mode 100644
index 00000000..00945924
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist
@@ -0,0 +1,44 @@
+
+
+
+
+ BuildMachineOSBuild
+ 17G65
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Substance.Engine
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleLongVersionString
+
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+ CFBundleSupportedPlatforms
+
+ MacOSX
+
+ CFBundleVersion
+
+ CSResourcesFileMapped
+
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTPlatformBuild
+ 9F2000
+ DTPlatformVersion
+ GM
+ DTSDKBuild
+ 17E189
+ DTSDKName
+ macosx10.13
+ DTXcode
+ 0941
+ DTXcodeBuild
+ 9F2000
+ NSHumanReadableCopyright
+
+
+
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist.meta
new file mode 100644
index 00000000..35758cc3
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/Info.plist.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f8395c312e4e82547bc5f917302a86c5
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS.meta
new file mode 100644
index 00000000..0a80cae0
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 109989c16fe541046863b512b5458546
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine
new file mode 100644
index 00000000..70bf8ae2
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine differ
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine.meta
new file mode 100644
index 00000000..31d824a5
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.bundle/Contents/MacOS/Substance.Engine.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 391b4624b07b8e64f92205761ca3d10a
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.dll b/Assets/Allegorithmic/Plugins/Substance.Engine.dll
new file mode 100644
index 00000000..8923275e
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance.Engine.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance.Engine.dll.meta b/Assets/Allegorithmic/Plugins/Substance.Engine.dll.meta
new file mode 100644
index 00000000..ea847883
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Engine.dll.meta
@@ -0,0 +1,24 @@
+fileFormatVersion: 2
+guid: 7130e6ee9baa4c44188636490f76e992
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.Game.dll b/Assets/Allegorithmic/Plugins/Substance.Game.dll
new file mode 100644
index 00000000..a487b7a9
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance.Game.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance.Game.dll.meta b/Assets/Allegorithmic/Plugins/Substance.Game.dll.meta
new file mode 100644
index 00000000..c40b0b08
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.Game.dll.meta
@@ -0,0 +1,30 @@
+fileFormatVersion: 2
+guid: 16ea688720e474944a4e808112b45ba4
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance.meta b/Assets/Allegorithmic/Plugins/Substance.meta
new file mode 100644
index 00000000..9f24ce16
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6b66a8036020dbb4fb85b53b38ca6d2e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7.meta
new file mode 100644
index 00000000..4d919111
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fdd4431c8cc591b458db4e3d5caeb5c9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so b/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so
new file mode 100644
index 00000000..44e38215
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so.meta
new file mode 100644
index 00000000..43a1303b
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libSubstance.Engine.Mobile.so.meta
@@ -0,0 +1,93 @@
+fileFormatVersion: 2
+guid: bd2716a347a7e9943afaa77770bcd8cb
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a
new file mode 100644
index 00000000..5b09d20e
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a.meta
new file mode 100644
index 00000000..e90405d0
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libalgcompression.a.meta
@@ -0,0 +1,102 @@
+fileFormatVersion: 2
+guid: 495b6c512f4d59d40888042682524609
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a
new file mode 100644
index 00000000..e21c23cc
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a.meta
new file mode 100644
index 00000000..43a99f3d
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libpfxlinkercommon.a.meta
@@ -0,0 +1,102 @@
+fileFormatVersion: 2
+guid: 2a7f4883f00e95944aae18f002cd402c
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a
new file mode 100644
index 00000000..8b99014a
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a.meta
new file mode 100644
index 00000000..61310468
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_framework.a.meta
@@ -0,0 +1,93 @@
+fileFormatVersion: 2
+guid: 61875352dc72741458e9768325e6fdff
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a
new file mode 100644
index 00000000..276ef9f2
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a.meta
new file mode 100644
index 00000000..1f48bb5c
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_linker.a.meta
@@ -0,0 +1,93 @@
+fileFormatVersion: 2
+guid: 06afdfaf15b943f4787e2c6975d7a740
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a
new file mode 100644
index 00000000..a4d893a4
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a.meta
new file mode 100644
index 00000000..c1fb77eb
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libsubstance_neon_blend.a.meta
@@ -0,0 +1,93 @@
+fileFormatVersion: 2
+guid: 6f13f81a37a3c384aadd828cec004529
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a b/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a
new file mode 100644
index 00000000..f3e769c5
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a.meta b/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a.meta
new file mode 100644
index 00000000..d76529b8
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Armv7/libtinyxml.a.meta
@@ -0,0 +1,93 @@
+fileFormatVersion: 2
+guid: 12f2d451d9e7a6042853f76cd12709cf
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink.meta
new file mode 100644
index 00000000..4a6d4075
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44d57740694fefe4ca427a1cdfbfe8b4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor.meta
new file mode 100644
index 00000000..cbf8e89c
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 77e830dcae990824fb97e2aa8b03b62a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins.meta
new file mode 100644
index 00000000..29dbedd5
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 343c5bfa1897a014a8fdcc4d2c6c14dc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs
new file mode 100644
index 00000000..d974275a
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs
@@ -0,0 +1,1319 @@
+// Source of the file: http://wiki.unity3d.com/index.php/SimpleJSON
+// Added Keys property as following link: http://answers.unity3d.com/comments/649574/view.html
+
+//#define USE_SharpZipLib
+#if !UNITY_WEBPLAYER
+#define USE_FileIO
+#endif
+/* * * * *
+ * A simple JSON Parser / builder
+ * ------------------------------
+ *
+ * It mainly has been written as a simple JSON parser. It can build a JSON string
+ * from the node-tree, or generate a node tree from any valid JSON string.
+ *
+ * If you want to use compression when saving to file / stream / B64 you have to include
+ * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and
+ * define "USE_SharpZipLib" at the top of the file
+ *
+ * Written by Bunny83
+ * 2012-06-09
+ *
+ * Modified by oPless, 2014-09-21 to round-trip properly
+ *
+ * Features / attributes:
+ * - provides strongly typed node classes and lists / dictionaries
+ * - provides easy access to class members / array items / data values
+ * - the parser ignores data types. Each value is a string.
+ * - only double quotes (") are used for quoting strings.
+ * - values and names are not restricted to quoted strings. They simply add up and are trimmed.
+ * - There are only 3 types: arrays(JSONArray), objects(JSONClass) and values(JSONData)
+ * - provides "casting" properties to easily convert to / from those types:
+ * int / float / double / bool
+ * - provides a common interface for each node so no explicit casting is required.
+ * - the parser try to avoid errors, but if malformed JSON is parsed the result is undefined
+ *
+ *
+ * 2012-12-17 Update:
+ * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree
+ * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator
+ * The class determines the required type by it's further use, creates the type and removes itself.
+ * - Added binary serialization / deserialization.
+ * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ )
+ * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top
+ * - The serializer uses different types when it comes to store the values. Since my data values
+ * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string.
+ * It's not the most efficient way but for a moderate amount of data it should work on all platforms.
+ *
+ * * * * */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AlgSimpleJSON
+{
+ public enum JSONBinaryTag
+ {
+ Array = 1,
+ Class = 2,
+ Value = 3,
+ IntValue = 4,
+ DoubleValue = 5,
+ BoolValue = 6,
+ FloatValue = 7,
+ }
+
+ public abstract partial class JSONNode
+ {
+ #region common interface
+
+ public virtual void Add(string aKey, JSONNode aItem)
+ {
+ }
+
+ public virtual JSONNode this[int aIndex] { get { return null; } set { } }
+
+ public virtual JSONNode this[string aKey] { get { return null; } set { } }
+
+ public virtual string Value { get { return ""; } set { } }
+
+ public virtual int Count { get { return 0; } }
+
+ public virtual IEnumerable Keys { get { yield break; } }
+
+ public virtual void Add(JSONNode aItem)
+ {
+ Add("", aItem);
+ }
+
+ public virtual JSONNode Remove(string aKey)
+ {
+ return null;
+ }
+
+ public virtual JSONNode Remove(int aIndex)
+ {
+ return null;
+ }
+
+ public virtual JSONNode Remove(JSONNode aNode)
+ {
+ return aNode;
+ }
+
+ public virtual IEnumerable Children
+ {
+ get
+ {
+ yield break;
+ }
+ }
+
+ public IEnumerable DeepChildren
+ {
+ get
+ {
+ foreach (var C in Children)
+ foreach (var D in C.DeepChildren)
+ yield return D;
+ }
+ }
+
+ public override string ToString()
+ {
+ return "JSONNode";
+ }
+
+ public virtual string ToString(string aPrefix)
+ {
+ return "JSONNode";
+ }
+
+ public abstract string ToJSON(int prefix);
+
+ #endregion common interface
+
+ #region typecasting properties
+
+ public virtual JSONBinaryTag Tag { get; set; }
+
+ public virtual int AsInt
+ {
+ get
+ {
+ int v = 0;
+ if (int.TryParse(Value, out v))
+ return v;
+ return 0;
+ }
+ set
+ {
+ Value = value.ToString();
+ Tag = JSONBinaryTag.IntValue;
+ }
+ }
+
+ public virtual float AsFloat
+ {
+ get
+ {
+ float v = 0.0f;
+ if (float.TryParse(Value, out v))
+ return v;
+ return 0.0f;
+ }
+ set
+ {
+ Value = value.ToString();
+ Tag = JSONBinaryTag.FloatValue;
+ }
+ }
+
+ public virtual double AsDouble
+ {
+ get
+ {
+ double v = 0.0;
+ if (double.TryParse(Value, out v))
+ return v;
+ return 0.0;
+ }
+ set
+ {
+ Value = value.ToString();
+ Tag = JSONBinaryTag.DoubleValue;
+
+ }
+ }
+
+ public virtual bool AsBool
+ {
+ get
+ {
+ bool v = false;
+ if (bool.TryParse(Value, out v))
+ return v;
+ return !string.IsNullOrEmpty(Value);
+ }
+ set
+ {
+ Value = (value) ? "true" : "false";
+ Tag = JSONBinaryTag.BoolValue;
+
+ }
+ }
+
+ public virtual JSONArray AsArray
+ {
+ get
+ {
+ return this as JSONArray;
+ }
+ }
+
+ public virtual JSONClass AsObject
+ {
+ get
+ {
+ return this as JSONClass;
+ }
+ }
+
+
+ #endregion typecasting properties
+
+ #region operators
+
+ public static implicit operator JSONNode(string s)
+ {
+ return new JSONData(s);
+ }
+
+ public static implicit operator string(JSONNode d)
+ {
+ return (d == null) ? null : d.Value;
+ }
+
+ public static bool operator ==(JSONNode a, object b)
+ {
+ if (b == null && a is JSONLazyCreator)
+ return true;
+ return System.Object.ReferenceEquals(a, b);
+ }
+
+ public static bool operator !=(JSONNode a, object b)
+ {
+ return !(a == b);
+ }
+
+ public override bool Equals(object obj)
+ {
+ return System.Object.ReferenceEquals(this, obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ #endregion operators
+
+ internal static string Escape(string aText)
+ {
+ string result = "";
+ foreach (char c in aText)
+ {
+ switch (c)
+ {
+ case '\\':
+ result += "\\\\";
+ break;
+ case '\"':
+ result += "\\\"";
+ break;
+ case '\n':
+ result += "\\n";
+ break;
+ case '\r':
+ result += "\\r";
+ break;
+ case '\t':
+ result += "\\t";
+ break;
+ case '\b':
+ result += "\\b";
+ break;
+ case '\f':
+ result += "\\f";
+ break;
+ default:
+ result += c;
+ break;
+ }
+ }
+ return result;
+ }
+
+ static JSONData Numberize(string token)
+ {
+ bool flag = false;
+ int integer = 0;
+ double real = 0;
+
+ if (int.TryParse(token, out integer))
+ {
+ return new JSONData(integer);
+ }
+
+ if (double.TryParse(token, out real))
+ {
+ return new JSONData(real);
+ }
+
+ if (bool.TryParse(token, out flag))
+ {
+ return new JSONData(flag);
+ }
+
+ throw new NotImplementedException(token);
+ }
+
+ static void AddElement(JSONNode ctx, string token, string tokenName, bool tokenIsString)
+ {
+ if (tokenIsString)
+ {
+ if (ctx is JSONArray)
+ ctx.Add(token);
+ else
+ ctx.Add(tokenName, token); // assume dictionary/object
+ }
+ else
+ {
+ JSONData number = Numberize(token);
+ if (ctx is JSONArray)
+ ctx.Add(number);
+ else
+ ctx.Add(tokenName, number);
+
+ }
+ }
+
+ public static JSONNode Parse(string aJSON)
+ {
+ Stack stack = new Stack();
+ JSONNode ctx = null;
+ int i = 0;
+ StringBuilder Token = new StringBuilder();
+ StringBuilder TokenName = new StringBuilder();
+ bool QuoteMode = false;
+ bool TokenIsString = false;
+ while (i < aJSON.Length)
+ {
+ switch (aJSON[i])
+ {
+ case '{':
+ if (QuoteMode)
+ {
+ Token.Append(aJSON[i]);
+ break;
+ }
+ stack.Push(new JSONClass());
+ if (ctx != null)
+ {
+ string tmpName = TokenName.ToString().Trim();
+ if (ctx is JSONArray)
+ ctx.Add(stack.Peek());
+ else if (tmpName != "")
+ ctx.Add(tmpName, stack.Peek());
+ }
+ TokenName.Length = 0;
+ Token.Length = 0;
+ ctx = stack.Peek();
+ break;
+
+ case '[':
+ if (QuoteMode)
+ {
+ Token.Append(aJSON[i]);
+ break;
+ }
+
+ stack.Push(new JSONArray());
+ if (ctx != null)
+ {
+ string tmpName = TokenName.ToString().Trim();
+ if (ctx is JSONArray)
+ ctx.Add(stack.Peek());
+ else if (tmpName != "")
+ ctx.Add(tmpName, stack.Peek());
+ }
+ TokenName.Length = 0;
+ Token.Length = 0;
+ ctx = stack.Peek();
+ break;
+
+ case '}':
+ case ']':
+ if (QuoteMode)
+ {
+
+ Token.Append(aJSON[i]);
+ break;
+ }
+ if (stack.Count == 0)
+ throw new Exception("JSON Parse: Too many closing brackets");
+
+ stack.Pop();
+ if (Token.Length > 0)
+ {
+ AddElement(ctx, Token.ToString(), TokenName.ToString(), TokenIsString);
+ TokenIsString = false;
+ }
+ TokenName.Length = 0;
+ Token.Length = 0;
+ if (stack.Count > 0)
+ ctx = stack.Peek();
+ break;
+
+ case ':':
+ if (QuoteMode)
+ {
+ Token.Append(aJSON[i]);
+ break;
+ }
+ TokenName.Length = 0;
+ TokenName.Append(Token);
+ Token.Length = 0;
+ TokenIsString = false;
+ break;
+
+ case '"':
+ QuoteMode ^= true;
+ TokenIsString = QuoteMode == true ? true : TokenIsString;
+ break;
+
+ case ',':
+ if (QuoteMode)
+ {
+ Token.Append(aJSON[i]);
+ break;
+ }
+ if (Token.Length > 0)
+ {
+ AddElement(ctx, Token.ToString(), TokenName.ToString(), TokenIsString);
+ TokenIsString = false;
+ }
+ TokenName.Length = 0;
+ Token.Length = 0;
+ TokenIsString = false;
+ break;
+
+ case '\r':
+ case '\n':
+ break;
+
+ case ' ':
+ case '\t':
+ if (QuoteMode)
+ Token.Append(aJSON[i]);
+ break;
+
+ case '\\':
+ ++i;
+ if (QuoteMode)
+ {
+ char C = aJSON[i];
+ switch (C)
+ {
+ case 't':
+ Token.Append('\t');
+ break;
+ case 'r':
+ Token.Append('\r');
+ break;
+ case 'n':
+ Token.Append('\n');
+ break;
+ case 'b':
+ Token.Append('\b');
+ break;
+ case 'f':
+ Token.Append('\f');
+ break;
+ case 'u':
+ {
+ string s = aJSON.Substring(i + 1, 4);
+ Token.Append((char)int.Parse(
+ s,
+ System.Globalization.NumberStyles.AllowHexSpecifier));
+ i += 4;
+ break;
+ }
+ default:
+ Token.Append(C);
+ break;
+ }
+ }
+ break;
+
+ default:
+ Token.Append(aJSON[i]);
+ break;
+ }
+ ++i;
+ }
+ if (QuoteMode)
+ {
+ throw new Exception("JSON Parse: Quotation marks seems to be messed up.");
+ }
+ return ctx;
+ }
+
+ public virtual void Serialize(System.IO.BinaryWriter aWriter)
+ {
+ }
+
+ public void SaveToStream(System.IO.Stream aData)
+ {
+ var W = new System.IO.BinaryWriter(aData);
+ Serialize(W);
+ }
+
+#if USE_SharpZipLib
+ public void SaveToCompressedStream(System.IO.Stream aData)
+ {
+ using (var gzipOut = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(aData))
+ {
+ gzipOut.IsStreamOwner = false;
+ SaveToStream(gzipOut);
+ gzipOut.Close();
+ }
+ }
+
+ public void SaveToCompressedFile(string aFileName)
+ {
+
+#if USE_FileIO
+ System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName);
+ using(var F = System.IO.File.OpenWrite(aFileName))
+ {
+ SaveToCompressedStream(F);
+ }
+
+#else
+ throw new Exception("Can't use File IO stuff in webplayer");
+#endif
+ }
+ public string SaveToCompressedBase64()
+ {
+ using (var stream = new System.IO.MemoryStream())
+ {
+ SaveToCompressedStream(stream);
+ stream.Position = 0;
+ return System.Convert.ToBase64String(stream.ToArray());
+ }
+ }
+
+#else
+ public void SaveToCompressedStream(System.IO.Stream aData)
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+
+ public void SaveToCompressedFile(string aFileName)
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+
+ public string SaveToCompressedBase64()
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+#endif
+
+ public void SaveToFile(string aFileName)
+ {
+#if USE_FileIO
+ System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName);
+ using (var F = System.IO.File.OpenWrite(aFileName))
+ {
+ SaveToStream(F);
+ }
+#else
+ throw new Exception ("Can't use File IO stuff in webplayer");
+#endif
+ }
+
+ public string SaveToBase64()
+ {
+ using (var stream = new System.IO.MemoryStream())
+ {
+ SaveToStream(stream);
+ stream.Position = 0;
+ return System.Convert.ToBase64String(stream.ToArray());
+ }
+ }
+
+ public static JSONNode Deserialize(System.IO.BinaryReader aReader)
+ {
+ JSONBinaryTag type = (JSONBinaryTag)aReader.ReadByte();
+ switch (type)
+ {
+ case JSONBinaryTag.Array:
+ {
+ int count = aReader.ReadInt32();
+ JSONArray tmp = new JSONArray();
+ for (int i = 0; i < count; i++)
+ tmp.Add(Deserialize(aReader));
+ return tmp;
+ }
+ case JSONBinaryTag.Class:
+ {
+ int count = aReader.ReadInt32();
+ JSONClass tmp = new JSONClass();
+ for (int i = 0; i < count; i++)
+ {
+ string key = aReader.ReadString();
+ var val = Deserialize(aReader);
+ tmp.Add(key, val);
+ }
+ return tmp;
+ }
+ case JSONBinaryTag.Value:
+ {
+ return new JSONData(aReader.ReadString());
+ }
+ case JSONBinaryTag.IntValue:
+ {
+ return new JSONData(aReader.ReadInt32());
+ }
+ case JSONBinaryTag.DoubleValue:
+ {
+ return new JSONData(aReader.ReadDouble());
+ }
+ case JSONBinaryTag.BoolValue:
+ {
+ return new JSONData(aReader.ReadBoolean());
+ }
+ case JSONBinaryTag.FloatValue:
+ {
+ return new JSONData(aReader.ReadSingle());
+ }
+
+ default:
+ {
+ throw new Exception("Error deserializing JSON. Unknown tag: " + type);
+ }
+ }
+ }
+
+#if USE_SharpZipLib
+ public static JSONNode LoadFromCompressedStream(System.IO.Stream aData)
+ {
+ var zin = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(aData);
+ return LoadFromStream(zin);
+ }
+ public static JSONNode LoadFromCompressedFile(string aFileName)
+ {
+#if USE_FileIO
+ using(var F = System.IO.File.OpenRead(aFileName))
+ {
+ return LoadFromCompressedStream(F);
+ }
+#else
+ throw new Exception("Can't use File IO stuff in webplayer");
+#endif
+ }
+ public static JSONNode LoadFromCompressedBase64(string aBase64)
+ {
+ var tmp = System.Convert.FromBase64String(aBase64);
+ var stream = new System.IO.MemoryStream(tmp);
+ stream.Position = 0;
+ return LoadFromCompressedStream(stream);
+ }
+#else
+ public static JSONNode LoadFromCompressedFile(string aFileName)
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+
+ public static JSONNode LoadFromCompressedStream(System.IO.Stream aData)
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+
+ public static JSONNode LoadFromCompressedBase64(string aBase64)
+ {
+ throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON");
+ }
+#endif
+
+ public static JSONNode LoadFromStream(System.IO.Stream aData)
+ {
+ using (var R = new System.IO.BinaryReader(aData))
+ {
+ return Deserialize(R);
+ }
+ }
+
+ public static JSONNode LoadFromFile(string aFileName)
+ {
+#if USE_FileIO
+ using (var F = System.IO.File.OpenRead(aFileName))
+ {
+ return LoadFromStream(F);
+ }
+#else
+ throw new Exception ("Can't use File IO stuff in webplayer");
+#endif
+ }
+
+ public static JSONNode LoadFromBase64(string aBase64)
+ {
+ var tmp = System.Convert.FromBase64String(aBase64);
+ var stream = new System.IO.MemoryStream(tmp);
+ stream.Position = 0;
+ return LoadFromStream(stream);
+ }
+ }
+ // End of JSONNode
+
+ public class JSONArray : JSONNode, IEnumerable
+ {
+ private List m_List = new List();
+
+ public override JSONNode this[int aIndex]
+ {
+ get
+ {
+ if (aIndex < 0 || aIndex >= m_List.Count)
+ return new JSONLazyCreator(this);
+ return m_List[aIndex];
+ }
+ set
+ {
+ if (aIndex < 0 || aIndex >= m_List.Count)
+ m_List.Add(value);
+ else
+ m_List[aIndex] = value;
+ }
+ }
+
+ public override JSONNode this[string aKey]
+ {
+ get { return new JSONLazyCreator(this); }
+ set { m_List.Add(value); }
+ }
+
+ public override int Count
+ {
+ get { return m_List.Count; }
+ }
+
+
+ public override void Add(string aKey, JSONNode aItem)
+ {
+ m_List.Add(aItem);
+ }
+
+ public override JSONNode Remove(int aIndex)
+ {
+ if (aIndex < 0 || aIndex >= m_List.Count)
+ return null;
+ JSONNode tmp = m_List[aIndex];
+ m_List.RemoveAt(aIndex);
+ return tmp;
+ }
+
+ public override JSONNode Remove(JSONNode aNode)
+ {
+ m_List.Remove(aNode);
+ return aNode;
+ }
+
+ public override IEnumerable Children
+ {
+ get
+ {
+ foreach (JSONNode N in m_List)
+ yield return N;
+ }
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ foreach (JSONNode N in m_List)
+ yield return N;
+ }
+
+ public override string ToString()
+ {
+ string result = "[ ";
+ foreach (JSONNode N in m_List)
+ {
+ if (result.Length > 2)
+ result += ", ";
+ result += N.ToString();
+ }
+ result += " ]";
+ return result;
+ }
+
+ public override string ToString(string aPrefix)
+ {
+ string result = "[ ";
+ foreach (JSONNode N in m_List)
+ {
+ if (result.Length > 3)
+ result += ", ";
+ result += "\n" + aPrefix + " ";
+ result += N.ToString(aPrefix + " ");
+ }
+ result += "\n" + aPrefix + "]";
+ return result;
+ }
+
+ public override string ToJSON(int prefix)
+ {
+ string s = new string(' ', (prefix + 1) * 2);
+ string ret = "[ ";
+ foreach (JSONNode n in m_List)
+ {
+ if (ret.Length > 3)
+ ret += ", ";
+ ret += "\n" + s;
+ ret += n.ToJSON(prefix + 1);
+
+ }
+ ret += "\n" + s + "]";
+ return ret;
+ }
+
+ public override void Serialize(System.IO.BinaryWriter aWriter)
+ {
+ aWriter.Write((byte)JSONBinaryTag.Array);
+ aWriter.Write(m_List.Count);
+ for (int i = 0; i < m_List.Count; i++)
+ {
+ m_List[i].Serialize(aWriter);
+ }
+ }
+ }
+ // End of JSONArray
+
+ public class JSONClass : JSONNode, IEnumerable
+ {
+ private Dictionary m_Dict = new Dictionary();
+
+ public override JSONNode this[string aKey]
+ {
+ get
+ {
+ if (m_Dict.ContainsKey(aKey))
+ return m_Dict[aKey];
+ else
+ return new JSONLazyCreator(this, aKey);
+ }
+ set
+ {
+ if (m_Dict.ContainsKey(aKey))
+ m_Dict[aKey] = value;
+ else
+ m_Dict.Add(aKey, value);
+ }
+ }
+
+ public override JSONNode this[int aIndex]
+ {
+ get
+ {
+ if (aIndex < 0 || aIndex >= m_Dict.Count)
+ return null;
+ return m_Dict.ElementAt(aIndex).Value;
+ }
+ set
+ {
+ if (aIndex < 0 || aIndex >= m_Dict.Count)
+ return;
+ string key = m_Dict.ElementAt(aIndex).Key;
+ m_Dict[key] = value;
+ }
+ }
+
+ public override int Count
+ {
+ get { return m_Dict.Count; }
+ }
+
+ public override IEnumerable Keys
+ {
+ get
+ {
+ foreach (var key in m_Dict.Keys)
+ yield return key;
+ }
+ }
+
+ public override void Add(string aKey, JSONNode aItem)
+ {
+ if (!string.IsNullOrEmpty(aKey))
+ {
+ if (m_Dict.ContainsKey(aKey))
+ m_Dict[aKey] = aItem;
+ else
+ m_Dict.Add(aKey, aItem);
+ }
+ else
+ m_Dict.Add(Guid.NewGuid().ToString(), aItem);
+ }
+
+ public override JSONNode Remove(string aKey)
+ {
+ if (!m_Dict.ContainsKey(aKey))
+ return null;
+ JSONNode tmp = m_Dict[aKey];
+ m_Dict.Remove(aKey);
+ return tmp;
+ }
+
+ public override JSONNode Remove(int aIndex)
+ {
+ if (aIndex < 0 || aIndex >= m_Dict.Count)
+ return null;
+ var item = m_Dict.ElementAt(aIndex);
+ m_Dict.Remove(item.Key);
+ return item.Value;
+ }
+
+ public override JSONNode Remove(JSONNode aNode)
+ {
+ try
+ {
+ var item = m_Dict.Where(k => k.Value == aNode).First();
+ m_Dict.Remove(item.Key);
+ return aNode;
+ }
+ catch
+ {
+ return null;
+ }
+ }
+
+ public override IEnumerable Children
+ {
+ get
+ {
+ foreach (KeyValuePair N in m_Dict)
+ yield return N.Value;
+ }
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ foreach (KeyValuePair N in m_Dict)
+ yield return N;
+ }
+
+ public override string ToString()
+ {
+ string result = "{";
+ foreach (KeyValuePair N in m_Dict)
+ {
+ if (result.Length > 2)
+ result += ", ";
+ result += "\"" + Escape(N.Key) + "\":" + N.Value.ToString();
+ }
+ result += "}";
+ return result;
+ }
+
+ public override string ToString(string aPrefix)
+ {
+ string result = "{ ";
+ foreach (KeyValuePair N in m_Dict)
+ {
+ if (result.Length > 3)
+ result += ", ";
+ result += "\n" + aPrefix + " ";
+ result += "\"" + Escape(N.Key) + "\" : " + N.Value.ToString(aPrefix + " ");
+ }
+ result += "\n" + aPrefix + "}";
+ return result;
+ }
+
+ public override string ToJSON(int prefix)
+ {
+ string s = new string(' ', (prefix + 1) * 2);
+ string ret = "{ ";
+ foreach (KeyValuePair n in m_Dict)
+ {
+ if (ret.Length > 3)
+ ret += ", ";
+ ret += "\n" + s;
+ ret += string.Format("\"{0}\": {1}", n.Key, n.Value.ToJSON(prefix + 1));
+ }
+ ret += "\n" + s + "}";
+ return ret;
+ }
+
+ public override void Serialize(System.IO.BinaryWriter aWriter)
+ {
+ aWriter.Write((byte)JSONBinaryTag.Class);
+ aWriter.Write(m_Dict.Count);
+ foreach (string K in m_Dict.Keys)
+ {
+ aWriter.Write(K);
+ m_Dict[K].Serialize(aWriter);
+ }
+ }
+ }
+ // End of JSONClass
+
+ public class JSONData : JSONNode
+ {
+ private string m_Data;
+
+
+ public override string Value
+ {
+ get { return m_Data; }
+ set
+ {
+ m_Data = value;
+ Tag = JSONBinaryTag.Value;
+ }
+ }
+
+ public JSONData(string aData)
+ {
+ m_Data = aData;
+ Tag = JSONBinaryTag.Value;
+ }
+
+ public JSONData(float aData)
+ {
+ AsFloat = aData;
+ }
+
+ public JSONData(double aData)
+ {
+ AsDouble = aData;
+ }
+
+ public JSONData(bool aData)
+ {
+ AsBool = aData;
+ }
+
+ public JSONData(int aData)
+ {
+ AsInt = aData;
+ }
+
+ public override string ToString()
+ {
+ return "\"" + Escape(m_Data) + "\"";
+ }
+
+ public override string ToString(string aPrefix)
+ {
+ return "\"" + Escape(m_Data) + "\"";
+ }
+
+ public override string ToJSON(int prefix)
+ {
+ switch (Tag)
+ {
+ case JSONBinaryTag.DoubleValue:
+ case JSONBinaryTag.FloatValue:
+ case JSONBinaryTag.IntValue:
+ return m_Data;
+ case JSONBinaryTag.Value:
+ return string.Format("\"{0}\"", Escape(m_Data));
+ default:
+ throw new NotSupportedException("This shouldn't be here: " + Tag.ToString());
+ }
+ }
+
+ public override void Serialize(System.IO.BinaryWriter aWriter)
+ {
+ var tmp = new JSONData("");
+
+ tmp.AsInt = AsInt;
+ if (tmp.m_Data == this.m_Data)
+ {
+ aWriter.Write((byte)JSONBinaryTag.IntValue);
+ aWriter.Write(AsInt);
+ return;
+ }
+ tmp.AsFloat = AsFloat;
+ if (tmp.m_Data == this.m_Data)
+ {
+ aWriter.Write((byte)JSONBinaryTag.FloatValue);
+ aWriter.Write(AsFloat);
+ return;
+ }
+ tmp.AsDouble = AsDouble;
+ if (tmp.m_Data == this.m_Data)
+ {
+ aWriter.Write((byte)JSONBinaryTag.DoubleValue);
+ aWriter.Write(AsDouble);
+ return;
+ }
+
+ tmp.AsBool = AsBool;
+ if (tmp.m_Data == this.m_Data)
+ {
+ aWriter.Write((byte)JSONBinaryTag.BoolValue);
+ aWriter.Write(AsBool);
+ return;
+ }
+ aWriter.Write((byte)JSONBinaryTag.Value);
+ aWriter.Write(m_Data);
+ }
+ }
+ // End of JSONData
+
+ internal class JSONLazyCreator : JSONNode
+ {
+ private JSONNode m_Node = null;
+ private string m_Key = null;
+
+ public JSONLazyCreator(JSONNode aNode)
+ {
+ m_Node = aNode;
+ m_Key = null;
+ }
+
+ public JSONLazyCreator(JSONNode aNode, string aKey)
+ {
+ m_Node = aNode;
+ m_Key = aKey;
+ }
+
+ private void Set(JSONNode aVal)
+ {
+ if (m_Key == null)
+ {
+ m_Node.Add(aVal);
+ }
+ else
+ {
+ m_Node.Add(m_Key, aVal);
+ }
+ m_Node = null; // Be GC friendly.
+ }
+
+ public override JSONNode this[int aIndex]
+ {
+ get
+ {
+ return new JSONLazyCreator(this);
+ }
+ set
+ {
+ var tmp = new JSONArray();
+ tmp.Add(value);
+ Set(tmp);
+ }
+ }
+
+ public override JSONNode this[string aKey]
+ {
+ get
+ {
+ return new JSONLazyCreator(this, aKey);
+ }
+ set
+ {
+ var tmp = new JSONClass();
+ tmp.Add(aKey, value);
+ Set(tmp);
+ }
+ }
+
+ public override void Add(JSONNode aItem)
+ {
+ var tmp = new JSONArray();
+ tmp.Add(aItem);
+ Set(tmp);
+ }
+
+ public override void Add(string aKey, JSONNode aItem)
+ {
+ var tmp = new JSONClass();
+ tmp.Add(aKey, aItem);
+ Set(tmp);
+ }
+
+ public static bool operator ==(JSONLazyCreator a, object b)
+ {
+ if (b == null)
+ return true;
+ return System.Object.ReferenceEquals(a, b);
+ }
+
+ public static bool operator !=(JSONLazyCreator a, object b)
+ {
+ return !(a == b);
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (obj == null)
+ return true;
+ return System.Object.ReferenceEquals(this, obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return "";
+ }
+
+ public override string ToString(string aPrefix)
+ {
+ return "";
+ }
+
+ public override string ToJSON(int prefix)
+ {
+ return "";
+ }
+
+ public override int AsInt
+ {
+ get
+ {
+ JSONData tmp = new JSONData(0);
+ Set(tmp);
+ return 0;
+ }
+ set
+ {
+ JSONData tmp = new JSONData(value);
+ Set(tmp);
+ }
+ }
+
+ public override float AsFloat
+ {
+ get
+ {
+ JSONData tmp = new JSONData(0.0f);
+ Set(tmp);
+ return 0.0f;
+ }
+ set
+ {
+ JSONData tmp = new JSONData(value);
+ Set(tmp);
+ }
+ }
+
+ public override double AsDouble
+ {
+ get
+ {
+ JSONData tmp = new JSONData(0.0);
+ Set(tmp);
+ return 0.0;
+ }
+ set
+ {
+ JSONData tmp = new JSONData(value);
+ Set(tmp);
+ }
+ }
+
+ public override bool AsBool
+ {
+ get
+ {
+ JSONData tmp = new JSONData(false);
+ Set(tmp);
+ return false;
+ }
+ set
+ {
+ JSONData tmp = new JSONData(value);
+ Set(tmp);
+ }
+ }
+
+ public override JSONArray AsArray
+ {
+ get
+ {
+ JSONArray tmp = new JSONArray();
+ Set(tmp);
+ return tmp;
+ }
+ }
+
+ public override JSONClass AsObject
+ {
+ get
+ {
+ JSONClass tmp = new JSONClass();
+ Set(tmp);
+ return tmp;
+ }
+ }
+ }
+ // End of JSONLazyCreator
+
+ public static class JSON
+ {
+ public static JSONNode Parse(string aJSON)
+ {
+ return JSONNode.Parse(aJSON);
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs.meta
new file mode 100644
index 00000000..17262b97
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/SimpleJSON.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bab049b40eb88164b86c54bb97dbeed8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll
new file mode 100644
index 00000000..403794ee
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll.meta
new file mode 100644
index 00000000..0570c2fb
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Plugins/websocket-sharp.dll.meta
@@ -0,0 +1,30 @@
+fileFormatVersion: 2
+guid: a2c7abb4051cbea48abadc2b11be5774
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts.meta
new file mode 100644
index 00000000..22493913
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 796d928ac41543d49aa3357a6ce7dcf0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs
new file mode 100644
index 00000000..f0245ee3
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs
@@ -0,0 +1,55 @@
+using System;
+using UnityEditor;
+using UnityEngine;
+
+namespace Alg
+{
+ public class ItemSelectorWindow : EditorWindow
+ {
+ public event EventHandler EntrySelected;
+
+ private string _description;
+ private string[] _entries;
+
+ public static void ShowSelect(string title, string description, string[] entries, Action callback)
+ {
+ ItemSelectorWindow window = EditorWindow.GetWindow(typeof(ItemSelectorWindow), true, title) as ItemSelectorWindow;
+ window._description = description;
+ window._entries = entries;
+ window.EntrySelected += (o, e) => callback(e.Index);
+ window.ShowPopup();
+ }
+
+ void OnGUI()
+ {
+ GUILayout.Label(_description);
+ for (int i = 0; i < _entries.Length; ++i)
+ {
+ if (GUILayout.Button(_entries[i]))
+ {
+ OnEntrySelected(new EntrySelectedEventArgs() { Index = i });
+ Close();
+ }
+ }
+ EditorGUILayout.Space();
+ if (GUILayout.Button("Cancel"))
+ {
+ Close();
+ }
+ }
+
+ private void OnEntrySelected(EntrySelectedEventArgs e)
+ {
+ EventHandler handler = EntrySelected;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ }
+
+ public class EntrySelectedEventArgs : EventArgs
+ {
+ public int Index { get; set; }
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs.meta
new file mode 100644
index 00000000..5b825831
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ItemSelectorWindow.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c4c1058437af77a4da814b7322cd1a0a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs
new file mode 100644
index 00000000..52a071c2
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs
@@ -0,0 +1,97 @@
+using AlgSimpleJSON;
+using UnityEditor;
+using UnityEngine;
+
+namespace Alg
+{
+ public class TexturePostProcessor : AssetPostprocessor
+ {
+ void OnPreprocessTexture()
+ {
+ if (!assetPath.StartsWith("Assets/SP_Textures", System.StringComparison.InvariantCultureIgnoreCase)) return;
+
+ TextureImporter importer = assetImporter as TextureImporter;
+ importer.textureCompression = TextureImporterCompression.Uncompressed;
+ importer.textureType = assetPath.Contains("_Normal.") ?
+ TextureImporterType.NormalMap :
+ TextureImporterType.Default;
+ }
+ }
+
+ public class MaterialPropertiesManipulation
+ {
+ private static bool SetMaterialTexture(Material material, string property, JSONNode valueNode)
+ {
+ JSONData data = valueNode as JSONData;
+ if (data == null) return false;
+
+ string mapPath = data.Value;
+
+ // Load the texture property
+ AssetDatabase.ImportAsset(mapPath);
+ Texture2D texture = AssetDatabase.LoadAssetAtPath(mapPath, typeof(Texture2D)) as Texture2D;
+ if (!texture)
+ {
+ Debug.LogWarning(string.Format("Map path '{0}' is not a valid image path", mapPath));
+ }
+
+ material.SetTexture(property, texture);
+ return texture != null;
+ }
+
+ private static bool CheckMaterialProperty(Material material, string property, out int propertyIndex)
+ {
+ propertyIndex = -1;
+ // Check parameter validity
+ ShaderInfos shaderInfos = ShadersInfos.GetShaderInfos(material.shader);
+ if (shaderInfos == null || !shaderInfos.PropertiesAssociation.ContainsValue(property))
+ {
+ Debug.LogWarning(string.Format("Unknown '{0}' parameter in shader {1}", property, material.shader.name));
+ return false;
+ }
+ int propertyCount = ShaderUtil.GetPropertyCount(material.shader);
+ for (int i = 0; i < propertyCount; ++i)
+ {
+ if (ShaderUtil.GetPropertyName(material.shader, i).Equals(property))
+ {
+ propertyIndex = i;
+ return true;
+ }
+ }
+ Debug.LogWarning(string.Format("Material '{0}' doesn't contain '{1}' property", AssetDatabase.GetAssetPath(material), property));
+ return false;
+ }
+
+ public static bool SetMaterialParam(Material material, string property, JSONNode valueNode)
+ {
+ int propertyIndex;
+ if (!CheckMaterialProperty(material, property, out propertyIndex)) return false;
+
+ // Set the property value
+ bool succeed = false;
+ ShaderUtil.ShaderPropertyType type = ShaderUtil.GetPropertyType(material.shader, propertyIndex);
+ switch (type)
+ {
+ case ShaderUtil.ShaderPropertyType.TexEnv: succeed = SetMaterialTexture(material, property, valueNode); break;
+ default:
+ Debug.LogWarning(string.Format("{0} property exchange not implemented", type.ToString()));
+ break;
+ }
+
+ if (!succeed)
+ {
+ Debug.LogWarning(string.Format("Failed to load property '{0}' value of type {1} on material {2}: {3}", property, type.ToString(), AssetDatabase.GetAssetPath(material), valueNode.Value));
+ }
+ else
+ {
+ // Apply property changed post process
+ ShaderInfos shaderInfos = ShadersInfos.GetShaderInfos(material.shader);
+ if (shaderInfos.PostProcesses.ContainsKey(property))
+ {
+ shaderInfos.PostProcesses[property](material, valueNode);
+ }
+ }
+ return succeed;
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs.meta
new file mode 100644
index 00000000..fc0447ea
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialPropertiesManipulation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 05018250ea88c154a8d9c13cc028bf79
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs
new file mode 100644
index 00000000..c01ab283
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs
@@ -0,0 +1,123 @@
+using AlgSimpleJSON;
+using UnityEditor;
+using UnityEngine;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Alg
+{
+ public class MeshInfo
+ {
+ private List materials_ = new List();
+
+ public string AssetPath
+ {
+ get;
+ set;
+ }
+
+ public int Identifier
+ {
+ get;
+ set;
+ }
+
+ public IEnumerable Materials
+ {
+ get { return materials_; }
+ }
+
+ public void AddMaterials(Material[] materials)
+ {
+ materials_.AddRange(materials);
+ }
+ }
+
+ public class MaterialsManipulation
+ {
+ public static MeshInfo[] MeshesInfoFromGameObject(GameObject gameObject)
+ {
+ // Associate all renderers and materials to an asset
+ // An asset is composed of at least one Mesh
+ // It will fail if one asset is rendered multiple times in the game object hierarchy
+ Dictionary meshesInfo = new Dictionary();
+ foreach (Renderer rendererCandidate in gameObject.GetComponentsInChildren())
+ {
+ Mesh foundMesh = null;
+ if (rendererCandidate is MeshRenderer)
+ {
+ // A MeshRenderer defines materials to apply on a Mesh
+ // It implies there is a MeshFilter on the same GameObject referencing the Mesh
+ MeshFilter meshFilter = rendererCandidate.GetComponent();
+ if (meshFilter != null)
+ {
+ foundMesh = meshFilter.sharedMesh;
+ }
+ }
+ if (rendererCandidate is SkinnedMeshRenderer)
+ {
+ // A SkinnedMeshRenderer defines materials to apply on a Mesh and references it
+ foundMesh = ((SkinnedMeshRenderer)rendererCandidate).sharedMesh;
+ }
+ if (foundMesh == null) continue;
+
+ string assetPath = AssetDatabase.GetAssetPath(foundMesh);
+ Material[] materials = rendererCandidate.sharedMaterials.ToList()
+ .Where(m => m != null && ShadersInfos.ContainsShader(m.shader))
+ .ToArray();
+ if (materials.Length == 0) continue;
+
+ if (!meshesInfo.ContainsKey(assetPath))
+ {
+ meshesInfo.Add(assetPath, new MeshInfo { AssetPath = assetPath });
+ }
+ meshesInfo[assetPath].AddMaterials(materials);
+ meshesInfo[assetPath].Identifier = gameObject.GetInstanceID();
+ }
+ return meshesInfo.Values.ToArray();
+ }
+
+ private static Material ResolveMaterial(string materialPath)
+ {
+ Material material = AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)) as Material;
+ if (!material)
+ {
+ Debug.LogWarning(string.Format("Received loading material parameter request on unknown '{0}' material", materialPath));
+ }
+ return material;
+ }
+
+ public static string SanitizeMaterialName(string materialName)
+ {
+ // Default material name (if can't be retrieved from mesh) isn't the same
+ if (materialName.Equals("No Name"))
+ {
+ materialName = "DefaultMaterial";
+ }
+
+ // HACK: Sanitize the name the same way SP internally do it
+ return System.Text.RegularExpressions.Regex.Replace(materialName, @"[\\/#]", "_");
+ }
+
+ public static void SetMaterialParamsCommand(JSONNode jsonData)
+ {
+ JSONClass parameters = jsonData["params"] as JSONClass;
+ Material material = ResolveMaterial(jsonData["material"].Value);
+ if (!material) return;
+
+ // Load each parameter
+ foreach (string parameterName in parameters.Keys)
+ {
+ MaterialPropertiesManipulation.SetMaterialParam(material, parameterName, parameters[parameterName]);
+ }
+ }
+
+ public static MeshInfo[] GetSelectedMeshesInfo()
+ {
+ return Selection.gameObjects
+ .ToList()
+ .SelectMany(go => MeshesInfoFromGameObject(go))
+ .ToArray();
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs.meta
new file mode 100644
index 00000000..47372b48
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MaterialsManipulation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ee8320fb541b9a4db464b3cf96376c7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs
new file mode 100644
index 00000000..553f188c
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs
@@ -0,0 +1,267 @@
+using UnityEngine;
+using UnityEditor;
+using AlgSimpleJSON;
+using System.IO;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Alg
+{
+ /* Allows to edit a mesh materials inside Substance Painter by using a persistent connection between both programs
+ *
+ * The connection is based on a WebSocket connection with a simple command protocol: "[COMMAND KEY] [JSON DATA]"
+ * List of commands to which this plugin is able to answer:
+ * - SET_MATERIAL_PARAMS: Set the parameters values of a specific material
+ * - OPENED_PROJECT_INFO: Receive information from current opened project in Painter (project url and unity link identifier)
+ */
+ [InitializeOnLoad]
+ public class MeshLinkEditor
+ {
+ private static Stack messages = new Stack(); // Message queue to be treated in main thread
+ private static WebSocketSharp.WebSocket webSocket; // Current connection
+
+ // Static constructor
+ static MeshLinkEditor()
+ {
+ Application.runInBackground = true; // Update even if the window haven't the focus
+ EditorApplication.update += HandleMessagesQueue;
+
+ // Try auto connection to Substance Painter:
+ // - ask information on project opened in Painter
+ // - if this match a game object of the Unity project; try to auto connect it
+ AskForProjectInfo();
+ }
+
+ private static void HandleMessagesQueue()
+ {
+ lock (messages)
+ {
+ while (messages.Count > 0)
+ {
+ // Parse string to extract data with format: "[COMMAND KEY] [JSON DATA]"
+ string message = messages.Pop();
+ int separator = message.IndexOf(' ');
+ string command = message.Substring(0, separator);
+ string jsonString = message.Substring(separator + 1);
+ JSONNode node = JSON.Parse(jsonString);
+
+ switch (command.ToUpper())
+ {
+ case "SET_MATERIAL_PARAMS":
+ MaterialsManipulation.SetMaterialParamsCommand(node);
+ UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+ break;
+ case "OPENED_PROJECT_INFO":
+ TryConnectToProject(node);
+ break;
+ default:
+ Debug.LogError(string.Format("Unknown command {0}", command));
+ break;
+ }
+ }
+ }
+ }
+
+ private static void ConnectSocket()
+ {
+ // Close previous connection if needed
+ if (webSocket != null)
+ {
+ webSocket.Close();
+ webSocket = null;
+ }
+
+ // Connect to Substance Painter
+ webSocket = new WebSocketSharp.WebSocket("ws://localhost:6404");
+ webSocket.OnMessage += (sender, e) =>
+ {
+ lock (messages)
+ {
+ messages.Push(e.Data);
+ }
+ };
+ webSocket.Connect();
+ }
+
+ private static string GetSpProjectPath(MeshInfo meshInfo)
+ {
+ string meshName = Path.GetFileNameWithoutExtension(meshInfo.AssetPath);
+ string meshPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Application.dataPath), meshInfo.AssetPath).ToString());
+ string folderPath = Path.GetDirectoryName(meshPath);
+
+ // Put Substance Painter projects in a folder name started with '.' to hide it from the Unity asset browser
+ return Path.Combine(Path.Combine(folderPath, ".sp"), meshName + ".spp");
+ }
+
+ private static JSONNode GetSpDataLinkToSend(MeshInfo meshInfo, string substancePainterProjectPath)
+ {
+ // Prepare data to send to SP
+ string workspacePath = Path.GetDirectoryName(Application.dataPath);
+ string meshPath = Path.GetFullPath(Path.Combine(workspacePath, meshInfo.AssetPath).ToString());
+ string exportPath = Path.Combine(Path.Combine("Assets", "SP_Textures"), Path.GetFileNameWithoutExtension(meshInfo.AssetPath)).ToString();
+ string meshUri = new System.Uri(meshPath).AbsoluteUri;
+
+ JSONClass materialsLink = new JSONClass();
+ foreach (Material material in meshInfo.Materials)
+ {
+ ShaderInfos shaderInfos = ShadersInfos.GetShaderInfos(material.shader);
+ JSONClass propertiesAssociation = new JSONClass();
+ foreach (string propertyName in shaderInfos.PropertiesAssociation.Keys)
+ {
+ propertiesAssociation.Add(propertyName, new JSONData(shaderInfos.PropertiesAssociation[propertyName]));
+ }
+
+ JSONClass materialLink = new JSONClass();
+ materialLink.Add("assetPath", AssetDatabase.GetAssetPath(material));
+ materialLink.Add("exportPreset", shaderInfos.ExportPreset);
+ materialLink.Add("resourceShader", shaderInfos.ResourceShader);
+ materialLink.Add("spToLiveLinkProperties", propertiesAssociation);
+
+ // HACK: Sanitize the name the same way SP internally do it
+ string sanitizedName = MaterialsManipulation.SanitizeMaterialName(material.name);
+ materialsLink.Add(sanitizedName, materialLink);
+ }
+
+ JSONClass project = new JSONClass();
+ project.Add("meshUrl", new JSONData(meshUri));
+ project.Add("normal", new JSONData("OpenGL"));
+ project.Add("template", new JSONData(""));
+ project.Add("url", new JSONData(new System.Uri(substancePainterProjectPath).AbsoluteUri));
+
+ JSONClass jsonData = new JSONClass();
+ jsonData.Add("applicationName", new JSONData("Unity"));
+ jsonData.Add("exportPath", new JSONData(exportPath));
+ jsonData.Add("workspacePath", new JSONData(workspacePath));
+ jsonData.Add("materials", materialsLink);
+ jsonData.Add("project", project);
+ jsonData.Add("linkIdentifier", new JSONData(meshInfo.Identifier));
+
+ return jsonData;
+ }
+
+ private static void OpenSpProject(MeshInfo meshInfo, string substancePainterProjectPath)
+ {
+ JSONNode jsonData = GetSpDataLinkToSend(meshInfo, substancePainterProjectPath);
+ webSocket.Send(string.Format("{0} {1}", "OPEN_PROJECT", jsonData.ToString()));
+ }
+
+ private static void CreateSpProject(MeshInfo meshInfo, string substancePainterProjectPath)
+ {
+ JSONNode jsonData = GetSpDataLinkToSend(meshInfo, substancePainterProjectPath);
+ webSocket.Send(string.Format("{0} {1}", "CREATE_PROJECT", jsonData.ToString()));
+ }
+
+ private static void SendMeshToSP(MeshInfo meshInfo)
+ {
+ if (!webSocket.IsAlive)
+ {
+ ConnectSocket();
+ }
+ if (!webSocket.IsAlive || !webSocket.Ping())
+ {
+ EditorUtility.DisplayDialog(
+ "Send to Substance Painter",
+ "Substance Painter is not detected.\n" +
+ "Please check if Substance Painter is correctly started and if the \"unity-link\" plugin is enabled.", "OK");
+ return;
+ }
+
+ // Ensure compatibility
+ foreach (Material material in meshInfo.Materials)
+ {
+ if (ShadersInfos.ContainsShader(material.shader))
+ {
+ ShadersInfos.GetShaderInfos(material.shader).EnsureMaterialCompatibility(material);
+ }
+ }
+
+ // Check if a project already exist
+ string substancePainterProjectPath = GetSpProjectPath(meshInfo);
+
+ if (File.Exists(substancePainterProjectPath))
+ {
+ // If the project exists, open it then reimport the mesh
+ Debug.Log(string.Format("Reopening Substance Painter project located at {0}", substancePainterProjectPath));
+ OpenSpProject(meshInfo, substancePainterProjectPath);
+ }
+ else
+ {
+ // If the project doesn't exist, create a new one and save it here
+ Debug.Log(string.Format("Creating a new Substance Painter project located at {0}", substancePainterProjectPath));
+ CreateSpProject(meshInfo, substancePainterProjectPath);
+ }
+ }
+
+ private static void TryConnectToProject(JSONNode jsonData)
+ {
+ JSONClass projectInfo = jsonData as JSONClass;
+ string projectUrl = new System.Uri(projectInfo["projectUrl"].Value).AbsoluteUri;
+ int instanceId = projectInfo["linkIdentifier"].AsInt;
+
+ GameObject gameObject = EditorUtility.InstanceIDToObject(instanceId) as GameObject;
+ // Check if the game object exists
+ if (!gameObject) return;
+ MeshInfo[] meshesInfo = MaterialsManipulation.MeshesInfoFromGameObject(gameObject);
+
+ // Check the game object only matches one mesh info
+ if (meshesInfo.Length != 1) return;
+ MeshInfo meshInfo = meshesInfo[0];
+
+ // Check that the project url matches
+ string substancePainterProjectPath = GetSpProjectPath(meshInfo);
+ string gameObjectProjectUrl = new System.Uri(substancePainterProjectPath).AbsoluteUri;
+ if (projectUrl != gameObjectProjectUrl) return;
+
+ // If it matches; link both applications
+ SendMeshToSP(meshInfo);
+ }
+
+ private static void AskForProjectInfo()
+ {
+ ConnectSocket();
+ if (!webSocket.IsAlive || !webSocket.Ping()) return;
+ webSocket.Send(string.Format("{0} {1}", "SEND_PROJECT_INFO", "{}"));
+ }
+
+ const string SendAssetMenuPath = "Assets/Send to Substance Painter";
+ const string SendGameObjectMenuPath = "GameObject/Send to Substance Painter";
+
+ [MenuItem(SendAssetMenuPath)]
+ [MenuItem(SendGameObjectMenuPath, false, 20)]
+ private static void SendAssetToSP()
+ {
+ // Get the currently selected mesh game object
+ MeshInfo[] meshesInfo = MaterialsManipulation.GetSelectedMeshesInfo();
+ switch (meshesInfo.Length)
+ {
+ case 0:
+ EditorUtility.DisplayDialog("Substance Painter",
+ "You need to select one compatible mesh game object in the scene hierarchy respecting prerequisites:\n" +
+ "- the mesh must be an fbx file imported in project assets\n" +
+ "- materials must use the 'Standard' shader\n" +
+ "- materials names must be the default ones (as defined in the mesh)", "OK");
+ break;
+ case 1:
+ SendMeshToSP(meshesInfo[0]);
+ break;
+ default:
+ ItemSelectorWindow.ShowSelect(
+ "Send to Substance Painter",
+ "Select the mesh to send to Substance Painter",
+ meshesInfo.ToList().Select(info => info.AssetPath).ToArray(),
+ index => SendMeshToSP(meshesInfo[index]));
+ break;
+ }
+ }
+
+ [MenuItem(SendAssetMenuPath, true)]
+ // Disable the verification for GameObject menu entry as it doesn't work
+ // on game objects contextual menu
+ // Instead, pop a dialog to alert on prerequisites to follow
+ // [MenuItem(SendGameObjectMenuPath, true)]
+ private static bool ValidateSendAssetToSP()
+ {
+ return MaterialsManipulation.GetSelectedMeshesInfo().Length > 0;
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs.meta
new file mode 100644
index 00000000..e9b16673
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/MeshLinkEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8f113e93bdf7fb542b1cd20b6fc22506
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs
new file mode 100644
index 00000000..581fe1f4
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs
@@ -0,0 +1,69 @@
+using AlgSimpleJSON;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Alg
+{
+ public class ShaderInfos
+ {
+ public delegate void MaterialModifier(Material material);
+ public delegate void PropertyChangedPostProcess(Material material, JSONNode json);
+
+ public string ResourceShader { get; set; }
+ public string ExportPreset { get; set; }
+ public Dictionary PropertiesAssociation { get; set; }
+ public Dictionary PostProcesses { get; set; }
+ public MaterialModifier EnsureMaterialCompatibility { get; set; }
+ }
+
+ public class ShadersInfos
+ {
+ private static Dictionary shadersInfos = new Dictionary()
+ {
+ {
+ "Standard",
+ new ShaderInfos()
+ {
+ ResourceShader = "pbr-metal-rough-with-alpha-blending",
+ ExportPreset = "Unity 5 (Standard Metallic)",
+ PropertiesAssociation = new Dictionary() {
+ // Associate texture name
+ { "$mesh_$textureSet_AlbedoTransparency", "_MainTex" },
+ { "$mesh_$textureSet_Emission", "_EmissionMap" },
+ { "$mesh_$textureSet_MetallicSmoothness", "_MetallicGlossMap" },
+ { "$mesh_$textureSet_Normal", "_BumpMap" }
+ },
+ PostProcesses = new Dictionary() {
+ // https://docs.unity3d.com/Manual/MaterialsAccessingViaScript.html
+ { "_BumpMap", (m, d) => m.EnableKeyword("_NORMALMAP") },
+ { "_EmissionMap", (m, d) => {
+ m.EnableKeyword("_EMISSION");
+ m.SetColor("_EmissionColor", new Color(1.0f, 1.0f, 1.0f)); // Emission modulation
+ } },
+ { "_MetallicGlossMap", (m, d) => m.EnableKeyword("_METALLICGLOSSMAP") }
+ },
+ EnsureMaterialCompatibility = m =>
+ {
+ m.SetColor("_Color", new Color(1.0f, 1.0f, 1.0f)); // Albedo modulation https://support.allegorithmic.com/documentation/display/SPDOC/Unity+5
+ m.SetColor("_EmissionColor", new Color(0.0f, 0.0f, 0.0f)); // Emission modulation
+ m.SetFloat("_GlossMapScale", 1.0f); // Smoothness modulation
+ m.SetFloat("_OcclusionStrength", 1.0f); // Occlusion modulation
+ m.SetFloat("_SmoothnessTextureChannel", 0); // Set smoothness source to 'Metallic Alpha'
+ }
+ }
+ }
+ };
+
+ public static bool ContainsShader(Shader shader)
+ {
+ return shadersInfos.ContainsKey(shader.name);
+ }
+
+ public static ShaderInfos GetShaderInfos(Shader shader)
+ {
+ ShaderInfos info;
+ shadersInfos.TryGetValue(shader.name, out info);
+ return info;
+ }
+ }
+}
diff --git a/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs.meta b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs.meta
new file mode 100644
index 00000000..fc29ae1c
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Livelink/Editor/Scripts/ShadersInfos.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8f205243b7453c74497fb29e858e044c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine.meta
new file mode 100644
index 00000000..11bd0d2d
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d25a62bcd306ea84e9f28c6413651822
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor.meta
new file mode 100644
index 00000000..f041b998
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3f4726f12049952419f4c64c5258b0c5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png
new file mode 100644
index 00000000..dbbc07fc
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png.meta
new file mode 100644
index 00000000..fa695657
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/MainObject.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: aafe557eeb7160a47b641dd1dd1c22e5
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll
new file mode 100644
index 00000000..8845a34e
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll.meta
new file mode 100644
index 00000000..3bc9db74
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.Editor.dll.meta
@@ -0,0 +1,30 @@
+fileFormatVersion: 2
+guid: 43a8bbf65be290d44ba52b94476242b9
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png
new file mode 100644
index 00000000..dbbc07fc
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png.meta
new file mode 100644
index 00000000..e4c9b577
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/Substance.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 81def6dcc24154146add82fca73ae837
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png
new file mode 100644
index 00000000..53dc5723
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png.meta
new file mode 100644
index 00000000..47fb995d
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph-32.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: b0e4389d9170e77479cb7545d317f1e4
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png
new file mode 100644
index 00000000..fec8cb84
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png.meta
new file mode 100644
index 00000000..4a5f0340
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Engine/Editor/SubstanceGraph.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 1d780aa7bd5a4144585c5c043852fb89
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source.meta
new file mode 100644
index 00000000..804506a8
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6e43e01345f9d0d4c8bb26a83cb9beba
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor.meta
new file mode 100644
index 00000000..f2825053
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e48b97b89cd16844a85cb4d8e537cb30
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images.meta
new file mode 100644
index 00000000..823c01bb
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 253d23284e6c477408f8cdf8dda32bbc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png
new file mode 100644
index 00000000..baaf654f
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png.meta
new file mode 100644
index 00000000..d52c9d10
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AssetDownload.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: c8bd96180fd19c7409d3943be6056510
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png
new file mode 100644
index 00000000..1f887157
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png.meta
new file mode 100644
index 00000000..06dd3f87
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/AvailableDownloads.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: bc33cf74971b4fc42981222e41058b7a
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png
new file mode 100644
index 00000000..d8cb7582
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png.meta
new file mode 100644
index 00000000..2b93cbe9
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/DetailExitButton.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 6996eeabde665004d88d70b5568b4871
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png
new file mode 100644
index 00000000..4b82a630
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png.meta
new file mode 100644
index 00000000..5368acf4
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LoginButton.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 8cb8c80042f563747a21fc7805c2081f
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png
new file mode 100644
index 00000000..9ac9724f
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png.meta
new file mode 100644
index 00000000..e3a31093
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/LogoutButton.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: e2f50db9f5a99a64eae92453b16d36a2
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png
new file mode 100644
index 00000000..fc1b3cfb
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png.meta
new file mode 100644
index 00000000..7add0c97
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MagnifyingGlass.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 9727ecbd18d8c2a4eb19cf9452ee2209
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png
new file mode 100644
index 00000000..ad021e0a
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png.meta
new file mode 100644
index 00000000..7d9232fd
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/MyAssetsButton.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 7249a3cd9feb57c4798cffecd1c0757b
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png
new file mode 100644
index 00000000..244edb82
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png.meta
new file mode 100644
index 00000000..a8db9c2e
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/Source.Icon.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 37b7a7d50220e1240a9c03e40ef0b20b
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png
new file mode 100644
index 00000000..59aba8e3
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png.meta
new file mode 100644
index 00000000..98f1be64
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/SubstanceSourceLoading.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 439d59c05579e8a4381e9b67a11d2fd0
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png
new file mode 100644
index 00000000..4ab4797b
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png.meta
new file mode 100644
index 00000000..307af125
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/download.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 22d1317c0c2f3d748862934cf49c7853
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png
new file mode 100644
index 00000000..8ea87d81
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png.meta
new file mode 100644
index 00000000..8be330bb
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/free.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 23d1a0e45c5c0334da1c4d4bed1f7614
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png
new file mode 100644
index 00000000..7e576768
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png.meta
new file mode 100644
index 00000000..4fe4442b
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/leftarrow.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: bc8465860fe0b894e931e0108944a9ca
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png
new file mode 100644
index 00000000..f32235ce
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png.meta
new file mode 100644
index 00000000..fd74c081
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/library.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 377d40e6ada35ef499b5019be79d0335
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png
new file mode 100644
index 00000000..5714b9a4
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png.meta
new file mode 100644
index 00000000..58154c18
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-substance.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 306d832c617e24b4ea77ee8d10ba0be3
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png
new file mode 100644
index 00000000..85924436
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png.meta
new file mode 100644
index 00000000..7f2486b2
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/logo-white.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: f560c6c6f0f366344ae48c963555f44c
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png
new file mode 100644
index 00000000..2ae3c8fa
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png.meta
new file mode 100644
index 00000000..3e50a42b
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/new.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 32398645afbcdb04da696cc9872c8dc6
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png
new file mode 100644
index 00000000..f00da085
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png.meta
new file mode 100644
index 00000000..6ed0caa6
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/rightarrow.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 5f1c30aeb31461d43a461b1f087b03b7
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png
new file mode 100644
index 00000000..1d62e4d1
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png.meta
new file mode 100644
index 00000000..b684fa92
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/Images/spinner.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 3c71e535d14fda04aa8c51cc3627bb29
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 7
+ 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/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll
new file mode 100644
index 00000000..ff9ade03
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll.meta
new file mode 100644
index 00000000..f4f1a064
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceInterfacex64.dll.meta
@@ -0,0 +1,24 @@
+fileFormatVersion: 2
+guid: 28c31b01366243a449d2ae3be6ed1b91
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll
new file mode 100644
index 00000000..7ec1c62a
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll.meta
new file mode 100644
index 00000000..f95b9e6a
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/SourceUnityLib.dll.meta
@@ -0,0 +1,30 @@
+fileFormatVersion: 2
+guid: 65c7e91e1e95bd641ac5e20cf437098a
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib
new file mode 100644
index 00000000..4f220ed8
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib.meta b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib.meta
new file mode 100644
index 00000000..81a9e371
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/Substance Source/Editor/libSourceInterfacex64.dylib.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a49b86618993b764f8c5a6eee502ae54
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS.meta b/Assets/Allegorithmic/Plugins/Substance/iOS.meta
new file mode 100644
index 00000000..26d3ae73
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4ee62c5f212bfe5459c844b0b3835b52
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a
new file mode 100644
index 00000000..570c7907
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a.meta
new file mode 100644
index 00000000..8875a6ed
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libSubstance.Engine.a.meta
@@ -0,0 +1,102 @@
+fileFormatVersion: 2
+guid: 07ad2ab8f6a1472449a018502e2eb5e4
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a
new file mode 100644
index 00000000..2d17bd4c
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a.meta
new file mode 100644
index 00000000..4f860d92
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libalgcompression.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: 420875c44d7538f4f865319a529fcd95
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a
new file mode 100644
index 00000000..9fcde07d
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a.meta
new file mode 100644
index 00000000..82b3874c
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libpfxlinkercommon.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: 5f788bb09927ca945b986ec5d0210f39
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a
new file mode 100644
index 00000000..8786c8fd
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a.meta
new file mode 100644
index 00000000..f080eb9b
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_framework.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: 87bbb6c42a3069344bad413b656484c6
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a
new file mode 100644
index 00000000..fed8f80e
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a.meta
new file mode 100644
index 00000000..1444f988
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_linker.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: 4f0d78a6bc6293f4cbefeba20637347d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a
new file mode 100644
index 00000000..4f7a30b7
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a.meta
new file mode 100644
index 00000000..3a032a2f
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libsubstance_neon_blend.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: fac69496faf1a9340b901ab814ea620e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a b/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a
new file mode 100644
index 00000000..338d1ef1
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a differ
diff --git a/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a.meta b/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a.meta
new file mode 100644
index 00000000..db3f0c12
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/Substance/iOS/libtinyxml.a.meta
@@ -0,0 +1,91 @@
+fileFormatVersion: 2
+guid: c6fd2854b42b7ad4a9c691099186720f
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux: 1
+ Exclude Linux64: 1
+ Exclude LinuxUniversal: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 0
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Facebook: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Facebook: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: LinuxUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/engine_build_info.txt b/Assets/Allegorithmic/Plugins/engine_build_info.txt
new file mode 100644
index 00000000..c5fe101b
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/engine_build_info.txt
@@ -0,0 +1,4 @@
+Build Number: 118
+Commit Hash: 2b1f4be3a8d28d44dc5ce59eff39c91144368d60
+Plugin Commit : 6692
+Plugin Build : A11
diff --git a/Assets/Allegorithmic/Plugins/engine_build_info.txt.meta b/Assets/Allegorithmic/Plugins/engine_build_info.txt.meta
new file mode 100644
index 00000000..117740ec
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/engine_build_info.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9a776e087f0eaef46a575b9638d36f3b
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle b/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle
new file mode 100644
index 00000000..13f9b45e
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle differ
diff --git a/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle.meta b/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle.meta
new file mode 100644
index 00000000..179a6231
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/libsubstance_sse2_blend.bundle.meta
@@ -0,0 +1,39 @@
+fileFormatVersion: 2
+guid: 6b8c054bbe253484a94af93e599c4f1f
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ '': OSXIntel
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ '': OSXIntel64
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll b/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll
new file mode 100644
index 00000000..355d9c0c
Binary files /dev/null and b/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll differ
diff --git a/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll.meta b/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll.meta
new file mode 100644
index 00000000..02c69632
--- /dev/null
+++ b/Assets/Allegorithmic/Plugins/substance_sse2_blend.dll.meta
@@ -0,0 +1,24 @@
+fileFormatVersion: 2
+guid: a87d0544a9f24d2458904bd85d5da155
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ isPreloaded: 0
+ isOverridable: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Chapter11/Water.prefab b/Assets/Prefabs/Chapter11/Water.prefab
index 9a456f73..8ba53d4d 100644
Binary files a/Assets/Prefabs/Chapter11/Water.prefab and b/Assets/Prefabs/Chapter11/Water.prefab differ
diff --git a/Assets/Prefabs/Chapter18/pf_barrel_01.prefab b/Assets/Prefabs/Chapter18/pf_barrel_01.prefab
index 1bad91ae..c8156b49 100644
Binary files a/Assets/Prefabs/Chapter18/pf_barrel_01.prefab and b/Assets/Prefabs/Chapter18/pf_barrel_01.prefab differ
diff --git a/Assets/Prefabs/Chapter18/pf_halberd_01.prefab b/Assets/Prefabs/Chapter18/pf_halberd_01.prefab
index 36a1d96d..41675d70 100644
Binary files a/Assets/Prefabs/Chapter18/pf_halberd_01.prefab and b/Assets/Prefabs/Chapter18/pf_halberd_01.prefab differ
diff --git a/Assets/Prefabs/Chapter18/pf_shed_01.prefab b/Assets/Prefabs/Chapter18/pf_shed_01.prefab
index 99f39294..4aa6d663 100644
Binary files a/Assets/Prefabs/Chapter18/pf_shed_01.prefab and b/Assets/Prefabs/Chapter18/pf_shed_01.prefab differ
diff --git a/Assets/Prefabs/Chapter18/pf_shield_03.prefab b/Assets/Prefabs/Chapter18/pf_shield_03.prefab
index 40e6b0d5..10caa476 100644
Binary files a/Assets/Prefabs/Chapter18/pf_shield_03.prefab and b/Assets/Prefabs/Chapter18/pf_shield_03.prefab differ
diff --git a/Assets/Prefabs/Chapter18/pf_sword_01.prefab b/Assets/Prefabs/Chapter18/pf_sword_01.prefab
index 4d835c7b..0fb20bd7 100644
Binary files a/Assets/Prefabs/Chapter18/pf_sword_01.prefab and b/Assets/Prefabs/Chapter18/pf_sword_01.prefab differ
diff --git a/Assets/Prefabs/Chapter5/ColorPicker.prefab b/Assets/Prefabs/Chapter5/ColorPicker.prefab
index 562a3050..74a1dec2 100644
Binary files a/Assets/Prefabs/Chapter5/ColorPicker.prefab and b/Assets/Prefabs/Chapter5/ColorPicker.prefab differ
diff --git a/Assets/Prefabs/Common/Bunny.prefab b/Assets/Prefabs/Common/Bunny.prefab
index 4650c17d..b5435546 100644
Binary files a/Assets/Prefabs/Common/Bunny.prefab and b/Assets/Prefabs/Common/Bunny.prefab differ
diff --git a/Assets/Prefabs/Common/Dragon.prefab b/Assets/Prefabs/Common/Dragon.prefab
index f3187f21..3ef9cb89 100644
Binary files a/Assets/Prefabs/Common/Dragon.prefab and b/Assets/Prefabs/Common/Dragon.prefab differ
diff --git a/Assets/Prefabs/Common/Knot.prefab b/Assets/Prefabs/Common/Knot.prefab
index 4ff59548..238149ee 100644
Binary files a/Assets/Prefabs/Common/Knot.prefab and b/Assets/Prefabs/Common/Knot.prefab differ
diff --git a/Assets/Prefabs/Common/Suzanne.prefab b/Assets/Prefabs/Common/Suzanne.prefab
index 785f7d94..ffd4de6c 100644
Binary files a/Assets/Prefabs/Common/Suzanne.prefab and b/Assets/Prefabs/Common/Suzanne.prefab differ
diff --git a/Assets/Prefabs/Common/Teapot.prefab b/Assets/Prefabs/Common/Teapot.prefab
index 6f29c4f4..4fdbd13e 100644
Binary files a/Assets/Prefabs/Common/Teapot.prefab and b/Assets/Prefabs/Common/Teapot.prefab differ
diff --git a/Assets/Prefabs/Common/TeddyBear.prefab b/Assets/Prefabs/Common/TeddyBear.prefab
index ec3c10ca..e537762d 100644
Binary files a/Assets/Prefabs/Common/TeddyBear.prefab and b/Assets/Prefabs/Common/TeddyBear.prefab differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_1_1.unity b/Assets/Scenes/Chapter10/Scene_10_1_1.unity
index 0de8e1c0..9f400629 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_1_1.unity and b/Assets/Scenes/Chapter10/Scene_10_1_1.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_1_3.unity b/Assets/Scenes/Chapter10/Scene_10_1_3.unity
index b26a6e4a..21e02caf 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_1_3.unity and b/Assets/Scenes/Chapter10/Scene_10_1_3.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_1_4.unity b/Assets/Scenes/Chapter10/Scene_10_1_4.unity
index e7623d86..5be9cd0f 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_1_4.unity and b/Assets/Scenes/Chapter10/Scene_10_1_4.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_1_5.unity b/Assets/Scenes/Chapter10/Scene_10_1_5.unity
index 6947f162..6f491279 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_1_5.unity and b/Assets/Scenes/Chapter10/Scene_10_1_5.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_2_1.unity b/Assets/Scenes/Chapter10/Scene_10_2_1.unity
index 9541c126..5ce4f56e 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_2_1.unity and b/Assets/Scenes/Chapter10/Scene_10_2_1.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_2_2.unity b/Assets/Scenes/Chapter10/Scene_10_2_2.unity
index 66aed0f0..56f48c09 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_2_2.unity and b/Assets/Scenes/Chapter10/Scene_10_2_2.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_3_1.unity b/Assets/Scenes/Chapter10/Scene_10_3_1.unity
index 556a923f..3101b3b4 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_3_1.unity and b/Assets/Scenes/Chapter10/Scene_10_3_1.unity differ
diff --git a/Assets/Scenes/Chapter10/Scene_10_3_2.unity b/Assets/Scenes/Chapter10/Scene_10_3_2.unity
index 6dfe7f65..f43f3bdb 100644
Binary files a/Assets/Scenes/Chapter10/Scene_10_3_2.unity and b/Assets/Scenes/Chapter10/Scene_10_3_2.unity differ
diff --git a/Assets/Scenes/Chapter11/Scene_11_2_1.unity b/Assets/Scenes/Chapter11/Scene_11_2_1.unity
index 05a7794c..cacddd58 100644
Binary files a/Assets/Scenes/Chapter11/Scene_11_2_1.unity and b/Assets/Scenes/Chapter11/Scene_11_2_1.unity differ
diff --git a/Assets/Scenes/Chapter11/Scene_11_2_2.unity b/Assets/Scenes/Chapter11/Scene_11_2_2.unity
index 5e7dbeba..44702f10 100644
Binary files a/Assets/Scenes/Chapter11/Scene_11_2_2.unity and b/Assets/Scenes/Chapter11/Scene_11_2_2.unity differ
diff --git a/Assets/Scenes/Chapter11/Scene_11_3_1.unity b/Assets/Scenes/Chapter11/Scene_11_3_1.unity
index 4544fb4d..999049cc 100644
Binary files a/Assets/Scenes/Chapter11/Scene_11_3_1.unity and b/Assets/Scenes/Chapter11/Scene_11_3_1.unity differ
diff --git a/Assets/Scenes/Chapter11/Scene_11_3_2.unity b/Assets/Scenes/Chapter11/Scene_11_3_2.unity
index 18e9f63d..cd7816df 100644
Binary files a/Assets/Scenes/Chapter11/Scene_11_3_2.unity and b/Assets/Scenes/Chapter11/Scene_11_3_2.unity differ
diff --git a/Assets/Scenes/Chapter11/Scene_11_3_3.unity b/Assets/Scenes/Chapter11/Scene_11_3_3.unity
index 45be7082..306a1ec2 100644
Binary files a/Assets/Scenes/Chapter11/Scene_11_3_3.unity and b/Assets/Scenes/Chapter11/Scene_11_3_3.unity differ
diff --git a/Assets/Scenes/Chapter12/Scene_12_2.unity b/Assets/Scenes/Chapter12/Scene_12_2.unity
index 0cd3beea..6530af5e 100644
Binary files a/Assets/Scenes/Chapter12/Scene_12_2.unity and b/Assets/Scenes/Chapter12/Scene_12_2.unity differ
diff --git a/Assets/Scenes/Chapter12/Scene_12_3.unity b/Assets/Scenes/Chapter12/Scene_12_3.unity
index 6bc8924f..08091c3c 100644
Binary files a/Assets/Scenes/Chapter12/Scene_12_3.unity and b/Assets/Scenes/Chapter12/Scene_12_3.unity differ
diff --git a/Assets/Scenes/Chapter12/Scene_12_4.unity b/Assets/Scenes/Chapter12/Scene_12_4.unity
index 04ef3661..b79eb808 100644
Binary files a/Assets/Scenes/Chapter12/Scene_12_4.unity and b/Assets/Scenes/Chapter12/Scene_12_4.unity differ
diff --git a/Assets/Scenes/Chapter12/Scene_12_5.unity b/Assets/Scenes/Chapter12/Scene_12_5.unity
index cda21950..ad415e62 100644
Binary files a/Assets/Scenes/Chapter12/Scene_12_5.unity and b/Assets/Scenes/Chapter12/Scene_12_5.unity differ
diff --git a/Assets/Scenes/Chapter12/Scene_12_6.unity b/Assets/Scenes/Chapter12/Scene_12_6.unity
index 69a0c969..357a86be 100644
Binary files a/Assets/Scenes/Chapter12/Scene_12_6.unity and b/Assets/Scenes/Chapter12/Scene_12_6.unity differ
diff --git a/Assets/Scenes/Chapter13/Scene_13_2.unity b/Assets/Scenes/Chapter13/Scene_13_2.unity
index 447001ec..6b401e3d 100644
Binary files a/Assets/Scenes/Chapter13/Scene_13_2.unity and b/Assets/Scenes/Chapter13/Scene_13_2.unity differ
diff --git a/Assets/Scenes/Chapter13/Scene_13_3.unity b/Assets/Scenes/Chapter13/Scene_13_3.unity
index 7c48ea78..e1e0316e 100644
Binary files a/Assets/Scenes/Chapter13/Scene_13_3.unity and b/Assets/Scenes/Chapter13/Scene_13_3.unity differ
diff --git a/Assets/Scenes/Chapter13/Scene_13_4.unity b/Assets/Scenes/Chapter13/Scene_13_4.unity
index d4aec0f3..a5f32583 100644
Binary files a/Assets/Scenes/Chapter13/Scene_13_4.unity and b/Assets/Scenes/Chapter13/Scene_13_4.unity differ
diff --git a/Assets/Scenes/Chapter14/Scene_14_1.unity b/Assets/Scenes/Chapter14/Scene_14_1.unity
index edb29693..fa4382e2 100644
Binary files a/Assets/Scenes/Chapter14/Scene_14_1.unity and b/Assets/Scenes/Chapter14/Scene_14_1.unity differ
diff --git a/Assets/Scenes/Chapter14/Scene_14_2.unity b/Assets/Scenes/Chapter14/Scene_14_2.unity
index f1bd8f50..86503d27 100644
Binary files a/Assets/Scenes/Chapter14/Scene_14_2.unity and b/Assets/Scenes/Chapter14/Scene_14_2.unity differ
diff --git a/Assets/Scenes/Chapter15/Scene_15_1.unity b/Assets/Scenes/Chapter15/Scene_15_1.unity
index 142abb87..9cc75ece 100644
Binary files a/Assets/Scenes/Chapter15/Scene_15_1.unity and b/Assets/Scenes/Chapter15/Scene_15_1.unity differ
diff --git a/Assets/Scenes/Chapter15/Scene_15_2.unity b/Assets/Scenes/Chapter15/Scene_15_2.unity
index 2c7f12e0..2e26aa23 100644
Binary files a/Assets/Scenes/Chapter15/Scene_15_2.unity and b/Assets/Scenes/Chapter15/Scene_15_2.unity differ
diff --git a/Assets/Scenes/Chapter15/Scene_15_3.unity b/Assets/Scenes/Chapter15/Scene_15_3.unity
index de7b3ba7..d8faa2c0 100644
Binary files a/Assets/Scenes/Chapter15/Scene_15_3.unity and b/Assets/Scenes/Chapter15/Scene_15_3.unity differ
diff --git a/Assets/Scenes/Chapter16/Scene_16_3_1.unity b/Assets/Scenes/Chapter16/Scene_16_3_1.unity
index 3b00f041..4a02ee14 100644
Binary files a/Assets/Scenes/Chapter16/Scene_16_3_1.unity and b/Assets/Scenes/Chapter16/Scene_16_3_1.unity differ
diff --git a/Assets/Scenes/Chapter16/Scene_16_3_2.unity b/Assets/Scenes/Chapter16/Scene_16_3_2.unity
index 91d8b694..ce85fbdd 100644
Binary files a/Assets/Scenes/Chapter16/Scene_16_3_2.unity and b/Assets/Scenes/Chapter16/Scene_16_3_2.unity differ
diff --git a/Assets/Scenes/Chapter17/Scene_17_1.unity b/Assets/Scenes/Chapter17/Scene_17_1.unity
index 258fe2de..d265c0ba 100644
Binary files a/Assets/Scenes/Chapter17/Scene_17_1.unity and b/Assets/Scenes/Chapter17/Scene_17_1.unity differ
diff --git a/Assets/Scenes/Chapter17/Scene_17_4.unity b/Assets/Scenes/Chapter17/Scene_17_4.unity
index 2672df5e..1684ec97 100644
Binary files a/Assets/Scenes/Chapter17/Scene_17_4.unity and b/Assets/Scenes/Chapter17/Scene_17_4.unity differ
diff --git a/Assets/Scenes/Chapter18/Scene_18_2.unity b/Assets/Scenes/Chapter18/Scene_18_2.unity
index 81523469..a68b07dd 100644
Binary files a/Assets/Scenes/Chapter18/Scene_18_2.unity and b/Assets/Scenes/Chapter18/Scene_18_2.unity differ
diff --git a/Assets/Scenes/Chapter18/Scene_18_3.unity b/Assets/Scenes/Chapter18/Scene_18_3.unity
index 525041b0..f536a895 100644
Binary files a/Assets/Scenes/Chapter18/Scene_18_3.unity and b/Assets/Scenes/Chapter18/Scene_18_3.unity differ
diff --git a/Assets/Scenes/Chapter18/Scene_18_3_2.unity b/Assets/Scenes/Chapter18/Scene_18_3_2.unity
index 0ac572d1..8e6917ad 100644
Binary files a/Assets/Scenes/Chapter18/Scene_18_3_2.unity and b/Assets/Scenes/Chapter18/Scene_18_3_2.unity differ
diff --git a/Assets/Scenes/Chapter18/Scene_18_4_2_a.unity b/Assets/Scenes/Chapter18/Scene_18_4_2_a.unity
index 5fb177df..458730f1 100644
Binary files a/Assets/Scenes/Chapter18/Scene_18_4_2_a.unity and b/Assets/Scenes/Chapter18/Scene_18_4_2_a.unity differ
diff --git a/Assets/Scenes/Chapter18/Scene_18_4_2_b.unity b/Assets/Scenes/Chapter18/Scene_18_4_2_b.unity
index 391c1094..b8ea3a24 100644
Binary files a/Assets/Scenes/Chapter18/Scene_18_4_2_b.unity and b/Assets/Scenes/Chapter18/Scene_18_4_2_b.unity differ
diff --git a/Assets/Scenes/Chapter5/Scene_5_2.unity b/Assets/Scenes/Chapter5/Scene_5_2.unity
index 1106e04f..4b9d0a07 100644
Binary files a/Assets/Scenes/Chapter5/Scene_5_2.unity and b/Assets/Scenes/Chapter5/Scene_5_2.unity differ
diff --git a/Assets/Scenes/Chapter6/Scene_6_4.unity b/Assets/Scenes/Chapter6/Scene_6_4.unity
index 77449be3..fed080e4 100644
Binary files a/Assets/Scenes/Chapter6/Scene_6_4.unity and b/Assets/Scenes/Chapter6/Scene_6_4.unity differ
diff --git a/Assets/Scenes/Chapter6/Scene_6_5.unity b/Assets/Scenes/Chapter6/Scene_6_5.unity
index 29e48870..44b112bc 100644
Binary files a/Assets/Scenes/Chapter6/Scene_6_5.unity and b/Assets/Scenes/Chapter6/Scene_6_5.unity differ
diff --git a/Assets/Scenes/Chapter6/Scene_6_6.unity b/Assets/Scenes/Chapter6/Scene_6_6.unity
index 36d4eebb..fd70fe08 100644
Binary files a/Assets/Scenes/Chapter6/Scene_6_6.unity and b/Assets/Scenes/Chapter6/Scene_6_6.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_1.unity b/Assets/Scenes/Chapter7/Scene_7_1.unity
index 7b94c4e6..e69d8df6 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_1.unity and b/Assets/Scenes/Chapter7/Scene_7_1.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_1_2_a.unity b/Assets/Scenes/Chapter7/Scene_7_1_2_a.unity
index d2b0a2e3..95914f50 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_1_2_a.unity and b/Assets/Scenes/Chapter7/Scene_7_1_2_a.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_1_2_b.unity b/Assets/Scenes/Chapter7/Scene_7_1_2_b.unity
index 6e9ecca3..a1afb9c5 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_1_2_b.unity and b/Assets/Scenes/Chapter7/Scene_7_1_2_b.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_1_2_c.unity b/Assets/Scenes/Chapter7/Scene_7_1_2_c.unity
index 3b3a5593..7057a9e5 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_1_2_c.unity and b/Assets/Scenes/Chapter7/Scene_7_1_2_c.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_2_3.unity b/Assets/Scenes/Chapter7/Scene_7_2_3.unity
index 239503a1..45ecaa2c 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_2_3.unity and b/Assets/Scenes/Chapter7/Scene_7_2_3.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_3.unity b/Assets/Scenes/Chapter7/Scene_7_3.unity
index 7110df21..f08df66d 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_3.unity and b/Assets/Scenes/Chapter7/Scene_7_3.unity differ
diff --git a/Assets/Scenes/Chapter7/Scene_7_4.unity b/Assets/Scenes/Chapter7/Scene_7_4.unity
index 02578aa7..347b4ec4 100644
Binary files a/Assets/Scenes/Chapter7/Scene_7_4.unity and b/Assets/Scenes/Chapter7/Scene_7_4.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_3.unity b/Assets/Scenes/Chapter8/Scene_8_3.unity
index eaa555b0..2c6693b9 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_3.unity and b/Assets/Scenes/Chapter8/Scene_8_3.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_4.unity b/Assets/Scenes/Chapter8/Scene_8_4.unity
index fc845a2a..5b7073a0 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_4.unity and b/Assets/Scenes/Chapter8/Scene_8_4.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_5.unity b/Assets/Scenes/Chapter8/Scene_8_5.unity
index f6447453..e94465b2 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_5.unity and b/Assets/Scenes/Chapter8/Scene_8_5.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_6_3.unity b/Assets/Scenes/Chapter8/Scene_8_6_3.unity
index 2356cd11..9283d302 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_6_3.unity and b/Assets/Scenes/Chapter8/Scene_8_6_3.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_7_1.unity b/Assets/Scenes/Chapter8/Scene_8_7_1.unity
index ee4256d6..e26cb2dd 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_7_1.unity and b/Assets/Scenes/Chapter8/Scene_8_7_1.unity differ
diff --git a/Assets/Scenes/Chapter8/Scene_8_7_2.unity b/Assets/Scenes/Chapter8/Scene_8_7_2.unity
index 65d63b9b..66f9bf79 100644
Binary files a/Assets/Scenes/Chapter8/Scene_8_7_2.unity and b/Assets/Scenes/Chapter8/Scene_8_7_2.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_2_2_1.unity b/Assets/Scenes/Chapter9/Scene_9_2_2_1.unity
index e9167240..da629fce 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_2_2_1.unity and b/Assets/Scenes/Chapter9/Scene_9_2_2_1.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_2_2_2.unity b/Assets/Scenes/Chapter9/Scene_9_2_2_2.unity
index 54b95114..10d85078 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_2_2_2.unity and b/Assets/Scenes/Chapter9/Scene_9_2_2_2.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_4_2.unity b/Assets/Scenes/Chapter9/Scene_9_4_2.unity
index 24e26798..75477a3f 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_4_2.unity and b/Assets/Scenes/Chapter9/Scene_9_4_2.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_4_4.unity b/Assets/Scenes/Chapter9/Scene_9_4_4.unity
index aaa599bc..38099ba0 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_4_4.unity and b/Assets/Scenes/Chapter9/Scene_9_4_4.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_4_5.unity b/Assets/Scenes/Chapter9/Scene_9_4_5.unity
index ee5c0360..1f80211b 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_4_5.unity and b/Assets/Scenes/Chapter9/Scene_9_4_5.unity differ
diff --git a/Assets/Scenes/Chapter9/Scene_9_4_5_b.unity b/Assets/Scenes/Chapter9/Scene_9_4_5_b.unity
index f1594cf8..50cc86cb 100644
Binary files a/Assets/Scenes/Chapter9/Scene_9_4_5_b.unity and b/Assets/Scenes/Chapter9/Scene_9_4_5_b.unity differ
diff --git a/Assets/Shaders/Chapter10/Chapter10-Fresnel.shader b/Assets/Shaders/Chapter10/Chapter10-Fresnel.shader
index 0feb85fc..53cdde93 100644
--- a/Assets/Shaders/Chapter10/Chapter10-Fresnel.shader
+++ b/Assets/Shaders/Chapter10/Chapter10-Fresnel.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 10/Fresnel" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 10/Fresnel" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_FresnelScale ("Fresnel Scale", Range(0, 1)) = 0.5
@@ -40,11 +43,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.worldViewDir = UnityWorldSpaceViewDir(o.worldPos);
diff --git a/Assets/Shaders/Chapter10/Chapter10-GlassRefraction.shader b/Assets/Shaders/Chapter10/Chapter10-GlassRefraction.shader
index f2a4e995..fbc56cab 100644
--- a/Assets/Shaders/Chapter10/Chapter10-GlassRefraction.shader
+++ b/Assets/Shaders/Chapter10/Chapter10-GlassRefraction.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 10/Glass Refraction" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 10/Glass Refraction" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
_BumpMap ("Normal Map", 2D) = "bump" {}
@@ -50,14 +53,14 @@
v2f vert (a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.scrPos = ComputeGrabScreenPos(o.pos);
o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uv.zw = TRANSFORM_TEX(v.texcoord, _BumpMap);
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
diff --git a/Assets/Shaders/Chapter10/Chapter10-Mirror.shader b/Assets/Shaders/Chapter10/Chapter10-Mirror.shader
index c162714b..c7a7e3c6 100644
--- a/Assets/Shaders/Chapter10/Chapter10-Mirror.shader
+++ b/Assets/Shaders/Chapter10/Chapter10-Mirror.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 10/Mirror" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 10/Mirror" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
}
@@ -25,7 +27,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
// Mirror needs to filp x
diff --git a/Assets/Shaders/Chapter10/Chapter10-Reflection.shader b/Assets/Shaders/Chapter10/Chapter10-Reflection.shader
index 4d5ee8c8..7ebf0e8b 100644
--- a/Assets/Shaders/Chapter10/Chapter10-Reflection.shader
+++ b/Assets/Shaders/Chapter10/Chapter10-Reflection.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 10/Reflection" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 10/Reflection" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_ReflectColor ("Reflection Color", Color) = (1, 1, 1, 1)
@@ -43,11 +46,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.worldViewDir = UnityWorldSpaceViewDir(o.worldPos);
diff --git a/Assets/Shaders/Chapter10/Chapter10-Refraction.shader b/Assets/Shaders/Chapter10/Chapter10-Refraction.shader
index 0bdd6641..94fce1e7 100644
--- a/Assets/Shaders/Chapter10/Chapter10-Refraction.shader
+++ b/Assets/Shaders/Chapter10/Chapter10-Refraction.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 10/Refraction" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 10/Refraction" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_RefractColor ("Refraction Color", Color) = (1, 1, 1, 1)
@@ -44,11 +47,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.worldViewDir = UnityWorldSpaceViewDir(o.worldPos);
diff --git a/Assets/Shaders/Chapter11/Chapter11-Billboard.shader b/Assets/Shaders/Chapter11/Chapter11-Billboard.shader
index 59340868..433973d1 100644
--- a/Assets/Shaders/Chapter11/Chapter11-Billboard.shader
+++ b/Assets/Shaders/Chapter11/Chapter11-Billboard.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 11/Billboard" {
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 11/Billboard" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
_Color ("Color Tint", Color) = (1, 1, 1, 1)
@@ -42,7 +45,7 @@
// Suppose the center in object space is fixed
float3 center = float3(0, 0, 0);
- float3 viewer = mul(_World2Object,float4(_WorldSpaceCameraPos, 1));
+ float3 viewer = mul(unity_WorldToObject,float4(_WorldSpaceCameraPos, 1));
float3 normalDir = viewer - center;
// If _VerticalBillboarding equals 1, we use the desired view dir as the normal dir
@@ -61,7 +64,7 @@
float3 centerOffs = v.vertex.xyz - center;
float3 localPos = center + rightDir * centerOffs.x + upDir * centerOffs.y + normalDir * centerOffs.z;
- o.pos = mul(UNITY_MATRIX_MVP, float4(localPos, 1));
+ o.pos = UnityObjectToClipPos(float4(localPos, 1));
o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
return o;
diff --git a/Assets/Shaders/Chapter11/Chapter11-ImageSequenceAnimation.shader b/Assets/Shaders/Chapter11/Chapter11-ImageSequenceAnimation.shader
index c2337494..5f2f3658 100644
--- a/Assets/Shaders/Chapter11/Chapter11-ImageSequenceAnimation.shader
+++ b/Assets/Shaders/Chapter11/Chapter11-ImageSequenceAnimation.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 11/Image Sequence Animation" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 11/Image Sequence Animation" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Image Sequence", 2D) = "white" {}
@@ -41,7 +43,7 @@
v2f vert (a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
diff --git a/Assets/Shaders/Chapter11/Chapter11-ScrollingBackground.shader b/Assets/Shaders/Chapter11/Chapter11-ScrollingBackground.shader
index d9a37f21..7b592aac 100644
--- a/Assets/Shaders/Chapter11/Chapter11-ScrollingBackground.shader
+++ b/Assets/Shaders/Chapter11/Chapter11-ScrollingBackground.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 11/Scrolling Background" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 11/Scrolling Background" {
Properties {
_MainTex ("Base Layer (RGB)", 2D) = "white" {}
_DetailTex ("2nd Layer (RGB)", 2D) = "white" {}
@@ -39,7 +41,7 @@
v2f vert (a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex) + frac(float2(_ScrollX, 0.0) * _Time.y);
o.uv.zw = TRANSFORM_TEX(v.texcoord, _DetailTex) + frac(float2(_Scroll2X, 0.0) * _Time.y);
diff --git a/Assets/Shaders/Chapter11/Chapter11-VertexAnimationWIthShadow.shader b/Assets/Shaders/Chapter11/Chapter11-VertexAnimationWIthShadow.shader
index acca610a..d123ed55 100644
--- a/Assets/Shaders/Chapter11/Chapter11-VertexAnimationWIthShadow.shader
+++ b/Assets/Shaders/Chapter11/Chapter11-VertexAnimationWIthShadow.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 11/Vertex Animation With Shadow" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 11/Vertex Animation With Shadow" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
_Color ("Color Tint", Color) = (1, 1, 1, 1)
@@ -46,7 +48,7 @@
float4 offset;
offset.yzw = float3(0.0, 0.0, 0.0);
offset.x = sin(_Frequency * _Time.y + v.vertex.x * _InvWaveLength + v.vertex.y * _InvWaveLength + v.vertex.z * _InvWaveLength) * _Magnitude;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex + offset);
+ o.pos = UnityObjectToClipPos(v.vertex + offset);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uv += float2(0.0, _Time.y * _Speed);
diff --git a/Assets/Shaders/Chapter11/Chapter11-Water.shader b/Assets/Shaders/Chapter11/Chapter11-Water.shader
index ac9c3411..f30a3fbf 100644
--- a/Assets/Shaders/Chapter11/Chapter11-Water.shader
+++ b/Assets/Shaders/Chapter11/Chapter11-Water.shader
@@ -1,3 +1,5 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
Shader "Unity Shaders Book/Chapter 11/Water" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
@@ -48,7 +50,7 @@ Shader "Unity Shaders Book/Chapter 11/Water" {
float4 offset;
offset.yzw = float3(0.0, 0.0, 0.0);
offset.x = sin(_Frequency * _Time.y + v.vertex.x * _InvWaveLength + v.vertex.y * _InvWaveLength + v.vertex.z * _InvWaveLength) * _Magnitude;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex + offset);
+ o.pos = UnityObjectToClipPos(v.vertex + offset);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uv += float2(0.0, _Time.y * _Speed);
diff --git a/Assets/Shaders/Chapter12/Chapter12-Bloom.shader b/Assets/Shaders/Chapter12/Chapter12-Bloom.shader
index 308dc181..61f51947 100644
--- a/Assets/Shaders/Chapter12/Chapter12-Bloom.shader
+++ b/Assets/Shaders/Chapter12/Chapter12-Bloom.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 12/Bloom" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 12/Bloom" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Bloom ("Bloom (RGB)", 2D) = "black" {}
@@ -24,7 +26,7 @@
v2f vertExtractBright(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
@@ -50,7 +52,7 @@
v2fBloom vertBloom(appdata_img v) {
v2fBloom o;
- o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos (v.vertex);
o.uv.xy = v.texcoord;
o.uv.zw = v.texcoord;
diff --git a/Assets/Shaders/Chapter12/Chapter12-BrightnessSaturationAndContrast.shader b/Assets/Shaders/Chapter12/Chapter12-BrightnessSaturationAndContrast.shader
index ed475ee5..52db2c2a 100644
--- a/Assets/Shaders/Chapter12/Chapter12-BrightnessSaturationAndContrast.shader
+++ b/Assets/Shaders/Chapter12/Chapter12-BrightnessSaturationAndContrast.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 12/Brightness Saturation And Contrast" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 12/Brightness Saturation And Contrast" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Brightness ("Brightness", Float) = 1
@@ -28,7 +30,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
diff --git a/Assets/Shaders/Chapter12/Chapter12-EdgeDetection.shader b/Assets/Shaders/Chapter12/Chapter12-EdgeDetection.shader
index dc919dee..0e6b509d 100644
--- a/Assets/Shaders/Chapter12/Chapter12-EdgeDetection.shader
+++ b/Assets/Shaders/Chapter12/Chapter12-EdgeDetection.shader
@@ -1,3 +1,5 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
Shader "Unity Shaders Book/Chapter 12/Edge Detection" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
@@ -29,7 +31,7 @@ Shader "Unity Shaders Book/Chapter 12/Edge Detection" {
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
half2 uv = v.texcoord;
diff --git a/Assets/Shaders/Chapter12/Chapter12-GaussianBlur.shader b/Assets/Shaders/Chapter12/Chapter12-GaussianBlur.shader
index dd284392..59726d87 100644
--- a/Assets/Shaders/Chapter12/Chapter12-GaussianBlur.shader
+++ b/Assets/Shaders/Chapter12/Chapter12-GaussianBlur.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 12/Gaussian Blur" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 12/Gaussian Blur" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BlurSize ("Blur Size", Float) = 1.0
@@ -19,7 +21,7 @@
v2f vertBlurVertical(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
half2 uv = v.texcoord;
@@ -34,7 +36,7 @@
v2f vertBlurHorizontal(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
half2 uv = v.texcoord;
diff --git a/Assets/Shaders/Chapter12/Chapter12-MotionBlur.shader b/Assets/Shaders/Chapter12/Chapter12-MotionBlur.shader
index a2f09ba8..790ffc7e 100644
--- a/Assets/Shaders/Chapter12/Chapter12-MotionBlur.shader
+++ b/Assets/Shaders/Chapter12/Chapter12-MotionBlur.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 12/Motion Blur" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 12/Motion Blur" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BlurAmount ("Blur Amount", Float) = 1.0
@@ -19,7 +21,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
diff --git a/Assets/Shaders/Chapter13/Chapter13-EdgeDetectNormalAndDepth.shader b/Assets/Shaders/Chapter13/Chapter13-EdgeDetectNormalAndDepth.shader
index dd8c5b37..f6b5ac97 100644
--- a/Assets/Shaders/Chapter13/Chapter13-EdgeDetectNormalAndDepth.shader
+++ b/Assets/Shaders/Chapter13/Chapter13-EdgeDetectNormalAndDepth.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 13/Edge Detection Normals And Depth" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 13/Edge Detection Normals And Depth" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_EdgeOnly ("Edge Only", Float) = 1.0
@@ -29,7 +31,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
half2 uv = v.texcoord;
o.uv[0] = uv;
diff --git a/Assets/Shaders/Chapter13/Chapter13-FogWithDepthTexture.shader b/Assets/Shaders/Chapter13/Chapter13-FogWithDepthTexture.shader
index a1ca8624..9349db08 100644
--- a/Assets/Shaders/Chapter13/Chapter13-FogWithDepthTexture.shader
+++ b/Assets/Shaders/Chapter13/Chapter13-FogWithDepthTexture.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 13/Fog With Depth Texture" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 13/Fog With Depth Texture" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_FogDensity ("Fog Density", Float) = 1.0
@@ -30,7 +32,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
o.uv_depth = v.texcoord;
diff --git a/Assets/Shaders/Chapter13/Chapter13-MotionBlurWithDepthTexture.shader b/Assets/Shaders/Chapter13/Chapter13-MotionBlurWithDepthTexture.shader
index 97fa6573..20c674ba 100644
--- a/Assets/Shaders/Chapter13/Chapter13-MotionBlurWithDepthTexture.shader
+++ b/Assets/Shaders/Chapter13/Chapter13-MotionBlurWithDepthTexture.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 13/Motion Blur With Depth Texture" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 13/Motion Blur With Depth Texture" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BlurSize ("Blur Size", Float) = 1.0
@@ -23,7 +25,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
o.uv_depth = v.texcoord;
diff --git a/Assets/Shaders/Chapter14/Chapter14-Hatching.shader b/Assets/Shaders/Chapter14/Chapter14-Hatching.shader
index a85600e3..dbd8bcbb 100644
--- a/Assets/Shaders/Chapter14/Chapter14-Hatching.shader
+++ b/Assets/Shaders/Chapter14/Chapter14-Hatching.shader
@@ -1,3 +1,6 @@
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
///
/// Reference: Praun E, Hoppe H, Webb M, et al. Real-time hatching[C]
/// Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM, 2001: 581.
@@ -63,7 +66,7 @@ Shader "Unity Shaders Book/Chapter 14/Hatching" {
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord.xy * _TileFactor;
@@ -97,7 +100,7 @@ Shader "Unity Shaders Book/Chapter 14/Hatching" {
o.hatchWeights1.z = 1.0 - o.hatchWeights1.y;
}
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
TRANSFER_SHADOW(o);
diff --git a/Assets/Shaders/Chapter14/Chapter14-ToonShading.shader b/Assets/Shaders/Chapter14/Chapter14-ToonShading.shader
index f4f7c662..46433c32 100644
--- a/Assets/Shaders/Chapter14/Chapter14-ToonShading.shader
+++ b/Assets/Shaders/Chapter14/Chapter14-ToonShading.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 14/Toon Shading" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 14/Toon Shading" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -96,10 +99,10 @@
v2f vert (a2v v) {
v2f o;
- o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos( v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
TRANSFER_SHADOW(o);
diff --git a/Assets/Shaders/Chapter15/Chapter15-Dissolve.shader b/Assets/Shaders/Chapter15/Chapter15-Dissolve.shader
index 571cf692..bba0ae4e 100644
--- a/Assets/Shaders/Chapter15/Chapter15-Dissolve.shader
+++ b/Assets/Shaders/Chapter15/Chapter15-Dissolve.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 15/Dissolve" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 15/Dissolve" {
Properties {
_BurnAmount ("Burn Amount", Range(0.0, 1.0)) = 0.0
_LineWidth("Burn Line Width", Range(0.0, 0.2)) = 0.1
@@ -57,7 +60,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uvMainTex = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uvBumpMap = TRANSFORM_TEX(v.texcoord, _BumpMap);
@@ -66,7 +69,7 @@
TANGENT_SPACE_ROTATION;
o.lightDir = mul(rotation, ObjSpaceLightDir(v.vertex)).xyz;
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
TRANSFER_SHADOW(o);
diff --git a/Assets/Shaders/Chapter15/Chapter15-FogWithNoise.shader b/Assets/Shaders/Chapter15/Chapter15-FogWithNoise.shader
index e4ffbe27..18cdb7fb 100644
--- a/Assets/Shaders/Chapter15/Chapter15-FogWithNoise.shader
+++ b/Assets/Shaders/Chapter15/Chapter15-FogWithNoise.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 15/Fog With Noise" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 15/Fog With Noise" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_FogDensity ("Fog Density", Float) = 1.0
@@ -38,7 +40,7 @@
v2f vert(appdata_img v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
o.uv_depth = v.texcoord;
diff --git a/Assets/Shaders/Chapter15/Chapter15-WaterWave.shader b/Assets/Shaders/Chapter15/Chapter15-WaterWave.shader
index 34461e18..d32f31ec 100644
--- a/Assets/Shaders/Chapter15/Chapter15-WaterWave.shader
+++ b/Assets/Shaders/Chapter15/Chapter15-WaterWave.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 15/Water Wave" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 15/Water Wave" {
Properties {
_Color ("Main Color", Color) = (0, 0.15, 0.115, 1)
_MainTex ("Base (RGB)", 2D) = "white" {}
@@ -59,14 +62,14 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.scrPos = ComputeGrabScreenPos(o.pos);
o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uv.zw = TRANSFORM_TEX(v.texcoord, _WaveMap);
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
diff --git a/Assets/Shaders/Chapter18/SimpleBlend.shader b/Assets/Shaders/Chapter18/SimpleBlend.shader
index c3f659d2..ac615e66 100644
--- a/Assets/Shaders/Chapter18/SimpleBlend.shader
+++ b/Assets/Shaders/Chapter18/SimpleBlend.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 18/Simple Blend" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 18/Simple Blend" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -33,7 +35,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
diff --git a/Assets/Shaders/Chapter5/Chapter5-FalseColor.shader b/Assets/Shaders/Chapter5/Chapter5-FalseColor.shader
index eb79c74f..4c687b6e 100644
--- a/Assets/Shaders/Chapter5/Chapter5-FalseColor.shader
+++ b/Assets/Shaders/Chapter5/Chapter5-FalseColor.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 5/False Color" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 5/False Color" {
SubShader {
Pass {
CGPROGRAM
@@ -15,7 +17,7 @@
v2f vert(appdata_full v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Visualize normal
o.color = fixed4(v.normal * 0.5 + fixed3(0.5, 0.5, 0.5), 1.0);
diff --git a/Assets/Shaders/Chapter5/Chapter5-SimpleShader.shader b/Assets/Shaders/Chapter5/Chapter5-SimpleShader.shader
index 03f7daf0..31df9144 100644
--- a/Assets/Shaders/Chapter5/Chapter5-SimpleShader.shader
+++ b/Assets/Shaders/Chapter5/Chapter5-SimpleShader.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 5/Simple Shader" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 5/Simple Shader" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
}
@@ -24,7 +26,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.color = v.normal * 0.5 + fixed3(0.5, 0.5, 0.5);
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-BlinnPhong.shader b/Assets/Shaders/Chapter6/Chapter6-BlinnPhong.shader
index 808f005b..81cdef97 100644
--- a/Assets/Shaders/Chapter6/Chapter6-BlinnPhong.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-BlinnPhong.shader
@@ -1,4 +1,8 @@
-Shader "Unity Shaders Book/Chapter 6/Blinn-Phong" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Blinn-Phong" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -33,13 +37,13 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Transform the normal from object space to world space
- o.worldNormal = mul(v.normal, (float3x3)_World2Object);
+ o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
// Transform the vertex from object spacet to world space
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-BlinnPhongUseBuildInFunctions.shader b/Assets/Shaders/Chapter6/Chapter6-BlinnPhongUseBuildInFunctions.shader
index ed71ff1d..e74f5296 100644
--- a/Assets/Shaders/Chapter6/Chapter6-BlinnPhongUseBuildInFunctions.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-BlinnPhongUseBuildInFunctions.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 6/Blinn-Phong Use Built-in Functions" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Blinn-Phong Use Built-in Functions" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -32,12 +35,12 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Use the build-in funtion to compute the normal in world space
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex);
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex);
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-DiffusePixelLevel.shader b/Assets/Shaders/Chapter6/Chapter6-DiffusePixelLevel.shader
index b4cc4f92..f0a8261b 100644
--- a/Assets/Shaders/Chapter6/Chapter6-DiffusePixelLevel.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-DiffusePixelLevel.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 6/Diffuse Pixel-Level" {
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Diffuse Pixel-Level" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
}
@@ -28,10 +31,10 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Transform the normal from object space to world space
- o.worldNormal = mul(v.normal, (float3x3)_World2Object);
+ o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-DiffuseVertexLevel.shader b/Assets/Shaders/Chapter6/Chapter6-DiffuseVertexLevel.shader
index 2af58067..b036e5c5 100644
--- a/Assets/Shaders/Chapter6/Chapter6-DiffuseVertexLevel.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-DiffuseVertexLevel.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 6/Diffuse Vertex-Level" {
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Diffuse Vertex-Level" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
}
@@ -28,13 +31,13 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Get ambient term
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
// Transform the normal from object space to world space
- fixed3 worldNormal = normalize(mul(v.normal, (float3x3)_World2Object));
+ fixed3 worldNormal = normalize(mul(v.normal, (float3x3)unity_WorldToObject));
// Get the light direction in world space
fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
// Compute diffuse term
diff --git a/Assets/Shaders/Chapter6/Chapter6-HalfLambert.shader b/Assets/Shaders/Chapter6/Chapter6-HalfLambert.shader
index eaaef128..f258532d 100644
--- a/Assets/Shaders/Chapter6/Chapter6-HalfLambert.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-HalfLambert.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 6/Half Lambert" {
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Half Lambert" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
}
@@ -28,10 +31,10 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Transform the normal from object space to world space
- o.worldNormal = mul(v.normal, (float3x3)_World2Object);
+ o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-SpecularPixelLevel.shader b/Assets/Shaders/Chapter6/Chapter6-SpecularPixelLevel.shader
index 02ac2836..66026b17 100644
--- a/Assets/Shaders/Chapter6/Chapter6-SpecularPixelLevel.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-SpecularPixelLevel.shader
@@ -1,4 +1,8 @@
-Shader "Unity Shaders Book/Chapter 6/Specular Pixel-Level" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Specular Pixel-Level" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -33,12 +37,12 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Transform the normal from object space to world space
- o.worldNormal = mul(v.normal, (float3x3)_World2Object);
+ o.worldNormal = mul(v.normal, (float3x3)unity_WorldToObject);
// Transform the vertex from object spacet to world space
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
diff --git a/Assets/Shaders/Chapter6/Chapter6-SpecularVertexLevel.shader b/Assets/Shaders/Chapter6/Chapter6-SpecularVertexLevel.shader
index ab1ee409..5cf25df9 100644
--- a/Assets/Shaders/Chapter6/Chapter6-SpecularVertexLevel.shader
+++ b/Assets/Shaders/Chapter6/Chapter6-SpecularVertexLevel.shader
@@ -1,4 +1,8 @@
-Shader "Unity Shaders Book/Chapter 6/Specular Vertex-Level" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 6/Specular Vertex-Level" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -32,13 +36,13 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
// Get ambient term
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
// Transform the normal from object space to world space
- fixed3 worldNormal = normalize(mul(v.normal, (float3x3)_World2Object));
+ fixed3 worldNormal = normalize(mul(v.normal, (float3x3)unity_WorldToObject));
// Get the light direction in world space
fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz);
@@ -48,7 +52,7 @@
// Get the reflect direction in world space
fixed3 reflectDir = normalize(reflect(-worldLightDir, worldNormal));
// Get the view direction in world space
- fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(_Object2World, v.vertex).xyz);
+ fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, v.vertex).xyz);
// Compute specular term
fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(saturate(dot(reflectDir, viewDir)), _Gloss);
diff --git a/Assets/Shaders/Chapter7/Chapter7-MaskTexture.shader b/Assets/Shaders/Chapter7/Chapter7-MaskTexture.shader
index de9d197b..d0a6363e 100644
--- a/Assets/Shaders/Chapter7/Chapter7-MaskTexture.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-MaskTexture.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 7/Mask Texture" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 7/Mask Texture" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -46,7 +48,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
diff --git a/Assets/Shaders/Chapter7/Chapter7-NormalMapTangentSpace.shader b/Assets/Shaders/Chapter7/Chapter7-NormalMapTangentSpace.shader
index c8bb1701..feb66f66 100644
--- a/Assets/Shaders/Chapter7/Chapter7-NormalMapTangentSpace.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-NormalMapTangentSpace.shader
@@ -1,3 +1,5 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
Shader "Unity Shaders Book/Chapter 7/Normal Map In Tangent Space" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
@@ -75,7 +77,7 @@ Shader "Unity Shaders Book/Chapter 7/Normal Map In Tangent Space" {
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
diff --git a/Assets/Shaders/Chapter7/Chapter7-NormalMapWorldSpace.shader b/Assets/Shaders/Chapter7/Chapter7-NormalMapWorldSpace.shader
index 38ca5ae0..526459f3 100644
--- a/Assets/Shaders/Chapter7/Chapter7-NormalMapWorldSpace.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-NormalMapWorldSpace.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 7/Normal Map In World Space" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 7/Normal Map In World Space" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -44,12 +47,12 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
diff --git a/Assets/Shaders/Chapter7/Chapter7-RampTexture.shader b/Assets/Shaders/Chapter7/Chapter7-RampTexture.shader
index 388707c3..97e8ec60 100644
--- a/Assets/Shaders/Chapter7/Chapter7-RampTexture.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-RampTexture.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 7/Ramp Texture" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 7/Ramp Texture" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_RampTex ("Ramp Tex", 2D) = "white" {}
@@ -37,11 +40,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _RampTex);
diff --git a/Assets/Shaders/Chapter7/Chapter7-SingleTexture.shader b/Assets/Shaders/Chapter7/Chapter7-SingleTexture.shader
index d07f51f1..f6cb0c46 100644
--- a/Assets/Shaders/Chapter7/Chapter7-SingleTexture.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-SingleTexture.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 7/Single Texture" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 7/Single Texture" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -37,11 +40,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
// Or just call the built-in function
diff --git a/Assets/Shaders/Chapter7/Chapter7-TextureProperties.shader b/Assets/Shaders/Chapter7/Chapter7-TextureProperties.shader
index d5fe8e86..2821ab9b 100644
--- a/Assets/Shaders/Chapter7/Chapter7-TextureProperties.shader
+++ b/Assets/Shaders/Chapter7/Chapter7-TextureProperties.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 7/Texture Properties" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 7/Texture Properties" {
Properties {
_MainTex ("Main Tex", 2D) = "white" {}
}
@@ -29,7 +31,7 @@
v2f vert(a2v v) {
v2f o;
// Transform the vertex from object space to projection space
- o.position = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.position = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-AlphaBlend.shader b/Assets/Shaders/Chapter8/Chapter8-AlphaBlend.shader
index b764f09e..d3cc19d6 100644
--- a/Assets/Shaders/Chapter8/Chapter8-AlphaBlend.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-AlphaBlend.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 8/Alpha Blend" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Alpha Blend" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -40,11 +43,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-AlphaBlendBothSided.shader b/Assets/Shaders/Chapter8/Chapter8-AlphaBlendBothSided.shader
index b51b31b4..48b75203 100644
--- a/Assets/Shaders/Chapter8/Chapter8-AlphaBlendBothSided.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-AlphaBlendBothSided.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 8/Alpha Blend With Both Side" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Alpha Blend With Both Side" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -43,11 +46,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
@@ -108,11 +111,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-AlphaBlendZWrite.shader b/Assets/Shaders/Chapter8/Chapter8-AlphaBlendZWrite.shader
index a70931d1..1331a26b 100644
--- a/Assets/Shaders/Chapter8/Chapter8-AlphaBlendZWrite.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-AlphaBlendZWrite.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 8/Alpha Blending With ZWrite" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Alpha Blending With ZWrite" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -46,11 +49,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-AlphaTest.shader b/Assets/Shaders/Chapter8/Chapter8-AlphaTest.shader
index ea2ada6c..715a3b4b 100644
--- a/Assets/Shaders/Chapter8/Chapter8-AlphaTest.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-AlphaTest.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 8/Alpha Test" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Alpha Test" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -37,11 +40,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-AlphaTestBothSided.shader b/Assets/Shaders/Chapter8/Chapter8-AlphaTestBothSided.shader
index 24dbb70e..43a63b71 100644
--- a/Assets/Shaders/Chapter8/Chapter8-AlphaTestBothSided.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-AlphaTestBothSided.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 8/Alpha Test With Both Side" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Alpha Test With Both Side" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -40,11 +43,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-BlendOperations 1.shader b/Assets/Shaders/Chapter8/Chapter8-BlendOperations 1.shader
index 9daa80a7..b1850867 100644
--- a/Assets/Shaders/Chapter8/Chapter8-BlendOperations 1.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-BlendOperations 1.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 8/Blend Operations 1" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Blend Operations 1" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -65,7 +67,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter8/Chapter8-BlendOperations.shader b/Assets/Shaders/Chapter8/Chapter8-BlendOperations.shader
index 51d79321..611d1b71 100644
--- a/Assets/Shaders/Chapter8/Chapter8-BlendOperations.shader
+++ b/Assets/Shaders/Chapter8/Chapter8-BlendOperations.shader
@@ -1,4 +1,6 @@
-Shader "Unity Shaders Book/Chapter 8/Blend Operations 0" {
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 8/Blend Operations 0" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -39,7 +41,7 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter9/Chapter9-AlphaBlendWithShadow.shader b/Assets/Shaders/Chapter9/Chapter9-AlphaBlendWithShadow.shader
index 548dd460..da0621e5 100644
--- a/Assets/Shaders/Chapter9/Chapter9-AlphaBlendWithShadow.shader
+++ b/Assets/Shaders/Chapter9/Chapter9-AlphaBlendWithShadow.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 9/Alpha Blend With Shadow" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 9/Alpha Blend With Shadow" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -44,11 +47,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter9/Chapter9-AlphaTestWithShadow.shader b/Assets/Shaders/Chapter9/Chapter9-AlphaTestWithShadow.shader
index 284053ab..3813a340 100644
--- a/Assets/Shaders/Chapter9/Chapter9-AlphaTestWithShadow.shader
+++ b/Assets/Shaders/Chapter9/Chapter9-AlphaTestWithShadow.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 9/Alpha Test With Shadow" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 9/Alpha Test With Shadow" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -43,11 +46,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
diff --git a/Assets/Shaders/Chapter9/Chapter9-AttenuationAndShadowUseBuildInFunctions.shader b/Assets/Shaders/Chapter9/Chapter9-AttenuationAndShadowUseBuildInFunctions.shader
index dc42d7e6..9bd69569 100644
--- a/Assets/Shaders/Chapter9/Chapter9-AttenuationAndShadowUseBuildInFunctions.shader
+++ b/Assets/Shaders/Chapter9/Chapter9-AttenuationAndShadowUseBuildInFunctions.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Chapter 9/Attenuation And Shadow Use Build-in Functions" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 9/Attenuation And Shadow Use Build-in Functions" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -41,11 +44,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
// Pass shadow coordinates to pixel shader
TRANSFER_SHADOW(o);
@@ -111,11 +114,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
// Pass shadow coordinates to pixel shader
TRANSFER_SHADOW(o);
diff --git a/Assets/Shaders/Chapter9/Chapter9-ForwardRendering.shader b/Assets/Shaders/Chapter9/Chapter9-ForwardRendering.shader
index a1619a41..675a80b9 100644
--- a/Assets/Shaders/Chapter9/Chapter9-ForwardRendering.shader
+++ b/Assets/Shaders/Chapter9/Chapter9-ForwardRendering.shader
@@ -1,4 +1,8 @@
-Shader "Unity Shaders Book/Chapter 9/Forward Rendering" {
+// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 9/Forward Rendering" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -38,11 +42,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
@@ -101,11 +105,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
@@ -128,10 +132,10 @@
fixed atten = 1.0;
#else
#if defined (POINT)
- float3 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1)).xyz;
+ float3 lightCoord = mul(unity_WorldToLight, float4(i.worldPos, 1)).xyz;
fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
#elif defined (SPOT)
- float4 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1));
+ float4 lightCoord = mul(unity_WorldToLight, float4(i.worldPos, 1));
fixed atten = (lightCoord.z > 0) * tex2D(_LightTexture0, lightCoord.xy / lightCoord.w + 0.5).w * tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
#else
fixed atten = 1.0;
diff --git a/Assets/Shaders/Chapter9/Chapter9-Shadow.shader b/Assets/Shaders/Chapter9/Chapter9-Shadow.shader
index 8225d389..08399ac8 100644
--- a/Assets/Shaders/Chapter9/Chapter9-Shadow.shader
+++ b/Assets/Shaders/Chapter9/Chapter9-Shadow.shader
@@ -1,4 +1,8 @@
-Shader "Unity Shaders Book/Chapter 9/Shadow" {
+// Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight'
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Chapter 9/Shadow" {
Properties {
_Diffuse ("Diffuse", Color) = (1, 1, 1, 1)
_Specular ("Specular", Color) = (1, 1, 1, 1)
@@ -41,11 +45,11 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
// Pass shadow coordinates to pixel shader
TRANSFER_SHADOW(o);
@@ -111,11 +115,11 @@
v2f vert(a2v v) {
v2f o;
- o.position = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.position = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
- o.worldPos = mul(_Object2World, v.vertex).xyz;
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
@@ -137,7 +141,7 @@
#ifdef USING_DIRECTIONAL_LIGHT
fixed atten = 1.0;
#else
- float3 lightCoord = mul(_LightMatrix0, float4(i.worldPos, 1)).xyz;
+ float3 lightCoord = mul(unity_WorldToLight, float4(i.worldPos, 1)).xyz;
fixed atten = tex2D(_LightTexture0, dot(lightCoord, lightCoord).rr).UNITY_ATTEN_CHANNEL;
#endif
diff --git a/Assets/Shaders/Common/BumpedDiffuse.shader b/Assets/Shaders/Common/BumpedDiffuse.shader
index 768dcdc7..904a9438 100644
--- a/Assets/Shaders/Common/BumpedDiffuse.shader
+++ b/Assets/Shaders/Common/BumpedDiffuse.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Common/Bumped Diffuse" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Common/Bumped Diffuse" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -44,12 +47,12 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
@@ -126,12 +129,12 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
diff --git a/Assets/Shaders/Common/BumpedSpecular.shader b/Assets/Shaders/Common/BumpedSpecular.shader
index 020508c4..d09948c7 100644
--- a/Assets/Shaders/Common/BumpedSpecular.shader
+++ b/Assets/Shaders/Common/BumpedSpecular.shader
@@ -1,4 +1,7 @@
-Shader "Unity Shaders Book/Common/Bumped Specular" {
+// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Unity Shaders Book/Common/Bumped Specular" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
_MainTex ("Main Tex", 2D) = "white" {}
@@ -49,14 +52,14 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
TANGENT_SPACE_ROTATION;
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
@@ -139,12 +142,12 @@
v2f vert(a2v v) {
v2f o;
- o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
+ o.pos = UnityObjectToClipPos(v.vertex);
o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv.zw = v.texcoord.xy * _BumpMap_ST.xy + _BumpMap_ST.zw;
- float3 worldPos = mul(_Object2World, v.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
fixed3 worldNormal = UnityObjectToWorldNormal(v.normal);
fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz);
fixed3 worldBinormal = cross(worldNormal, worldTangent) * v.tangent.w;
diff --git a/Assets/Textures/Chapter10/Cereals.sbsar.meta b/Assets/Textures/Chapter10/Cereals.sbsar.meta
index 72d22075..3357369e 100644
--- a/Assets/Textures/Chapter10/Cereals.sbsar.meta
+++ b/Assets/Textures/Chapter10/Cereals.sbsar.meta
@@ -1,571 +1,325 @@
fileFormatVersion: 2
guid: f3a2a1abb417143c08f0442679aff010
-timeCreated: 1446864985
-licenseType: Free
-SubstanceImporter:
- serializedVersion: 5
- materialInstances:
- - serializedVersion: 16
- name: Cereals
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 232528478, guid: 43a8bbf65be290d44ba52b94476242b9, type: 3}
+ version: 19
+ mGraphInstanceData:
+ - graphLabel: Cereals
prototypeName: Cereals
- shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
- shaderKeywords:
- renderQueue: -1
- lightmapFlags: 5
- inputs:
- - name: $normalformat
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: $outputsize
- value:
- scalar[0]: 8
- scalar[1]: 8
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: $randomseed
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Hue_Shift
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Saturation
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Luminosity
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Emboss
- value:
- scalar[0]: 5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Light_Angle
- value:
- scalar[0]: .125
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Contrast
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Normal
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ graphDescIndex: 0
+ generateAllOutputs: 0
+ generateMipMaps: 1
+ preset: " \n \n"
+ shaderName: Standard
+ outputNames: diffuse,normal,height
+ materialProperties:
+ shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ shaderKeywords: _MAINTEX _NORMALMAP _PARALLAXMAP
+ lightmapFlags: 4
+ texEnvs:
+ - name: _BumpMap
+ texture: {fileID: -3563781652622398527, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailAlbedoMap
texture: {instanceID: 0}
- - name: Depth
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailMask
texture: {instanceID: 0}
- - name: Relief_Balance
- value:
- scalar[0]: 32
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailNormalMap
texture: {instanceID: 0}
- - name: Milk_Level
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _EmissionMap
texture: {instanceID: 0}
- - name: Colour_Variation
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _MainTex
+ texture: {fileID: -3065192661199818651, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _MetallicGlossMap
texture: {instanceID: 0}
- - name: Cereal_Type
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _OcclusionMap
texture: {instanceID: 0}
- materialInformation:
- serializedVersion: 5
- offset: {x: 0, y: 0}
- scale: {x: 1, y: 1}
- generateMipmaps: 1
- generateAllOutputs: 0
- animationUpdateRate: 0
- materialProperties:
- serializedVersion: 2
- texEnvs:
- data:
- first:
- name: _MainTex
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _BumpMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailNormalMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _ParallaxMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _OcclusionMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _EmissionMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailMask
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailAlbedoMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _MetallicGlossMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _ParallaxMap
+ texture: {fileID: -6615723785262746778, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
floats:
- data:
- first:
- name: _SrcBlend
- second: 1
- data:
- first:
- name: _DstBlend
- second: 0
- data:
- first:
- name: _Cutoff
- second: .5
- data:
- first:
- name: _Parallax
- second: .0199999996
- data:
- first:
- name: _ZWrite
- second: 1
- data:
- first:
- name: _Glossiness
- second: .5
- data:
- first:
- name: _BumpScale
- second: 1
- data:
- first:
- name: _OcclusionStrength
- second: 1
- data:
- first:
- name: _DetailNormalMapScale
- second: 1
- data:
- first:
- name: _UVSec
- second: 0
- data:
- first:
- name: _Mode
- second: 0
- data:
- first:
- name: _Metallic
- second: 0
+ - name: _BumpScale
+ float: 1
+ - name: _Cutoff
+ float: 0.5
+ - name: _DetailNormalMapScale
+ float: 1
+ - name: _DstBlend
+ float: 0
+ - name: _GlossMapScale
+ float: 1
+ - name: _Glossiness
+ float: 0.5
+ - name: _GlossyReflections
+ float: 1
+ - name: _Metallic
+ float: 0
+ - name: _Mode
+ float: 0
+ - name: _OcclusionStrength
+ float: 1
+ - name: _Parallax
+ float: 0.02
+ - name: _SmoothnessTextureChannel
+ float: 0
+ - name: _SpecularHighlights
+ float: 1
+ - name: _SrcBlend
+ float: 1
+ - name: _UVSec
+ float: 0
+ - name: _ZWrite
+ float: 1
colors:
- data:
- first:
- name: _EmissionColor
- second: {r: 0, g: 0, b: 0, a: 1}
- data:
- first:
- name: _Color
- second: {r: 1, g: 1, b: 1, a: 1}
+ - name: _Color
+ color: {r: 1, g: 1, b: 1, a: 1}
+ - name: _EmissionColor
+ color: {r: 0, g: 0, b: 0, a: 1}
+ texturePackingList:
+ - outputName: diffuse
+ alphaSource: source
+ - outputName: specular
+ alphaSource: specular
+ - outputName: normal
+ alphaSource: source
+ - outputName: bump
+ alphaSource: bump
+ - outputName: displacement
+ alphaSource: displacement
+ - outputName: height
+ alphaSource: source
textureParameters:
- - name: Cereals_Diffuse
- alphaSource: 6
+ - textureName: Cereals - diffuse
+ wrapMode: 0
+ filterMode: 1
+ aniso: 1
+ - textureName: Cereals - specular
+ wrapMode: 0
+ filterMode: 1
+ aniso: 1
+ - textureName: Cereals - normal
+ wrapMode: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals - bump
wrapMode: 0
- - name: Cereals_Normal
- alphaSource: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals - displacement
wrapMode: 0
- - name: Cereals_Height
- alphaSource: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals - height
wrapMode: 0
- textureAssignments:
- - shaderProp:
- name: _MainTex
- material: {instanceID: 0}
- baseUID: 3836037186
- - shaderProp:
- name: _BumpMap
- material: {instanceID: 0}
- baseUID: 3836037199
- - shaderProp:
- name: _ParallaxMap
- material: {instanceID: 0}
- baseUID: 3836037212
- buildTargetSettings:
- - serializedVersion: 2
- buildTarget:
- textureWidth: 512
- textureHeight: 512
+ filterMode: 1
+ aniso: 1
+ colorSpaceList:
+ - outputName: diffuse
+ bLinear: 0
+ - outputName: specular
+ bLinear: 0
+ - outputName: normal
+ bLinear: 1
+ - outputName: bump
+ bLinear: 1
+ - outputName: displacement
+ bLinear: 1
+ - outputName: height
+ bLinear: 1
+ inputTextureMap: []
+ targetSettingList:
+ - label: Default
+ bLockRatio: 1
+ textureWidth: 256
+ textureHeight: 256
textureFormat: 0
- loadingBehavior: 1
- - serializedVersion: 16
- name: Cereals_1
+ bGenerateOnLoad: 0
+ material: {fileID: 5659185163984413371, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ generatedTextures:
+ - {fileID: -3065192661199818651, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
+ - {fileID: -3563781652622398527, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
+ - {fileID: -6615723785262746778, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
+ - graphLabel: Cereals_1
prototypeName: Cereals
- shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
- shaderKeywords:
- renderQueue: -1
- lightmapFlags: 5
- inputs:
- - name: $normalformat
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: $outputsize
- value:
- scalar[0]: 8
- scalar[1]: 8
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: $randomseed
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Hue_Shift
- value:
- scalar[0]: .762000024
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Saturation
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Luminosity
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Emboss
- value:
- scalar[0]: 5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Light_Angle
- value:
- scalar[0]: .125
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Contrast
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
- texture: {instanceID: 0}
- - name: Normal
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ graphDescIndex: 0
+ generateAllOutputs: 0
+ generateMipMaps: 1
+ preset: " \n \n
+ \ \n \n"
+ shaderName: Standard
+ outputNames: diffuse,normal,height
+ materialProperties:
+ shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ shaderKeywords: _MAINTEX _NORMALMAP _PARALLAXMAP
+ lightmapFlags: 4
+ texEnvs:
+ - name: _BumpMap
+ texture: {fileID: 8615785324153788525, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailAlbedoMap
texture: {instanceID: 0}
- - name: Depth
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailMask
texture: {instanceID: 0}
- - name: Relief_Balance
- value:
- scalar[0]: 32
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _DetailNormalMap
texture: {instanceID: 0}
- - name: Milk_Level
- value:
- scalar[0]: .5
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _EmissionMap
texture: {instanceID: 0}
- - name: Colour_Variation
- value:
- scalar[0]: 0
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _MainTex
+ texture: {fileID: -7675950417682531642, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _MetallicGlossMap
texture: {instanceID: 0}
- - name: Cereal_Type
- value:
- scalar[0]: 1.25999999
- scalar[1]: 0
- scalar[2]: 0
- scalar[3]: 0
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _OcclusionMap
texture: {instanceID: 0}
- materialInformation:
- serializedVersion: 5
- offset: {x: 0, y: 0}
- scale: {x: 1, y: 1}
- generateMipmaps: 1
- generateAllOutputs: 0
- animationUpdateRate: 0
- materialProperties:
- serializedVersion: 2
- texEnvs:
- data:
- first:
- name: _MainTex
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _BumpMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailNormalMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _ParallaxMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _OcclusionMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _EmissionMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailMask
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _DetailAlbedoMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
- data:
- first:
- name: _MetallicGlossMap
- second:
- texture: {instanceID: 0}
- scale: {x: 1, y: 1}
- offset: {x: 0, y: 0}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
+ - name: _ParallaxMap
+ texture: {fileID: 8096515178319887500, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ scale: {x: 1, y: 1}
+ offset: {x: 0, y: 0}
floats:
- data:
- first:
- name: _SrcBlend
- second: 1
- data:
- first:
- name: _DstBlend
- second: 0
- data:
- first:
- name: _Cutoff
- second: .5
- data:
- first:
- name: _Parallax
- second: .0199999996
- data:
- first:
- name: _ZWrite
- second: 1
- data:
- first:
- name: _Glossiness
- second: .5
- data:
- first:
- name: _BumpScale
- second: 1
- data:
- first:
- name: _OcclusionStrength
- second: 1
- data:
- first:
- name: _DetailNormalMapScale
- second: 1
- data:
- first:
- name: _UVSec
- second: 0
- data:
- first:
- name: _Mode
- second: 0
- data:
- first:
- name: _Metallic
- second: 0
+ - name: _BumpScale
+ float: 1
+ - name: _Cutoff
+ float: 0.5
+ - name: _DetailNormalMapScale
+ float: 1
+ - name: _DstBlend
+ float: 0
+ - name: _GlossMapScale
+ float: 1
+ - name: _Glossiness
+ float: 0.5
+ - name: _GlossyReflections
+ float: 1
+ - name: _Metallic
+ float: 0
+ - name: _Mode
+ float: 0
+ - name: _OcclusionStrength
+ float: 1
+ - name: _Parallax
+ float: 0.02
+ - name: _SmoothnessTextureChannel
+ float: 0
+ - name: _SpecularHighlights
+ float: 1
+ - name: _SrcBlend
+ float: 1
+ - name: _UVSec
+ float: 0
+ - name: _ZWrite
+ float: 1
colors:
- data:
- first:
- name: _EmissionColor
- second: {r: 0, g: 0, b: 0, a: 1}
- data:
- first:
- name: _Color
- second: {r: 1, g: 1, b: 1, a: 1}
+ - name: _Color
+ color: {r: 1, g: 1, b: 1, a: 1}
+ - name: _EmissionColor
+ color: {r: 0, g: 0, b: 0, a: 1}
+ texturePackingList:
+ - outputName: diffuse
+ alphaSource: source
+ - outputName: specular
+ alphaSource: specular
+ - outputName: normal
+ alphaSource: source
+ - outputName: bump
+ alphaSource: bump
+ - outputName: displacement
+ alphaSource: displacement
+ - outputName: height
+ alphaSource: source
textureParameters:
- - name: Cereals_1_Diffuse
- alphaSource: 6
+ - textureName: Cereals_1 - diffuse
+ wrapMode: 0
+ filterMode: 1
+ aniso: 1
+ - textureName: Cereals_1 - specular
+ wrapMode: 0
+ filterMode: 1
+ aniso: 1
+ - textureName: Cereals_1 - normal
+ wrapMode: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals_1 - bump
wrapMode: 0
- - name: Cereals_1_Normal
- alphaSource: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals_1 - displacement
wrapMode: 0
- - name: Cereals_1_Height
- alphaSource: 0
filterMode: 1
aniso: 1
+ - textureName: Cereals_1 - height
wrapMode: 0
- textureAssignments:
- - shaderProp:
- name: _MainTex
- material: {instanceID: 0}
- baseUID: 3836037186
- - shaderProp:
- name: _BumpMap
- material: {instanceID: 0}
- baseUID: 3836037199
- - shaderProp:
- name: _ParallaxMap
- material: {instanceID: 0}
- baseUID: 3836037212
- buildTargetSettings:
- - serializedVersion: 2
- buildTarget:
- textureWidth: 512
- textureHeight: 512
+ filterMode: 1
+ aniso: 1
+ colorSpaceList:
+ - outputName: diffuse
+ bLinear: 0
+ - outputName: specular
+ bLinear: 0
+ - outputName: normal
+ bLinear: 1
+ - outputName: bump
+ bLinear: 1
+ - outputName: displacement
+ bLinear: 1
+ - outputName: height
+ bLinear: 1
+ inputTextureMap: []
+ targetSettingList:
+ - label: Default
+ bLockRatio: 1
+ textureWidth: 256
+ textureHeight: 256
textureFormat: 0
- loadingBehavior: 1
- deletedPrototypes: []
- userData:
- assetBundleName:
- assetBundleVariant:
+ bGenerateOnLoad: 0
+ material: {fileID: -8728478465915717437, guid: f3a2a1abb417143c08f0442679aff010,
+ type: 3}
+ generatedTextures:
+ - {fileID: -7675950417682531642, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
+ - {fileID: 8615785324153788525, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
+ - {fileID: 8096515178319887500, guid: f3a2a1abb417143c08f0442679aff010, type: 3}
diff --git a/Packages/manifest.json b/Packages/manifest.json
new file mode 100644
index 00000000..d7bcbaa5
--- /dev/null
+++ b/Packages/manifest.json
@@ -0,0 +1,41 @@
+{
+ "dependencies": {
+ "com.unity.ads": "2.0.8",
+ "com.unity.analytics": "3.3.2",
+ "com.unity.collab-proxy": "1.2.16",
+ "com.unity.package-manager-ui": "2.1.2",
+ "com.unity.purchasing": "2.0.6",
+ "com.unity.textmeshpro": "2.0.1",
+ "com.unity.timeline": "1.0.0",
+ "com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.cloth": "1.0.0",
+ "com.unity.modules.director": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.particlesystem": "1.0.0",
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.physics2d": "1.0.0",
+ "com.unity.modules.screencapture": "1.0.0",
+ "com.unity.modules.terrain": "1.0.0",
+ "com.unity.modules.terrainphysics": "1.0.0",
+ "com.unity.modules.tilemap": "1.0.0",
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.uielements": "1.0.0",
+ "com.unity.modules.umbra": "1.0.0",
+ "com.unity.modules.unityanalytics": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.modules.vehicles": "1.0.0",
+ "com.unity.modules.video": "1.0.0",
+ "com.unity.modules.vr": "1.0.0",
+ "com.unity.modules.wind": "1.0.0",
+ "com.unity.modules.xr": "1.0.0"
+ }
+}
diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset
new file mode 100644
index 00000000..a90e63df
Binary files /dev/null and b/ProjectSettings/PresetManager.asset differ
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index 7c9918bb..8c62f728 100644
Binary files a/ProjectSettings/ProjectSettings.asset and b/ProjectSettings/ProjectSettings.asset differ
diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt
index 961ebb93..56791dad 100644
--- a/ProjectSettings/ProjectVersion.txt
+++ b/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 5.3.1f1
-m_StandardAssetsVersion: 0
+m_EditorVersion: 2019.1.11f1
+m_EditorVersionWithRevision: 2019.1.11f1 (9b001d489a54)
diff --git a/ProjectSettings/ProjectVersionPrevious.txt b/ProjectSettings/ProjectVersionPrevious.txt
new file mode 100644
index 00000000..56791dad
--- /dev/null
+++ b/ProjectSettings/ProjectVersionPrevious.txt
@@ -0,0 +1,2 @@
+m_EditorVersion: 2019.1.11f1
+m_EditorVersionWithRevision: 2019.1.11f1 (9b001d489a54)
diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset
index fbf5f058..a04674ba 100644
Binary files a/ProjectSettings/UnityConnectSettings.asset and b/ProjectSettings/UnityConnectSettings.asset differ
diff --git a/ProjectSettings/UnityAdsSettings.asset b/ProjectSettings/VFXManager.asset
similarity index 80%
rename from ProjectSettings/UnityAdsSettings.asset
rename to ProjectSettings/VFXManager.asset
index 2d1d81b7..70830ed3 100644
Binary files a/ProjectSettings/UnityAdsSettings.asset and b/ProjectSettings/VFXManager.asset differ
diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset
new file mode 100644
index 00000000..482590c1
--- /dev/null
+++ b/ProjectSettings/XRSettings.asset
@@ -0,0 +1,10 @@
+{
+ "m_SettingKeys": [
+ "VR Device Disabled",
+ "VR Device User Alert"
+ ],
+ "m_SettingValues": [
+ "False",
+ "False"
+ ]
+}
\ No newline at end of file