├── Assets ├── TextMesh Pro │ ├── Resources │ │ ├── LineBreaking Leading Characters.txt │ │ ├── LineBreaking Following Characters.txt │ │ ├── TMP Settings.asset.meta │ │ ├── Sprite Assets │ │ │ └── EmojiOne.asset.meta │ │ ├── LineBreaking Following Characters.txt.meta │ │ ├── LineBreaking Leading Characters.txt.meta │ │ ├── Fonts & Materials │ │ │ ├── LiberationSans SDF.asset.meta │ │ │ ├── LiberationSans SDF - Outline.mat.meta │ │ │ ├── LiberationSans SDF - Drop Shadow.mat.meta │ │ │ ├── LiberationSans SDF - Fallback.asset.meta │ │ │ ├── LiberationSans SDF - Outline.mat │ │ │ ├── LiberationSans SDF - Drop Shadow.mat │ │ │ └── LiberationSans SDF - Fallback.asset │ │ ├── Sprite Assets.meta │ │ ├── Style Sheets.meta │ │ ├── Style Sheets │ │ │ ├── Default Style Sheet.asset.meta │ │ │ └── Default Style Sheet.asset │ │ ├── Fonts & Materials.meta │ │ └── TMP Settings.asset │ ├── Sprites │ │ ├── EmojiOne.png │ │ ├── EmojiOne Attribution.txt.meta │ │ ├── EmojiOne Attribution.txt │ │ ├── EmojiOne.json.meta │ │ ├── EmojiOne.json │ │ └── EmojiOne.png.meta │ ├── Fonts │ │ ├── LiberationSans.ttf │ │ ├── LiberationSans - OFL.txt.meta │ │ ├── LiberationSans.ttf.meta │ │ └── LiberationSans - OFL.txt │ ├── Documentation │ │ ├── TextMesh Pro User Guide 2016.pdf │ │ └── TextMesh Pro User Guide 2016.pdf.meta │ ├── Fonts.meta │ ├── Resources.meta │ ├── Shaders.meta │ ├── Sprites.meta │ ├── Documentation.meta │ └── Shaders │ │ ├── TMP_SDF.shader.meta │ │ ├── TMPro.cginc.meta │ │ ├── TMP_Bitmap.shader.meta │ │ ├── TMP_SDF SSD.shader.meta │ │ ├── TMP_Sprite.shader.meta │ │ ├── TMPro_Mobile.cginc.meta │ │ ├── TMPro_Surface.cginc.meta │ │ ├── TMP_Bitmap-Mobile.shader.meta │ │ ├── TMP_SDF Overlay.shader.meta │ │ ├── TMP_SDF-Mobile SSD.shader.meta │ │ ├── TMP_SDF-Mobile.shader.meta │ │ ├── TMP_SDF-Surface.shader.meta │ │ ├── TMPro_Properties.cginc.meta │ │ ├── TMP_Bitmap-Custom-Atlas.shader.meta │ │ ├── TMP_SDF-Mobile Masking.shader.meta │ │ ├── TMP_SDF-Mobile Overlay.shader.meta │ │ ├── TMP_SDF-Surface-Mobile.shader.meta │ │ ├── TMPro.cginc │ │ ├── TMP_Sprite.shader │ │ ├── TMPro_Properties.cginc │ │ ├── TMP_SDF-Mobile SSD.shader │ │ ├── TMPro_Surface.cginc │ │ ├── TMP_Bitmap.shader │ │ ├── TMP_SDF-Surface-Mobile.shader │ │ ├── TMP_Bitmap-Custom-Atlas.shader │ │ ├── TMP_Bitmap-Mobile.shader │ │ ├── TMP_SDF-Surface.shader │ │ ├── TMPro_Mobile.cginc │ │ ├── TMP_SDF-Mobile Overlay.shader │ │ ├── TMP_SDF-Mobile.shader │ │ └── TMP_SDF-Mobile Masking.shader ├── Models │ ├── BowlingPin.fbx │ └── BowlingPin.fbx.meta ├── Models.meta ├── Prefabs.meta ├── Scenes.meta ├── Scenes │ └── BowlingAlley.unity.meta ├── Scripts.meta ├── Materials.meta ├── Prefabs │ ├── InteractableBall.prefab.meta │ ├── CollidableBowlingPin.prefab.meta │ └── CollidableBowlingPin.prefab ├── TextMesh Pro.meta ├── Materials │ ├── Ball.mat.meta │ ├── Bumper.mat.meta │ ├── Floor.mat.meta │ ├── Lane.mat.meta │ ├── BackStop.mat.meta │ ├── BowlingPin.mat.meta │ ├── BackStop.mat │ ├── Ball.mat │ ├── Bumper.mat │ ├── Floor.mat │ ├── Lane.mat │ └── BowlingPin.mat └── Scripts │ ├── Bumper.cs.meta │ ├── Pin.cs.meta │ ├── PinGroup.cs.meta │ ├── Bumper.cs │ ├── PinGroup.cs │ └── Pin.cs ├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── PresetManager.asset ├── EditorBuildSettings.asset ├── XRSettings.asset ├── TimeManager.asset ├── VFXManager.asset ├── AudioManager.asset ├── TagManager.asset ├── UnityConnectSettings.asset ├── EditorSettings.asset ├── PackageManagerSettings.asset ├── DynamicsManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── GraphicsSettings.asset └── QualitySettings.asset ├── .vsconfig ├── Documentation └── Tutorials │ ├── 01.MakingAVRBowlingGame │ └── assets │ │ └── images │ │ ├── GettingAStrike.jpg │ │ ├── CreateBowlingPinPrefab.jpg │ │ ├── CreateFloorGameObject.jpg │ │ ├── CreateLaneGameObject.jpg │ │ ├── LayoutBowlingPinPrefabs.jpg │ │ ├── ConvertBallToInteractable.jpg │ │ ├── CreateLaneBumperGameObjects.jpg │ │ ├── SetPositionOfTrackedAlias.jpg │ │ ├── UpdateBowlingPinMeshScaleFactor.jpg │ │ ├── UpdateInteractableBallParameters.jpg │ │ ├── DragAndDropControllerMappingsIntoScene.jpg │ │ └── DragAndDropLeftGripPressToLeftInteractorGrabAction.jpg │ ├── 02.ExpandingTheVRBowlingGame │ └── assets │ │ └── images │ │ ├── AddPinScript.png │ │ ├── OpenPinPrefab.png │ │ ├── AddBumperScript.png │ │ ├── AddPinGroupScript.png │ │ ├── MovePinsForward.png │ │ ├── AddResetBallButton.png │ │ ├── AddResetPinsButton.png │ │ ├── CreateLaneBackStop.png │ │ ├── AddRigidbodyToBackStop.png │ │ ├── AddRigidbodyToBumpers.png │ │ ├── LookingAtMenuButtons.png │ │ ├── SelectBounceFunction.png │ │ ├── DragAndDropPinsToActivated.png │ │ ├── SelectCheckToppleFunction.png │ │ ├── SelectResetBallOnActivate.png │ │ ├── SetUpListenersForResetBall.png │ │ ├── AddContainerForResetBallLogic.png │ │ ├── SelectResetBallLogicFunction.png │ │ ├── DragAndDropResetBallToActivated.png │ │ ├── SelectResetPositionsOnActivate.png │ │ ├── DragAndDropControllerActionsToPointer.png │ │ ├── DragAndDropResetBallPositionIntoTarget.png │ │ ├── DragAndDropLaneIntoCollisionStartedParameter.png │ │ ├── DragAndDropResetBallIntoCollisionStartedParameter.png │ │ ├── DragAndDropResetBallPositionIntoRigidbodyMutator.png │ │ └── DragAndDropCollidableBowlingPinIntoCollisionStartedParameter.png │ └── 03.ConvertingToUnity2020 │ └── assets │ └── images │ ├── AddingPrefabToScene.png │ ├── DefaultErrorsOnPlay.png │ ├── UpgradeProjectPrompt.png │ ├── InstallGenericXRSamples.png │ ├── DragAndDropActionIntoPointer.png │ ├── DragAndDropActionIntoInteractor.png │ ├── DragAndDropCameraToTrackedAlias.png │ └── InstallXRPluginManagementPackage.png ├── .gitignore ├── LICENSE.md ├── Packages └── manifest.json └── README.md /Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt: -------------------------------------------------------------------------------- 1 | ([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇$¥₩ # -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.4.38f1 2 | m_EditorVersionWithRevision: 2019.4.38f1 (fdbb7325fa47) 3 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Models/BowlingPin.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Assets/Models/BowlingPin.fbx -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Assets/TextMesh Pro/Sprites/EmojiOne.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Fonts/LiberationSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Assets/TextMesh Pro/Fonts/LiberationSans.ttf -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt: -------------------------------------------------------------------------------- 1 | )]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,. -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf -------------------------------------------------------------------------------- /Assets/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca81c53c662427e4f8a97df7f8325e0f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97f006f2745d2774d9791c35e88293e1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a9db79adfbd4d54c94396b15e18c73b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/BowlingAlley.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01fc5828f6322744fa136d326a563baf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 107c6d9ab5d0cfc49b27a0c41a93d756 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/InteractableBall.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37887c94bc57e654a8588731aaf9e387 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54d1bd14bd3ca042bd867b519fee8cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/CollidableBowlingPin.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a8369851ef3118b40b2c48a72e2b2aff 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ab70aee4d56447429c680537fbf93ed 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 243e06394e614e5d99fab26083b707fa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9f693669af91aa45ad615fc681ed29f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0603b6d5186471b96c778c3949c7ce2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/GettingAStrike.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/GettingAStrike.jpg -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e7e8f5a82a3a134e91c54efd2274ea9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 381dcb09d5029d14897e55f98031fca5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddPinScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddPinScript.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt: -------------------------------------------------------------------------------- 1 | This sample of beautiful emojis are provided by EmojiOne https://www.emojione.com/ 2 | 3 | Please visit their website to view the complete set of their emojis and review their licensing terms. -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/OpenPinPrefab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/OpenPinPrefab.png -------------------------------------------------------------------------------- /Assets/Materials/Ball.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b783de53de46294ab994173b0d638ed 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Bumper.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6586200672073b24db6acf24f21e6e45 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Floor.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf053c47568e1c64884665f5202d9a34 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Lane.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6baae0d3be5f3d4fae07237be9091a7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateBowlingPinPrefab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateBowlingPinPrefab.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateFloorGameObject.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateFloorGameObject.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateLaneGameObject.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateLaneGameObject.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddBumperScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddBumperScript.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddPinGroupScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddPinGroupScript.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/MovePinsForward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/MovePinsForward.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/AddingPrefabToScene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/AddingPrefabToScene.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DefaultErrorsOnPlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DefaultErrorsOnPlay.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/UpgradeProjectPrompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/UpgradeProjectPrompt.png -------------------------------------------------------------------------------- /Assets/Materials/BackStop.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a5e8d9fe297398c49af2ae05ea1c7bc8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/BowlingPin.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb0735e6bc58e484188c61d8c9edb63b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b8d251f9af63b746bf2f7ffe00ebb9b 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f05276190cf498a8153f6cbe761d4e6 3 | timeCreated: 1480316860 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/LayoutBowlingPinPrefabs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/LayoutBowlingPinPrefabs.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddResetBallButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddResetBallButton.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddResetPinsButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddResetPinsButton.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/CreateLaneBackStop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/CreateLaneBackStop.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/InstallGenericXRSamples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/InstallGenericXRSamples.png -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/ConvertBallToInteractable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/ConvertBallToInteractable.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateLaneBumperGameObjects.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/CreateLaneBumperGameObjects.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/SetPositionOfTrackedAlias.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/SetPositionOfTrackedAlias.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddRigidbodyToBackStop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddRigidbodyToBackStop.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddRigidbodyToBumpers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddRigidbodyToBumpers.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/LookingAtMenuButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/LookingAtMenuButtons.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectBounceFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectBounceFunction.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e59c59b81ab47f9b6ec5781fa725d2c 3 | timeCreated: 1484171296 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/TMP Settings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f5b5dff67a942289a9defa416b206f3 3 | timeCreated: 1436653997 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropActionIntoPointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropActionIntoPointer.png -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/UpdateBowlingPinMeshScaleFactor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/UpdateBowlingPinMeshScaleFactor.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/UpdateInteractableBallParameters.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/UpdateInteractableBallParameters.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropPinsToActivated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropPinsToActivated.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectCheckToppleFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectCheckToppleFunction.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetBallOnActivate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetBallOnActivate.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SetUpListenersForResetBall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SetUpListenersForResetBall.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropActionIntoInteractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropActionIntoInteractor.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropCameraToTrackedAlias.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/DragAndDropCameraToTrackedAlias.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c41005c129ba4d66911b75229fd70b45 3 | timeCreated: 1480316912 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddContainerForResetBallLogic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/AddContainerForResetBallLogic.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetBallLogicFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetBallLogicFunction.png -------------------------------------------------------------------------------- /Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/InstallXRPluginManagementPackage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/03.ConvertingToUnity2020/assets/images/InstallXRPluginManagementPackage.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fade42e8bc714b018fac513c043d323b 3 | timeCreated: 1425440388 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d82c1b31c7e74239bff1220585707d2b 3 | timeCreated: 1425440388 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallToActivated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallToActivated.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetPositionsOnActivate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/SelectResetPositionsOnActivate.png -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f586378b4e144a9851e7b34d9b748ee 3 | timeCreated: 1484171803 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Sprite Assets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 512a49d95c0c4332bdd98131869c23c9 3 | folderAsset: yes 4 | timeCreated: 1441876896 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Style Sheets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4aecb92fff08436c8303b10eab8da368 3 | folderAsset: yes 4 | timeCreated: 1441876950 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f952c082cb03451daed3ee968ac6c63e 3 | timeCreated: 1432805430 4 | licenseType: Store 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/DragAndDropControllerMappingsIntoScene.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/DragAndDropControllerMappingsIntoScene.jpg -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 731f1baa9d144a9897cb1d341c2092b8 3 | folderAsset: yes 4 | timeCreated: 1442040525 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropControllerActionsToPointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropControllerActionsToPointer.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79459efec17a4d00a321bdcc27bbc385 3 | timeCreated: 1484172856 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68e6db2ebdc24f95958faec2be5558d6 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 407bc68d299748449bbf7f48ee690f8d 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallPositionIntoTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallPositionIntoTarget.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e73a58f6e2794ae7b1b7e50b7fb811b0 3 | timeCreated: 1484172806 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e498d1c8094910479dc3e1b768306a4 3 | timeCreated: 1484171803 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 128e987d567d4e2c824d754223b3f3b0 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14eb328de4b8eb245bb7cea29e4ac00b 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf81c85f95fe47e1a27f6ae460cf182c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c334973cef89a9840b0b0c507e0377ab 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d930090c0cd643c7b55f19a38538c162 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e3b057af24249748ff873be7fafee47 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd89cf5b9246416f84610a006f916af7 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8d12adcee749c344b8117cf7c7eb912 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe393ace9b354375a9cb14cdbbc28be4 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7ada0af4f174f0694ca6a487b8f543d 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3997e2241185407d80309a82f9148466 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropLaneIntoCollisionStartedParameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropLaneIntoCollisionStartedParameter.png -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48bb5f55d8670e349b6e614913f9d910 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc1ede39bf3643ee8e493720e4259791 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a02a7d8c237544f1962732b55a9aebf1 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85187c2149c549c5b33f0cdb02836b17 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/DragAndDropLeftGripPressToLeftInteractorGrabAction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/01.MakingAVRBowlingGame/assets/images/DragAndDropLeftGripPressToLeftInteractorGrabAction.jpg -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallIntoCollisionStartedParameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallIntoCollisionStartedParameter.png -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallPositionIntoRigidbodyMutator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropResetBallPositionIntoRigidbodyMutator.png -------------------------------------------------------------------------------- /Assets/Scripts/Bumper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf4fb8021a96f9d4689456ad990133f6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Pin.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51e5dc30037d1ec4db5acc224a423507 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/PinGroup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed5ae219122e2964a8ec5634f9fa8e5b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropCollidableBowlingPinIntoCollisionStartedParameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ExtendRealityLtd/VRTK.Tutorials.VRBowling/HEAD/Documentation/Tutorials/02.ExpandingTheVRBowlingGame/assets/images/DragAndDropCollidableBowlingPinIntoCollisionStartedParameter.png -------------------------------------------------------------------------------- /Assets/Scripts/Bumper.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Zinnia.Tracking.Collision; 3 | 4 | public class Bumper : MonoBehaviour 5 | { 6 | public void Bounce(CollisionNotifier.EventData data) 7 | { 8 | data.CollisionData.rigidbody.velocity = Vector3.Reflect(data.CollisionData.rigidbody.velocity, Vector3.right); 9 | } 10 | } -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | [Ll]ogs/ 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.mdb 26 | *.opendb 27 | *.VC.db 28 | 29 | # Builds 30 | *.apk 31 | *.unitypackage 32 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3265ab4bf004d28a9537516768c1c75 3 | timeCreated: 1484171297 4 | licenseType: Pro 5 | TrueTypeFontImporter: 6 | serializedVersion: 2 7 | fontSize: 16 8 | forceTextureCase: -2 9 | characterSpacing: 1 10 | characterPadding: 0 11 | includeFontData: 1 12 | use2xBehaviour: 0 13 | fontNames: [] 14 | fallbackFontReferences: [] 15 | customCharacters: 16 | fontRenderingMode: 0 17 | userData: 18 | assetBundleName: 19 | assetBundleVariant: 20 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Extend Reality Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /Assets/Scripts/PinGroup.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class PinGroup : MonoBehaviour 4 | { 5 | private Pin[] pins; 6 | private Vector3[] positions; 7 | private Quaternion[] rotations; 8 | 9 | protected void Awake() 10 | { 11 | pins = GetComponentsInChildren(); 12 | SavePositions(); 13 | } 14 | 15 | public void SavePositions() 16 | { 17 | positions = new Vector3[pins.Length]; 18 | rotations = new Quaternion[pins.Length]; 19 | for (int index = 0; index < pins.Length; index++) 20 | { 21 | positions[index] = pins[index].transform.position; 22 | rotations[index] = pins[index].transform.rotation; 23 | } 24 | } 25 | 26 | public void ResetPositions() 27 | { 28 | for (int index = 0; index < pins.Length; index++) 29 | { 30 | pins[index].transform.position = positions[index]; 31 | pins[index].transform.rotation = rotations[index]; 32 | pins[index].CancelToppleCheck(); 33 | Rigidbody pinRigidbody = pins[index].GetComponent(); 34 | pinRigidbody.velocity = Vector3.zero; 35 | pinRigidbody.angularVelocity = Vector3.zero; 36 | pins[index].gameObject.SetActive(true); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_ScopedRegistriesSettingsExpanded: 1 16 | oneTimeWarningShown: 0 17 | m_Registries: 18 | - m_Id: main 19 | m_Name: 20 | m_Url: https://packages.unity.com 21 | m_Scopes: [] 22 | m_IsDefault: 1 23 | - m_Id: scoped:npmjs 24 | m_Name: npmjs 25 | m_Url: https://registry.npmjs.org 26 | m_Scopes: 27 | - io.extendreality 28 | m_IsDefault: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_ErrorMessage: 33 | m_Original: 34 | m_Id: scoped:npmjs 35 | m_Name: npmjs 36 | m_Url: https://registry.npmjs.org 37 | m_Scopes: 38 | - io.extendreality 39 | m_IsDefault: 0 40 | m_Modified: 0 41 | m_Name: npmjs 42 | m_Url: https://registry.npmjs.org 43 | m_Scopes: 44 | - io.extendreality 45 | m_SelectedScopeIndex: 0 46 | -------------------------------------------------------------------------------- /Assets/Scripts/Pin.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Zinnia.Extension; 3 | 4 | public class Pin : MonoBehaviour 5 | { 6 | public float pinFallThreshold = 0.02f; 7 | public float toppleLife = 3f; 8 | public int tries = 10; 9 | 10 | private Quaternion defaultRotation; 11 | private int currentTries; 12 | 13 | protected void Awake() 14 | { 15 | defaultRotation = transform.localRotation; 16 | } 17 | 18 | public void CheckTopple() 19 | { 20 | CancelToppleCheck(); 21 | CheckRotation(); 22 | InvokeRepeating("CheckRotation", 0f, 1f); 23 | } 24 | 25 | public void CancelToppleCheck() 26 | { 27 | currentTries = 0; 28 | CancelInvoke("CheckRotation"); 29 | CancelInvoke("HidePin"); 30 | } 31 | 32 | protected void CheckRotation() 33 | { 34 | currentTries++; 35 | if (!Mathf.Abs(Quaternion.Dot(defaultRotation, transform.localRotation)).ApproxEquals(1f, pinFallThreshold)) 36 | { 37 | Invoke("HidePin", toppleLife); 38 | } 39 | else 40 | { 41 | if (currentTries > tries) 42 | { 43 | CancelToppleCheck(); 44 | } 45 | } 46 | } 47 | 48 | protected void HidePin() 49 | { 50 | gameObject.SetActive(false); 51 | } 52 | } -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/TMP Settings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391, type: 3} 13 | m_Name: TMP Settings 14 | m_EditorClassIdentifier: 15 | m_enableWordWrapping: 1 16 | m_enableKerning: 1 17 | m_enableExtraPadding: 0 18 | m_enableTintAllSprites: 0 19 | m_enableParseEscapeCharacters: 1 20 | m_EnableRaycastTarget: 1 21 | m_GetFontFeaturesAtRuntime: 1 22 | m_missingGlyphCharacter: 0 23 | m_warningsDisabled: 1 24 | m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 25 | m_defaultFontAssetPath: Fonts & Materials/ 26 | m_defaultFontSize: 36 27 | m_defaultAutoSizeMinRatio: 0.5 28 | m_defaultAutoSizeMaxRatio: 2 29 | m_defaultTextMeshProTextContainerSize: {x: 20, y: 5} 30 | m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50} 31 | m_autoSizeTextContainer: 0 32 | m_fallbackFontAssets: [] 33 | m_matchMaterialPreset: 1 34 | m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45, 35 | type: 2} 36 | m_defaultSpriteAssetPath: Sprite Assets/ 37 | m_enableEmojiSupport: 1 38 | m_MissingCharacterSpriteUnicode: 0 39 | m_defaultColorGradientPresetsPath: Color Gradient Presets/ 40 | m_defaultStyleSheet: {fileID: 11400000, guid: f952c082cb03451daed3ee968ac6c63e, 41 | type: 2} 42 | m_StyleSheetsResourcePath: 43 | m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3} 44 | m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b, 45 | type: 3} 46 | m_UseModernHangulLineBreakingRules: 0 47 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /Assets/Materials/BackStop.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: BackStop 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Ball.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Ball 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.1522784, g: 0.5471698, b: 0.20699231, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Bumper.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Bumper 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.19956899, g: 0.1742168, b: 0.2735849, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Floor.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Floor 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.17243683, g: 0.20312019, b: 0.23584908, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Lane.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Lane 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.6132076, g: 0.45214447, b: 0.14173195, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/BowlingPin.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: BowlingPin 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.8301887, g: 0.8301887, b: 0.8301887, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro.cginc: -------------------------------------------------------------------------------- 1 | float2 UnpackUV(float uv) 2 | { 3 | float2 output; 4 | output.x = floor(uv / 4096); 5 | output.y = uv - 4096 * output.x; 6 | 7 | return output * 0.001953125; 8 | } 9 | 10 | fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness) 11 | { 12 | half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); 13 | half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline)); 14 | 15 | faceColor.rgb *= faceColor.a; 16 | outlineColor.rgb *= outlineColor.a; 17 | 18 | faceColor = lerp(faceColor, outlineColor, outlineAlpha); 19 | 20 | faceColor *= faceAlpha; 21 | 22 | return faceColor; 23 | } 24 | 25 | float3 GetSurfaceNormal(float4 h, float bias) 26 | { 27 | bool raisedBevel = step(1, fmod(_ShaderFlags, 2)); 28 | 29 | h += bias+_BevelOffset; 30 | 31 | float bevelWidth = max(.01, _OutlineWidth+_BevelWidth); 32 | 33 | // Track outline 34 | h -= .5; 35 | h /= bevelWidth; 36 | h = saturate(h+.5); 37 | 38 | if(raisedBevel) h = 1 - abs(h*2.0 - 1.0); 39 | h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness); 40 | h = min(h, 1.0-_BevelClamp); 41 | h *= _Bevel * bevelWidth * _GradientScale * -2.0; 42 | 43 | float3 va = normalize(float3(1.0, 0.0, h.y - h.x)); 44 | float3 vb = normalize(float3(0.0, -1.0, h.w - h.z)); 45 | 46 | return cross(va, vb); 47 | } 48 | 49 | float3 GetSurfaceNormal(float2 uv, float bias, float3 delta) 50 | { 51 | // Read "height field" 52 | float4 h = {tex2D(_MainTex, uv - delta.xz).a, 53 | tex2D(_MainTex, uv + delta.xz).a, 54 | tex2D(_MainTex, uv - delta.zy).a, 55 | tex2D(_MainTex, uv + delta.zy).a}; 56 | 57 | return GetSurfaceNormal(h, bias); 58 | } 59 | 60 | float3 GetSpecular(float3 n, float3 l) 61 | { 62 | float spec = pow(max(0.0, dot(n, l)), _Reflectivity); 63 | return _SpecularColor.rgb * spec * _SpecularPower; 64 | } 65 | 66 | float4 GetGlowColor(float d, float scale) 67 | { 68 | float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale; 69 | float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale; 70 | glow = saturate(abs(glow/(1.0 + t))); 71 | glow = 1.0-pow(glow, _GlowPower); 72 | glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel 73 | return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2)); 74 | } 75 | 76 | float4 BlendARGB(float4 overlying, float4 underlying) 77 | { 78 | overlying.rgb *= overlying.a; 79 | underlying.rgb *= underlying.a; 80 | float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb); 81 | float alpha = underlying.a + (1-underlying.a)*overlying.a; 82 | return float4(blended, alpha); 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "scopedRegistries": [ 3 | { 4 | "name": "npmjs", 5 | "url": "https://registry.npmjs.org/", 6 | "scopes": [ 7 | "io.extendreality" 8 | ] 9 | } 10 | ], 11 | "dependencies": { 12 | "com.unity.collab-proxy": "1.14.16", 13 | "com.unity.ext.nunit": "1.0.6", 14 | "com.unity.ide.rider": "1.2.1", 15 | "com.unity.ide.visualstudio": "2.0.15", 16 | "com.unity.ide.vscode": "1.2.5", 17 | "com.unity.test-framework": "1.1.31", 18 | "com.unity.textmeshpro": "2.1.6", 19 | "com.unity.timeline": "1.2.18", 20 | "com.unity.ugui": "1.0.0", 21 | "com.unity.xr.legacyinputhelpers": "2.1.9", 22 | "com.unity.xr.oculus.standalone": "2.38.4", 23 | "com.unity.xr.openvr.standalone": "2.0.5", 24 | "io.extendreality.tilia.camerarigs.trackedalias.unity": "2.0.1", 25 | "io.extendreality.tilia.camerarigs.unityxr": "2.0.1", 26 | "io.extendreality.tilia.indicators.objectpointers.unity": "1.7.20", 27 | "io.extendreality.tilia.input.unityinputmanager": "2.0.1", 28 | "io.extendreality.tilia.interactions.interactables.unity": "2.0.1", 29 | "io.extendreality.tilia.interactions.spatialbuttons.unity": "2.0.2", 30 | "com.unity.modules.ai": "1.0.0", 31 | "com.unity.modules.androidjni": "1.0.0", 32 | "com.unity.modules.animation": "1.0.0", 33 | "com.unity.modules.assetbundle": "1.0.0", 34 | "com.unity.modules.audio": "1.0.0", 35 | "com.unity.modules.cloth": "1.0.0", 36 | "com.unity.modules.director": "1.0.0", 37 | "com.unity.modules.imageconversion": "1.0.0", 38 | "com.unity.modules.imgui": "1.0.0", 39 | "com.unity.modules.jsonserialize": "1.0.0", 40 | "com.unity.modules.particlesystem": "1.0.0", 41 | "com.unity.modules.physics": "1.0.0", 42 | "com.unity.modules.physics2d": "1.0.0", 43 | "com.unity.modules.screencapture": "1.0.0", 44 | "com.unity.modules.terrain": "1.0.0", 45 | "com.unity.modules.terrainphysics": "1.0.0", 46 | "com.unity.modules.tilemap": "1.0.0", 47 | "com.unity.modules.ui": "1.0.0", 48 | "com.unity.modules.uielements": "1.0.0", 49 | "com.unity.modules.umbra": "1.0.0", 50 | "com.unity.modules.unityanalytics": "1.0.0", 51 | "com.unity.modules.unitywebrequest": "1.0.0", 52 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 53 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 54 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 55 | "com.unity.modules.unitywebrequestwww": "1.0.0", 56 | "com.unity.modules.vehicles": "1.0.0", 57 | "com.unity.modules.video": "1.0.0", 58 | "com.unity.modules.vr": "1.0.0", 59 | "com.unity.modules.wind": "1.0.0", 60 | "com.unity.modules.xr": "1.0.0" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Assets/Models/BowlingPin.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b91270cef1e82de42a090e1b4b8881f1 3 | ModelImporter: 4 | serializedVersion: 26 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | importMaterials: 0 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 0 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 7.8 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 0 43 | importBlendShapes: 0 44 | importCameras: 0 45 | importLights: 0 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 0 72 | copyAvatar: 0 73 | humanDescription: 74 | serializedVersion: 3 75 | human: [] 76 | skeleton: [] 77 | armTwist: 0.5 78 | foreArmTwist: 0.5 79 | upperLegTwist: 0.5 80 | legTwist: 0.5 81 | armStretch: 0.05 82 | legStretch: 0.05 83 | feetSpacing: 0 84 | globalScale: 7.8 85 | rootMotionBoneName: 86 | hasTranslationDoF: 0 87 | hasExtraRoot: 0 88 | skeletonHasParents: 1 89 | lastHumanDescriptionAvatarSource: {instanceID: 0} 90 | animationType: 0 91 | humanoidOversampling: 1 92 | additionalBone: 0 93 | userData: 94 | assetBundleName: 95 | assetBundleVariant: 96 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Sprite.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Sprite" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Sprite Texture", 2D) = "white" {} 6 | _Color ("Tint", Color) = (1,1,1,1) 7 | 8 | _StencilComp ("Stencil Comparison", Float) = 8 9 | _Stencil ("Stencil ID", Float) = 0 10 | _StencilOp ("Stencil Operation", Float) = 0 11 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 12 | _StencilReadMask ("Stencil Read Mask", Float) = 255 13 | 14 | _CullMode ("Cull Mode", Float) = 0 15 | _ColorMask ("Color Mask", Float) = 15 16 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 17 | 18 | [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 19 | } 20 | 21 | SubShader 22 | { 23 | Tags 24 | { 25 | "Queue"="Transparent" 26 | "IgnoreProjector"="True" 27 | "RenderType"="Transparent" 28 | "PreviewType"="Plane" 29 | "CanUseSpriteAtlas"="True" 30 | } 31 | 32 | Stencil 33 | { 34 | Ref [_Stencil] 35 | Comp [_StencilComp] 36 | Pass [_StencilOp] 37 | ReadMask [_StencilReadMask] 38 | WriteMask [_StencilWriteMask] 39 | } 40 | 41 | Cull [_CullMode] 42 | Lighting Off 43 | ZWrite Off 44 | ZTest [unity_GUIZTestMode] 45 | Blend SrcAlpha OneMinusSrcAlpha 46 | ColorMask [_ColorMask] 47 | 48 | Pass 49 | { 50 | CGPROGRAM 51 | #pragma vertex vert 52 | #pragma fragment frag 53 | 54 | #include "UnityCG.cginc" 55 | #include "UnityUI.cginc" 56 | 57 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 58 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 59 | 60 | struct appdata_t 61 | { 62 | float4 vertex : POSITION; 63 | float4 color : COLOR; 64 | float2 texcoord : TEXCOORD0; 65 | }; 66 | 67 | struct v2f 68 | { 69 | float4 vertex : SV_POSITION; 70 | fixed4 color : COLOR; 71 | half2 texcoord : TEXCOORD0; 72 | float4 worldPosition : TEXCOORD1; 73 | }; 74 | 75 | fixed4 _Color; 76 | fixed4 _TextureSampleAdd; 77 | float4 _ClipRect; 78 | 79 | v2f vert(appdata_t IN) 80 | { 81 | v2f OUT; 82 | OUT.worldPosition = IN.vertex; 83 | OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); 84 | 85 | OUT.texcoord = IN.texcoord; 86 | 87 | #ifdef UNITY_HALF_TEXEL_OFFSET 88 | OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 89 | #endif 90 | 91 | OUT.color = IN.color * _Color; 92 | return OUT; 93 | } 94 | 95 | sampler2D _MainTex; 96 | 97 | fixed4 frag(v2f IN) : SV_Target 98 | { 99 | half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; 100 | 101 | #if UNITY_UI_CLIP_RECT 102 | color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); 103 | #endif 104 | 105 | #ifdef UNITY_UI_ALPHACLIP 106 | clip (color.a - 0.001); 107 | #endif 108 | 109 | return color; 110 | } 111 | ENDCG 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc: -------------------------------------------------------------------------------- 1 | // UI Editable properties 2 | uniform sampler2D _FaceTex; // Alpha : Signed Distance 3 | uniform float _FaceUVSpeedX; 4 | uniform float _FaceUVSpeedY; 5 | uniform fixed4 _FaceColor; // RGBA : Color + Opacity 6 | uniform float _FaceDilate; // v[ 0, 1] 7 | uniform float _OutlineSoftness; // v[ 0, 1] 8 | 9 | uniform sampler2D _OutlineTex; // RGBA : Color + Opacity 10 | uniform float _OutlineUVSpeedX; 11 | uniform float _OutlineUVSpeedY; 12 | uniform fixed4 _OutlineColor; // RGBA : Color + Opacity 13 | uniform float _OutlineWidth; // v[ 0, 1] 14 | 15 | uniform float _Bevel; // v[ 0, 1] 16 | uniform float _BevelOffset; // v[-1, 1] 17 | uniform float _BevelWidth; // v[-1, 1] 18 | uniform float _BevelClamp; // v[ 0, 1] 19 | uniform float _BevelRoundness; // v[ 0, 1] 20 | 21 | uniform sampler2D _BumpMap; // Normal map 22 | uniform float _BumpOutline; // v[ 0, 1] 23 | uniform float _BumpFace; // v[ 0, 1] 24 | 25 | uniform samplerCUBE _Cube; // Cube / sphere map 26 | uniform fixed4 _ReflectFaceColor; // RGB intensity 27 | uniform fixed4 _ReflectOutlineColor; 28 | //uniform float _EnvTiltX; // v[-1, 1] 29 | //uniform float _EnvTiltY; // v[-1, 1] 30 | uniform float3 _EnvMatrixRotation; 31 | uniform float4x4 _EnvMatrix; 32 | 33 | uniform fixed4 _SpecularColor; // RGB intensity 34 | uniform float _LightAngle; // v[ 0,Tau] 35 | uniform float _SpecularPower; // v[ 0, 1] 36 | uniform float _Reflectivity; // v[ 5, 15] 37 | uniform float _Diffuse; // v[ 0, 1] 38 | uniform float _Ambient; // v[ 0, 1] 39 | 40 | uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity 41 | uniform float _UnderlayOffsetX; // v[-1, 1] 42 | uniform float _UnderlayOffsetY; // v[-1, 1] 43 | uniform float _UnderlayDilate; // v[-1, 1] 44 | uniform float _UnderlaySoftness; // v[ 0, 1] 45 | 46 | uniform fixed4 _GlowColor; // RGBA : Color + Intesity 47 | uniform float _GlowOffset; // v[-1, 1] 48 | uniform float _GlowOuter; // v[ 0, 1] 49 | uniform float _GlowInner; // v[ 0, 1] 50 | uniform float _GlowPower; // v[ 1, 1/(1+4*4)] 51 | 52 | // API Editable properties 53 | uniform float _ShaderFlags; 54 | uniform float _WeightNormal; 55 | uniform float _WeightBold; 56 | 57 | uniform float _ScaleRatioA; 58 | uniform float _ScaleRatioB; 59 | uniform float _ScaleRatioC; 60 | 61 | uniform float _VertexOffsetX; 62 | uniform float _VertexOffsetY; 63 | 64 | //uniform float _UseClipRect; 65 | uniform float _MaskID; 66 | uniform sampler2D _MaskTex; 67 | uniform float4 _MaskCoord; 68 | uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) 69 | //uniform float _MaskWipeControl; 70 | //uniform float _MaskEdgeSoftness; 71 | //uniform fixed4 _MaskEdgeColor; 72 | //uniform bool _MaskInverse; 73 | 74 | uniform float _MaskSoftnessX; 75 | uniform float _MaskSoftnessY; 76 | 77 | // Font Atlas properties 78 | uniform sampler2D _MainTex; 79 | uniform float _TextureWidth; 80 | uniform float _TextureHeight; 81 | uniform float _GradientScale; 82 | uniform float _ScaleX; 83 | uniform float _ScaleY; 84 | uniform float _PerspectiveFilter; 85 | uniform float _Sharpness; 86 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: LiberationSans SDF - Outline 11 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 12 | m_ShaderKeywords: OUTLINE_ON 13 | m_LightmapFlags: 5 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _Cube: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _FaceTex: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _MainTex: 35 | m_Texture: {fileID: 28684132378477856, guid: 8f586378b4e144a9851e7b34d9b748ee, 36 | type: 2} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _OutlineTex: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | m_Floats: 44 | - _Ambient: 0.5 45 | - _Bevel: 0.5 46 | - _BevelClamp: 0 47 | - _BevelOffset: 0 48 | - _BevelRoundness: 0 49 | - _BevelWidth: 0 50 | - _BumpFace: 0 51 | - _BumpOutline: 0 52 | - _ColorMask: 15 53 | - _Diffuse: 0.5 54 | - _FaceDilate: 0.1 55 | - _FaceUVSpeedX: 0 56 | - _FaceUVSpeedY: 0 57 | - _GlowInner: 0.05 58 | - _GlowOffset: 0 59 | - _GlowOuter: 0.05 60 | - _GlowPower: 0.75 61 | - _GradientScale: 10 62 | - _LightAngle: 3.1416 63 | - _MaskSoftnessX: 0 64 | - _MaskSoftnessY: 0 65 | - _OutlineSoftness: 0 66 | - _OutlineUVSpeedX: 0 67 | - _OutlineUVSpeedY: 0 68 | - _OutlineWidth: 0.1 69 | - _PerspectiveFilter: 0.875 70 | - _Reflectivity: 10 71 | - _ScaleRatioA: 0.9 72 | - _ScaleRatioB: 0.73125 73 | - _ScaleRatioC: 0.64125 74 | - _ScaleX: 1 75 | - _ScaleY: 1 76 | - _ShaderFlags: 0 77 | - _Sharpness: 0 78 | - _SpecularPower: 2 79 | - _Stencil: 0 80 | - _StencilComp: 8 81 | - _StencilOp: 0 82 | - _StencilReadMask: 255 83 | - _StencilWriteMask: 255 84 | - _TextureHeight: 1024 85 | - _TextureWidth: 1024 86 | - _UnderlayDilate: 0 87 | - _UnderlayOffsetX: 0 88 | - _UnderlayOffsetY: 0 89 | - _UnderlaySoftness: 0 90 | - _VertexOffsetX: 0 91 | - _VertexOffsetY: 0 92 | - _WeightBold: 0.75 93 | - _WeightNormal: 0 94 | m_Colors: 95 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 96 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 97 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 98 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 99 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 100 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 101 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 102 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 103 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 104 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 105 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: LiberationSans SDF - Drop Shadow 11 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 12 | m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON 13 | m_LightmapFlags: 5 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _Cube: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _FaceTex: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _MainTex: 35 | m_Texture: {fileID: 28684132378477856, guid: 8f586378b4e144a9851e7b34d9b748ee, 36 | type: 2} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _OutlineTex: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | m_Floats: 44 | - _Ambient: 0.5 45 | - _Bevel: 0.5 46 | - _BevelClamp: 0 47 | - _BevelOffset: 0 48 | - _BevelRoundness: 0 49 | - _BevelWidth: 0 50 | - _BumpFace: 0 51 | - _BumpOutline: 0 52 | - _ColorMask: 15 53 | - _Diffuse: 0.5 54 | - _DiffusePower: 1 55 | - _FaceDilate: 0.1 56 | - _FaceUVSpeedX: 0 57 | - _FaceUVSpeedY: 0 58 | - _GlowInner: 0.05 59 | - _GlowOffset: 0 60 | - _GlowOuter: 0.05 61 | - _GlowPower: 0.75 62 | - _GradientScale: 10 63 | - _LightAngle: 3.1416 64 | - _MaskSoftnessX: 0 65 | - _MaskSoftnessY: 0 66 | - _OutlineSoftness: 0 67 | - _OutlineUVSpeedX: 0 68 | - _OutlineUVSpeedY: 0 69 | - _OutlineWidth: 0.1 70 | - _PerspectiveFilter: 0.875 71 | - _Reflectivity: 10 72 | - _ScaleRatioA: 0.9 73 | - _ScaleRatioB: 0.73125 74 | - _ScaleRatioC: 0.64125 75 | - _ScaleX: 1 76 | - _ScaleY: 1 77 | - _ShaderFlags: 0 78 | - _Sharpness: 0 79 | - _SpecularPower: 2 80 | - _Stencil: 0 81 | - _StencilComp: 8 82 | - _StencilOp: 0 83 | - _StencilReadMask: 255 84 | - _StencilWriteMask: 255 85 | - _TextureHeight: 1024 86 | - _TextureWidth: 1024 87 | - _UnderlayDilate: 0 88 | - _UnderlayOffsetX: 0.5 89 | - _UnderlayOffsetY: -0.5 90 | - _UnderlaySoftness: 0.05 91 | - _VertexOffsetX: 0 92 | - _VertexOffsetY: 0 93 | - _WeightBold: 0.75 94 | - _WeightNormal: 0 95 | m_Colors: 96 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 97 | - _Color: {r: 1, g: 1, b: 1, a: 1} 98 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 99 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 100 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 101 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 102 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 103 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 104 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 105 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 106 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 107 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field SSD" { 7 | 8 | Properties { 9 | [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | _Sharpness ("Sharpness", Range(-1,1)) = 0 38 | 39 | _VertexOffsetX ("Vertex OffsetX", float) = 0 40 | _VertexOffsetY ("Vertex OffsetY", float) = 0 41 | 42 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 43 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 44 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 45 | _MaskTex ("Mask Texture", 2D) = "white" {} 46 | _MaskInverse ("Inverse", float) = 0 47 | _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) 48 | _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 49 | _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 50 | 51 | _StencilComp ("Stencil Comparison", Float) = 8 52 | _Stencil ("Stencil ID", Float) = 0 53 | _StencilOp ("Stencil Operation", Float) = 0 54 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 55 | _StencilReadMask ("Stencil Read Mask", Float) = 255 56 | 57 | _CullMode ("Cull Mode", Float) = 0 58 | _ColorMask ("Color Mask", Float) = 15 59 | } 60 | 61 | SubShader { 62 | Tags { 63 | "Queue"="Transparent" 64 | "IgnoreProjector"="True" 65 | "RenderType"="Transparent" 66 | } 67 | 68 | Stencil 69 | { 70 | Ref [_Stencil] 71 | Comp [_StencilComp] 72 | Pass [_StencilOp] 73 | ReadMask [_StencilReadMask] 74 | WriteMask [_StencilWriteMask] 75 | } 76 | 77 | Cull [_CullMode] 78 | ZWrite Off 79 | Lighting Off 80 | Fog { Mode Off } 81 | ZTest [unity_GUIZTestMode] 82 | Blend One OneMinusSrcAlpha 83 | ColorMask [_ColorMask] 84 | 85 | Pass { 86 | CGPROGRAM 87 | #pragma vertex VertShader 88 | #pragma fragment PixShader 89 | #pragma shader_feature __ OUTLINE_ON 90 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 91 | 92 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 93 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 94 | 95 | #include "UnityCG.cginc" 96 | #include "UnityUI.cginc" 97 | #include "TMPro_Properties.cginc" 98 | 99 | #include "TMPro_Mobile.cginc" 100 | 101 | ENDCG 102 | } 103 | } 104 | 105 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 106 | } 107 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc: -------------------------------------------------------------------------------- 1 | void VertShader(inout appdata_full v, out Input data) 2 | { 3 | v.vertex.x += _VertexOffsetX; 4 | v.vertex.y += _VertexOffsetY; 5 | 6 | UNITY_INITIALIZE_OUTPUT(Input, data); 7 | 8 | float bold = step(v.texcoord1.y, 0); 9 | 10 | // Generate normal for backface 11 | float3 view = ObjSpaceViewDir(v.vertex); 12 | v.normal *= sign(dot(v.normal, view)); 13 | 14 | #if USE_DERIVATIVE 15 | data.param.y = 1; 16 | #else 17 | float4 vert = v.vertex; 18 | float4 vPosition = UnityObjectToClipPos(vert); 19 | float2 pixelSize = vPosition.w; 20 | 21 | pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy); 22 | float scale = rsqrt(dot(pixelSize, pixelSize)); 23 | scale *= abs(v.texcoord1.y) * _GradientScale * (_Sharpness + 1); 24 | scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 25 | data.param.y = scale; 26 | #endif 27 | 28 | data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; // 29 | 30 | v.texcoord1.xy = UnpackUV(v.texcoord1.x); 31 | data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex)); 32 | } 33 | 34 | void PixShader(Input input, inout SurfaceOutput o) 35 | { 36 | 37 | #if USE_DERIVATIVE 38 | float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y)); 39 | pixelSize *= _TextureWidth * .75; 40 | float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1); 41 | #else 42 | float scale = input.param.y; 43 | #endif 44 | 45 | // Signed distance 46 | float c = tex2D(_MainTex, input.uv_MainTex).a; 47 | float sd = (.5 - c - input.param.x) * scale + .5; 48 | float outline = _OutlineWidth*_ScaleRatioA * scale; 49 | float softness = _OutlineSoftness*_ScaleRatioA * scale; 50 | 51 | // Color & Alpha 52 | float4 faceColor = _FaceColor; 53 | float4 outlineColor = _OutlineColor; 54 | faceColor *= input.color; 55 | outlineColor.a *= input.color.a; 56 | faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y)); 57 | outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y)); 58 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); 59 | faceColor.rgb /= max(faceColor.a, 0.0001); 60 | 61 | #if BEVEL_ON 62 | float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); 63 | 64 | float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a, 65 | tex2D(_MainTex, input.uv_MainTex + delta.xz).a, 66 | tex2D(_MainTex, input.uv_MainTex - delta.zy).a, 67 | tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; 68 | 69 | // Face Normal 70 | float3 n = GetSurfaceNormal(smp4x, input.param.x); 71 | 72 | // Bumpmap 73 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz; 74 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); 75 | bump = lerp(float3(0, 0, 1), bump, faceColor.a); 76 | n = normalize(n - bump); 77 | 78 | // Cubemap reflection 79 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n))); 80 | float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; 81 | #else 82 | float3 n = float3(0, 0, -1); 83 | float3 emission = float3(0, 0, 0); 84 | #endif 85 | 86 | #if GLOW_ON 87 | float4 glowColor = GetGlowColor(sd, scale); 88 | glowColor.a *= input.color.a; 89 | emission += glowColor.rgb*glowColor.a; 90 | faceColor = BlendARGB(glowColor, faceColor); 91 | faceColor.rgb /= max(faceColor.a, 0.0001); 92 | #endif 93 | 94 | // Set Standard output structure 95 | o.Albedo = faceColor.rgb; 96 | o.Normal = -n; 97 | o.Emission = emission; 98 | o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5)); 99 | o.Gloss = 1; 100 | o.Alpha = faceColor.a; 101 | } 102 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Bitmap" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | _FaceTex ("Font Texture", 2D) = "white" {} 6 | [HDR]_FaceColor ("Text Color", Color) = (1,1,1,1) 7 | 8 | _VertexOffsetX ("Vertex OffsetX", float) = 0 9 | _VertexOffsetY ("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | 15 | _StencilComp("Stencil Comparison", Float) = 8 16 | _Stencil("Stencil ID", Float) = 0 17 | _StencilOp("Stencil Operation", Float) = 0 18 | _StencilWriteMask("Stencil Write Mask", Float) = 255 19 | _StencilReadMask("Stencil Read Mask", Float) = 255 20 | 21 | _CullMode("Cull Mode", Float) = 0 22 | _ColorMask("Color Mask", Float) = 15 23 | } 24 | 25 | SubShader{ 26 | 27 | Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 28 | 29 | Stencil 30 | { 31 | Ref[_Stencil] 32 | Comp[_StencilComp] 33 | Pass[_StencilOp] 34 | ReadMask[_StencilReadMask] 35 | WriteMask[_StencilWriteMask] 36 | } 37 | 38 | 39 | Lighting Off 40 | Cull [_CullMode] 41 | ZTest [unity_GUIZTestMode] 42 | ZWrite Off 43 | Fog { Mode Off } 44 | Blend SrcAlpha OneMinusSrcAlpha 45 | ColorMask[_ColorMask] 46 | 47 | Pass { 48 | CGPROGRAM 49 | #pragma vertex vert 50 | #pragma fragment frag 51 | 52 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 53 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 54 | 55 | 56 | #include "UnityCG.cginc" 57 | 58 | struct appdata_t { 59 | float4 vertex : POSITION; 60 | fixed4 color : COLOR; 61 | float2 texcoord0 : TEXCOORD0; 62 | float2 texcoord1 : TEXCOORD1; 63 | }; 64 | 65 | struct v2f { 66 | float4 vertex : SV_POSITION; 67 | fixed4 color : COLOR; 68 | float2 texcoord0 : TEXCOORD0; 69 | float2 texcoord1 : TEXCOORD1; 70 | float4 mask : TEXCOORD2; 71 | }; 72 | 73 | uniform sampler2D _MainTex; 74 | uniform sampler2D _FaceTex; 75 | uniform float4 _FaceTex_ST; 76 | uniform fixed4 _FaceColor; 77 | 78 | uniform float _VertexOffsetX; 79 | uniform float _VertexOffsetY; 80 | uniform float4 _ClipRect; 81 | uniform float _MaskSoftnessX; 82 | uniform float _MaskSoftnessY; 83 | 84 | float2 UnpackUV(float uv) 85 | { 86 | float2 output; 87 | output.x = floor(uv / 4096); 88 | output.y = uv - 4096 * output.x; 89 | 90 | return output * 0.001953125; 91 | } 92 | 93 | v2f vert (appdata_t v) 94 | { 95 | float4 vert = v.vertex; 96 | vert.x += _VertexOffsetX; 97 | vert.y += _VertexOffsetY; 98 | 99 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 100 | 101 | float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); 102 | 103 | fixed4 faceColor = v.color; 104 | faceColor *= _FaceColor; 105 | 106 | v2f OUT; 107 | OUT.vertex = vPosition; 108 | OUT.color = faceColor; 109 | OUT.texcoord0 = v.texcoord0; 110 | OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); 111 | float2 pixelSize = vPosition.w; 112 | pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 113 | 114 | // Clamp _ClipRect to 16bit. 115 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 116 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 117 | 118 | return OUT; 119 | } 120 | 121 | fixed4 frag (v2f IN) : SV_Target 122 | { 123 | fixed4 color = tex2D(_MainTex, IN.texcoord0); 124 | color = fixed4 (tex2D(_FaceTex, IN.texcoord1).rgb * IN.color.rgb, IN.color.a * color.a); 125 | 126 | // Alternative implementation to UnityGet2DClipping with support for softness. 127 | #if UNITY_UI_CLIP_RECT 128 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 129 | color *= m.x * m.y; 130 | #endif 131 | 132 | #if UNITY_UI_ALPHACLIP 133 | clip(color.a - 0.001); 134 | #endif 135 | 136 | return color; 137 | } 138 | ENDCG 139 | } 140 | } 141 | 142 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 143 | } 144 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader: -------------------------------------------------------------------------------- 1 | // Simplified version of the SDF Surface shader : 2 | // - No support for Bevel, Bump or envmap 3 | // - Diffuse only lighting 4 | // - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field (Surface)" { 7 | 8 | Properties { 9 | _FaceTex ("Fill Texture", 2D) = "white" {} 10 | [HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1) 11 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 12 | 13 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 14 | _OutlineTex ("Outline Texture", 2D) = "white" {} 15 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 16 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 17 | 18 | [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) 19 | _GlowOffset ("Offset", Range(-1,1)) = 0 20 | _GlowInner ("Inner", Range(0,1)) = 0.05 21 | _GlowOuter ("Outer", Range(0,1)) = 0.05 22 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 23 | 24 | _WeightNormal ("Weight Normal", float) = 0 25 | _WeightBold ("Weight Bold", float) = 0.5 26 | 27 | // Should not be directly exposed to the user 28 | _ShaderFlags ("Flags", float) = 0 29 | _ScaleRatioA ("Scale RatioA", float) = 1 30 | _ScaleRatioB ("Scale RatioB", float) = 1 31 | _ScaleRatioC ("Scale RatioC", float) = 1 32 | 33 | _MainTex ("Font Atlas", 2D) = "white" {} 34 | _TextureWidth ("Texture Width", float) = 512 35 | _TextureHeight ("Texture Height", float) = 512 36 | _GradientScale ("Gradient Scale", float) = 5.0 37 | _ScaleX ("Scale X", float) = 1.0 38 | _ScaleY ("Scale Y", float) = 1.0 39 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 40 | _Sharpness ("Sharpness", Range(-1,1)) = 0 41 | 42 | _VertexOffsetX ("Vertex OffsetX", float) = 0 43 | _VertexOffsetY ("Vertex OffsetY", float) = 0 44 | 45 | _CullMode ("Cull Mode", Float) = 0 46 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) 47 | //_MaskSoftness ("Mask Softness", float) = 0 48 | } 49 | 50 | SubShader { 51 | 52 | Tags { 53 | "Queue"="Transparent" 54 | "IgnoreProjector"="True" 55 | "RenderType"="Transparent" 56 | } 57 | 58 | LOD 300 59 | Cull [_CullMode] 60 | 61 | CGPROGRAM 62 | #pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap 63 | #pragma target 3.0 64 | #pragma shader_feature __ GLOW_ON 65 | 66 | #include "TMPro_Properties.cginc" 67 | #include "TMPro.cginc" 68 | 69 | half _FaceShininess; 70 | half _OutlineShininess; 71 | 72 | struct Input 73 | { 74 | fixed4 color : COLOR; 75 | float2 uv_MainTex; 76 | float2 uv2_FaceTex; 77 | float2 uv2_OutlineTex; 78 | float2 param; // Weight, Scale 79 | float3 viewDirEnv; 80 | }; 81 | 82 | #include "TMPro_Surface.cginc" 83 | 84 | ENDCG 85 | 86 | // Pass to render object as a shadow caster 87 | Pass 88 | { 89 | Name "Caster" 90 | Tags { "LightMode" = "ShadowCaster" } 91 | Offset 1, 1 92 | 93 | Fog {Mode Off} 94 | ZWrite On ZTest LEqual Cull Off 95 | 96 | CGPROGRAM 97 | #pragma vertex vert 98 | #pragma fragment frag 99 | #pragma multi_compile_shadowcaster 100 | #include "UnityCG.cginc" 101 | 102 | struct v2f { 103 | V2F_SHADOW_CASTER; 104 | float2 uv : TEXCOORD1; 105 | float2 uv2 : TEXCOORD3; 106 | float alphaClip : TEXCOORD2; 107 | }; 108 | 109 | uniform float4 _MainTex_ST; 110 | uniform float4 _OutlineTex_ST; 111 | float _OutlineWidth; 112 | float _FaceDilate; 113 | float _ScaleRatioA; 114 | 115 | v2f vert( appdata_base v ) 116 | { 117 | v2f o; 118 | TRANSFER_SHADOW_CASTER(o) 119 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 120 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); 121 | o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; 122 | return o; 123 | } 124 | 125 | uniform sampler2D _MainTex; 126 | 127 | float4 frag(v2f i) : COLOR 128 | { 129 | fixed4 texcol = tex2D(_MainTex, i.uv).a; 130 | clip(texcol.a - i.alphaClip); 131 | SHADOW_CASTER_FRAGMENT(i) 132 | } 133 | ENDCG 134 | } 135 | } 136 | 137 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 138 | } 139 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Bitmap Custom Atlas" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | _FaceTex ("Font Texture", 2D) = "white" {} 6 | [HDR]_FaceColor ("Text Color", Color) = (1,1,1,1) 7 | 8 | _VertexOffsetX ("Vertex OffsetX", float) = 0 9 | _VertexOffsetY ("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | _Padding ("Padding", float) = 0 15 | 16 | _StencilComp("Stencil Comparison", Float) = 8 17 | _Stencil("Stencil ID", Float) = 0 18 | _StencilOp("Stencil Operation", Float) = 0 19 | _StencilWriteMask("Stencil Write Mask", Float) = 255 20 | _StencilReadMask("Stencil Read Mask", Float) = 255 21 | 22 | _CullMode("Cull Mode", Float) = 0 23 | _ColorMask("Color Mask", Float) = 15 24 | } 25 | 26 | SubShader{ 27 | 28 | Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 29 | 30 | Stencil 31 | { 32 | Ref[_Stencil] 33 | Comp[_StencilComp] 34 | Pass[_StencilOp] 35 | ReadMask[_StencilReadMask] 36 | WriteMask[_StencilWriteMask] 37 | } 38 | 39 | 40 | Lighting Off 41 | Cull [_CullMode] 42 | ZTest [unity_GUIZTestMode] 43 | ZWrite Off 44 | Fog { Mode Off } 45 | Blend SrcAlpha OneMinusSrcAlpha 46 | ColorMask[_ColorMask] 47 | 48 | Pass { 49 | CGPROGRAM 50 | #pragma vertex vert 51 | #pragma fragment frag 52 | 53 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 54 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 55 | 56 | 57 | #include "UnityCG.cginc" 58 | 59 | struct appdata_t { 60 | float4 vertex : POSITION; 61 | fixed4 color : COLOR; 62 | float2 texcoord0 : TEXCOORD0; 63 | float2 texcoord1 : TEXCOORD1; 64 | }; 65 | 66 | struct v2f { 67 | float4 vertex : SV_POSITION; 68 | fixed4 color : COLOR; 69 | float2 texcoord0 : TEXCOORD0; 70 | float2 texcoord1 : TEXCOORD1; 71 | float4 mask : TEXCOORD2; 72 | }; 73 | 74 | uniform sampler2D _MainTex; 75 | uniform sampler2D _FaceTex; 76 | uniform float4 _FaceTex_ST; 77 | uniform fixed4 _FaceColor; 78 | 79 | uniform float _VertexOffsetX; 80 | uniform float _VertexOffsetY; 81 | uniform float4 _ClipRect; 82 | uniform float _MaskSoftnessX; 83 | uniform float _MaskSoftnessY; 84 | 85 | float2 UnpackUV(float uv) 86 | { 87 | float2 output; 88 | output.x = floor(uv / 4096); 89 | output.y = uv - 4096 * output.x; 90 | 91 | return output * 0.001953125; 92 | } 93 | 94 | v2f vert (appdata_t v) 95 | { 96 | float4 vert = v.vertex; 97 | vert.x += _VertexOffsetX; 98 | vert.y += _VertexOffsetY; 99 | 100 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 101 | 102 | float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); 103 | 104 | fixed4 faceColor = v.color; 105 | faceColor *= _FaceColor; 106 | 107 | v2f OUT; 108 | OUT.vertex = vPosition; 109 | OUT.color = faceColor; 110 | OUT.texcoord0 = v.texcoord0; 111 | OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); 112 | float2 pixelSize = vPosition.w; 113 | pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 114 | 115 | // Clamp _ClipRect to 16bit. 116 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 117 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 118 | 119 | return OUT; 120 | } 121 | 122 | fixed4 frag (v2f IN) : SV_Target 123 | { 124 | fixed4 color = tex2D(_MainTex, IN.texcoord0) * tex2D(_FaceTex, IN.texcoord1) * IN.color; 125 | 126 | // Alternative implementation to UnityGet2DClipping with support for softness. 127 | #if UNITY_UI_CLIP_RECT 128 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 129 | color *= m.x * m.y; 130 | #endif 131 | 132 | #if UNITY_UI_ALPHACLIP 133 | clip(color.a - 0.001); 134 | #endif 135 | 136 | return color; 137 | } 138 | ENDCG 139 | } 140 | } 141 | 142 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 143 | } 144 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Mobile/Bitmap" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | [HDR]_Color ("Text Color", Color) = (1,1,1,1) 6 | _DiffusePower ("Diffuse Power", Range(1.0,4.0)) = 1.0 7 | 8 | _VertexOffsetX("Vertex OffsetX", float) = 0 9 | _VertexOffsetY("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | 15 | _StencilComp("Stencil Comparison", Float) = 8 16 | _Stencil("Stencil ID", Float) = 0 17 | _StencilOp("Stencil Operation", Float) = 0 18 | _StencilWriteMask("Stencil Write Mask", Float) = 255 19 | _StencilReadMask("Stencil Read Mask", Float) = 255 20 | 21 | _CullMode("Cull Mode", Float) = 0 22 | _ColorMask("Color Mask", Float) = 15 23 | } 24 | 25 | SubShader { 26 | 27 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 28 | 29 | Stencil 30 | { 31 | Ref[_Stencil] 32 | Comp[_StencilComp] 33 | Pass[_StencilOp] 34 | ReadMask[_StencilReadMask] 35 | WriteMask[_StencilWriteMask] 36 | } 37 | 38 | 39 | Lighting Off 40 | Cull [_CullMode] 41 | ZTest [unity_GUIZTestMode] 42 | ZWrite Off 43 | Fog { Mode Off } 44 | Blend SrcAlpha OneMinusSrcAlpha 45 | ColorMask[_ColorMask] 46 | 47 | Pass { 48 | CGPROGRAM 49 | #pragma vertex vert 50 | #pragma fragment frag 51 | #pragma fragmentoption ARB_precision_hint_fastest 52 | 53 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 54 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 55 | 56 | 57 | #include "UnityCG.cginc" 58 | 59 | struct appdata_t { 60 | float4 vertex : POSITION; 61 | fixed4 color : COLOR; 62 | float2 texcoord0 : TEXCOORD0; 63 | float2 texcoord1 : TEXCOORD1; 64 | }; 65 | 66 | struct v2f { 67 | float4 vertex : POSITION; 68 | fixed4 color : COLOR; 69 | float2 texcoord0 : TEXCOORD0; 70 | float4 mask : TEXCOORD2; 71 | }; 72 | 73 | sampler2D _MainTex; 74 | fixed4 _Color; 75 | float _DiffusePower; 76 | 77 | uniform float _VertexOffsetX; 78 | uniform float _VertexOffsetY; 79 | uniform float4 _ClipRect; 80 | uniform float _MaskSoftnessX; 81 | uniform float _MaskSoftnessY; 82 | 83 | v2f vert (appdata_t v) 84 | { 85 | v2f OUT; 86 | float4 vert = v.vertex; 87 | vert.x += _VertexOffsetX; 88 | vert.y += _VertexOffsetY; 89 | 90 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 91 | 92 | OUT.vertex = UnityPixelSnap(UnityObjectToClipPos(vert)); 93 | OUT.color = v.color; 94 | OUT.color *= _Color; 95 | OUT.color.rgb *= _DiffusePower; 96 | OUT.texcoord0 = v.texcoord0; 97 | 98 | float2 pixelSize = OUT.vertex.w; 99 | //pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 100 | 101 | // Clamp _ClipRect to 16bit. 102 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 103 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 104 | 105 | return OUT; 106 | } 107 | 108 | fixed4 frag (v2f IN) : COLOR 109 | { 110 | fixed4 color = fixed4(IN.color.rgb, IN.color.a * tex2D(_MainTex, IN.texcoord0).a); 111 | 112 | // Alternative implementation to UnityGet2DClipping with support for softness. 113 | #if UNITY_UI_CLIP_RECT 114 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 115 | color *= m.x * m.y; 116 | #endif 117 | 118 | #if UNITY_UI_ALPHACLIP 119 | clip(color.a - 0.001); 120 | #endif 121 | 122 | return color; 123 | } 124 | ENDCG 125 | } 126 | } 127 | 128 | SubShader { 129 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 130 | Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off } 131 | Blend SrcAlpha OneMinusSrcAlpha 132 | BindChannels { 133 | Bind "Color", color 134 | Bind "Vertex", vertex 135 | Bind "TexCoord", texcoord0 136 | } 137 | Pass { 138 | SetTexture [_MainTex] { 139 | constantColor [_Color] combine constant * primary, constant * texture 140 | } 141 | } 142 | } 143 | 144 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 145 | } 146 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![VRTK logo][VRTK-Image]](#) 2 | 3 | # VR Bowling Game Tutorial 4 | 5 | > _This has been tested on version 2019.4.28f1 of the Unity software_ 6 | 7 | [![License][License-Badge]][License] 8 | [![Backlog][Backlog-Badge]][Backlog] 9 | [![Discord][Discord-Badge]][Discord] 10 | [![Videos][Videos-Badge]][Videos] 11 | [![Twitter][Twitter-Badge]][Twitter] 12 | 13 | ## Introduction 14 | 15 | A tutorial on how to make a VR Bowling game using the components from the VRTK suite within the [Unity] software. 16 | 17 | This tutorial covers the basics of getting a VR camera working within Unity and being able to interact with objects within the scene. 18 | 19 | > If you're using Unity 2020.1 or above then please refer to the [Converting To Unity 2020] tutorial. 20 | 21 | ![VR Bowling Scene](https://user-images.githubusercontent.com/36199993/74746663-af050780-525d-11ea-8eb0-6ba279fed0f7.gif) 22 | 23 | ## Getting Started 24 | 25 | Follow the [Making A VR Bowling Game] tutorial to build this project yourself in an empty Unity project or follow the instructions below to download the completed project. 26 | 27 | ### Downloading the project 28 | 29 | * Download this project repository to your local machine using *one* of the following methods: 30 | * Git clone the repository with `git clone https://github.com/ExtendRealityLtd/VRTK.Tutortials.VRBowling.git` 31 | * Download the zip file at `https://github.com/ExtendRealityLtd/VRTK.Tutortials.VRBowling/archive/master.zip` and extract it. 32 | 33 | ### Opening the downloaded project in the Unity software 34 | 35 | > **Do not** drag and drop this downloaded tutorial project into an existing Unity project. The downloaded tutorial project **is a Unity project** already and you should not nest a Unity project inside another Unity project. Follow the instructions below for opening this tutorial project within the Unity software. 36 | 37 | #### Using the Unity Hub 38 | 39 | * Open the [Unity Hub] panel. 40 | * Click the `Add` Button. 41 | * Browse to the local directory where the repository was cloned/downloaded to and click `Select Folder`. 42 | * The tutorial project will now show up in the Unity Hub project window, so select `VRTK.Tutortials.VRBowling` to open the project in the Unity software. 43 | * The `VRTK.Tutortials.VRBowling` project will now open within the Unity software. 44 | 45 | #### Opening from within the Unity software 46 | 47 | * Select `Main Menu -> File -> Open Project` within the Unity software. 48 | * Browse to the local directory where the repository was cloned/downloaded to and click `Select Folder`. 49 | * The `VRTK.Tutortials.VRBowling` project will now open within the Unity software. 50 | 51 | ### Running the game scene 52 | 53 | * Open the `Assets/Scenes/BowlingAlley` scene. 54 | * Enable `Maximize On Play` in the Unity Game view control bar to ensure no performance issues are caused by the Unity Editor overhead. 55 | * Play the scene in the Unity Editor (`CTRL` + `P`). 56 | * The scene should automatically play within any Unity supported XR hardware. 57 | 58 | ## Contributing 59 | 60 | We're not currently in a place where accepting contributions would be helpful. But as soon as we're ready we'll let you know! 61 | 62 | ## License 63 | 64 | Code released under the [MIT License][License]. 65 | 66 | ## Disclaimer 67 | 68 | These materials are not sponsored by or affiliated with Unity Technologies or its affiliates. "Unity" is a trademark or registered trademark of Unity Technologies or its affiliates in the U.S. and elsewhere. 69 | 70 | [VRTK-Image]: https://raw.githubusercontent.com/ExtendRealityLtd/related-media/main/github/readme/vrtk.png 71 | [Unity]: https://unity3d.com/ 72 | [Converting To Unity 2020]: Documentation/Tutorials/03.ConvertingToUnity2020/README.md 73 | [Making A VR Bowling Game]: Documentation/Tutorials/01.MakingAVRBowlingGame/README.md 74 | 75 | [License-Badge]: https://img.shields.io/github/license/ExtendRealityLtd/VRTK.svg 76 | [Backlog-Badge]: https://img.shields.io/badge/project-backlog-78bdf2.svg 77 | 78 | [Discord-Badge]: https://img.shields.io/badge/discord--7289DA.svg?style=social&logo=discord 79 | [Videos-Badge]: https://img.shields.io/badge/youtube--e52d27.svg?style=social&logo=youtube 80 | [Twitter-Badge]: https://img.shields.io/badge/twitter--219eeb.svg?style=social&logo=twitter 81 | 82 | [License]: LICENSE.md 83 | [Backlog]: http://tracker.vrtk.io 84 | 85 | [Discord]: https://discord.com/invite/bRNS6hr 86 | [Videos]: http://videos.vrtk.io 87 | [Twitter]: https://twitter.com/VR_Toolkit 88 | 89 | [Unity Hub]: https://docs.unity3d.com/Manual/GettingStartedUnityHub.html 90 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt: -------------------------------------------------------------------------------- 1 | Digitized data copyright (c) 2010 Google Corporation 2 | with Reserved Font Arimo, Tinos and Cousine. 3 | Copyright (c) 2012 Red Hat, Inc. 4 | with Reserved Font Name Liberation. 5 | 6 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 7 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 8 | 9 | ----------------------------------------------------------- 10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 11 | ----------------------------------------------------------- 12 | 13 | PREAMBLE 14 | The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. 15 | 16 | The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. 17 | 18 | DEFINITIONS 19 | "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. 20 | 21 | "Reserved Font Name" refers to any names specified as such after the copyright statement(s). 22 | 23 | "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). 24 | 25 | "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. 26 | 27 | "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. 28 | 29 | PERMISSION & CONDITIONS 30 | Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 31 | 32 | 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 33 | 34 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 35 | 36 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 37 | 38 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 39 | 40 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. 41 | 42 | TERMINATION 43 | This license becomes null and void if any of the above conditions are not met. 44 | 45 | DISCLAIMER 46 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne.json: -------------------------------------------------------------------------------- 1 | {"frames": [ 2 | 3 | { 4 | "filename": "1f60a.png", 5 | "frame": {"x":0,"y":0,"w":128,"h":128}, 6 | "rotated": false, 7 | "trimmed": false, 8 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 9 | "sourceSize": {"w":128,"h":128}, 10 | "pivot": {"x":0.5,"y":0.5} 11 | }, 12 | { 13 | "filename": "1f60b.png", 14 | "frame": {"x":128,"y":0,"w":128,"h":128}, 15 | "rotated": false, 16 | "trimmed": false, 17 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 18 | "sourceSize": {"w":128,"h":128}, 19 | "pivot": {"x":0.5,"y":0.5} 20 | }, 21 | { 22 | "filename": "1f60d.png", 23 | "frame": {"x":256,"y":0,"w":128,"h":128}, 24 | "rotated": false, 25 | "trimmed": false, 26 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 27 | "sourceSize": {"w":128,"h":128}, 28 | "pivot": {"x":0.5,"y":0.5} 29 | }, 30 | { 31 | "filename": "1f60e.png", 32 | "frame": {"x":384,"y":0,"w":128,"h":128}, 33 | "rotated": false, 34 | "trimmed": false, 35 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 36 | "sourceSize": {"w":128,"h":128}, 37 | "pivot": {"x":0.5,"y":0.5} 38 | }, 39 | { 40 | "filename": "1f600.png", 41 | "frame": {"x":0,"y":128,"w":128,"h":128}, 42 | "rotated": false, 43 | "trimmed": false, 44 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 45 | "sourceSize": {"w":128,"h":128}, 46 | "pivot": {"x":0.5,"y":0.5} 47 | }, 48 | { 49 | "filename": "1f601.png", 50 | "frame": {"x":128,"y":128,"w":128,"h":128}, 51 | "rotated": false, 52 | "trimmed": false, 53 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 54 | "sourceSize": {"w":128,"h":128}, 55 | "pivot": {"x":0.5,"y":0.5} 56 | }, 57 | { 58 | "filename": "1f602.png", 59 | "frame": {"x":256,"y":128,"w":128,"h":128}, 60 | "rotated": false, 61 | "trimmed": false, 62 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 63 | "sourceSize": {"w":128,"h":128}, 64 | "pivot": {"x":0.5,"y":0.5} 65 | }, 66 | { 67 | "filename": "1f603.png", 68 | "frame": {"x":384,"y":128,"w":128,"h":128}, 69 | "rotated": false, 70 | "trimmed": false, 71 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 72 | "sourceSize": {"w":128,"h":128}, 73 | "pivot": {"x":0.5,"y":0.5} 74 | }, 75 | { 76 | "filename": "1f604.png", 77 | "frame": {"x":0,"y":256,"w":128,"h":128}, 78 | "rotated": false, 79 | "trimmed": false, 80 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 81 | "sourceSize": {"w":128,"h":128}, 82 | "pivot": {"x":0.5,"y":0.5} 83 | }, 84 | { 85 | "filename": "1f605.png", 86 | "frame": {"x":128,"y":256,"w":128,"h":128}, 87 | "rotated": false, 88 | "trimmed": false, 89 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 90 | "sourceSize": {"w":128,"h":128}, 91 | "pivot": {"x":0.5,"y":0.5} 92 | }, 93 | { 94 | "filename": "1f606.png", 95 | "frame": {"x":256,"y":256,"w":128,"h":128}, 96 | "rotated": false, 97 | "trimmed": false, 98 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 99 | "sourceSize": {"w":128,"h":128}, 100 | "pivot": {"x":0.5,"y":0.5} 101 | }, 102 | { 103 | "filename": "1f609.png", 104 | "frame": {"x":384,"y":256,"w":128,"h":128}, 105 | "rotated": false, 106 | "trimmed": false, 107 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 108 | "sourceSize": {"w":128,"h":128}, 109 | "pivot": {"x":0.5,"y":0.5} 110 | }, 111 | { 112 | "filename": "1f618.png", 113 | "frame": {"x":0,"y":384,"w":128,"h":128}, 114 | "rotated": false, 115 | "trimmed": false, 116 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 117 | "sourceSize": {"w":128,"h":128}, 118 | "pivot": {"x":0.5,"y":0.5} 119 | }, 120 | { 121 | "filename": "1f923.png", 122 | "frame": {"x":128,"y":384,"w":128,"h":128}, 123 | "rotated": false, 124 | "trimmed": false, 125 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 126 | "sourceSize": {"w":128,"h":128}, 127 | "pivot": {"x":0.5,"y":0.5} 128 | }, 129 | { 130 | "filename": "263a.png", 131 | "frame": {"x":256,"y":384,"w":128,"h":128}, 132 | "rotated": false, 133 | "trimmed": false, 134 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 135 | "sourceSize": {"w":128,"h":128}, 136 | "pivot": {"x":0.5,"y":0.5} 137 | }, 138 | { 139 | "filename": "2639.png", 140 | "frame": {"x":384,"y":384,"w":128,"h":128}, 141 | "rotated": false, 142 | "trimmed": false, 143 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 144 | "sourceSize": {"w":128,"h":128}, 145 | "pivot": {"x":0.5,"y":0.5} 146 | }], 147 | "meta": { 148 | "app": "http://www.codeandweb.com/texturepacker", 149 | "version": "1.0", 150 | "image": "EmojiOne.png", 151 | "format": "RGBA8888", 152 | "size": {"w":512,"h":512}, 153 | "scale": "1", 154 | "smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$" 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Distance Field (Surface)" { 2 | 3 | Properties { 4 | _FaceTex ("Fill Texture", 2D) = "white" {} 5 | _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 6 | _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 7 | [HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1) 8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 9 | 10 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 11 | _OutlineTex ("Outline Texture", 2D) = "white" {} 12 | _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 13 | _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 14 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 15 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 16 | 17 | _Bevel ("Bevel", Range(0,1)) = 0.5 18 | _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 19 | _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 20 | _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 21 | _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 22 | 23 | _BumpMap ("Normalmap", 2D) = "bump" {} 24 | _BumpOutline ("Bump Outline", Range(0,1)) = 0.5 25 | _BumpFace ("Bump Face", Range(0,1)) = 0.5 26 | 27 | _ReflectFaceColor ("Face Color", Color) = (0,0,0,1) 28 | _ReflectOutlineColor ("Outline Color", Color) = (0,0,0,1) 29 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } 30 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) 31 | [HDR]_SpecColor ("Specular Color", Color) = (0,0,0,1) 32 | 33 | _FaceShininess ("Face Shininess", Range(0,1)) = 0 34 | _OutlineShininess ("Outline Shininess", Range(0,1)) = 0 35 | 36 | [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) 37 | _GlowOffset ("Offset", Range(-1,1)) = 0 38 | _GlowInner ("Inner", Range(0,1)) = 0.05 39 | _GlowOuter ("Outer", Range(0,1)) = 0.05 40 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 41 | 42 | _WeightNormal ("Weight Normal", float) = 0 43 | _WeightBold ("Weight Bold", float) = 0.5 44 | 45 | // Should not be directly exposed to the user 46 | _ShaderFlags ("Flags", float) = 0 47 | _ScaleRatioA ("Scale RatioA", float) = 1 48 | _ScaleRatioB ("Scale RatioB", float) = 1 49 | _ScaleRatioC ("Scale RatioC", float) = 1 50 | 51 | _MainTex ("Font Atlas", 2D) = "white" {} 52 | _TextureWidth ("Texture Width", float) = 512 53 | _TextureHeight ("Texture Height", float) = 512 54 | _GradientScale ("Gradient Scale", float) = 5.0 55 | _ScaleX ("Scale X", float) = 1.0 56 | _ScaleY ("Scale Y", float) = 1.0 57 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 58 | _Sharpness ("Sharpness", Range(-1,1)) = 0 59 | 60 | _VertexOffsetX ("Vertex OffsetX", float) = 0 61 | _VertexOffsetY ("Vertex OffsetY", float) = 0 62 | 63 | _CullMode ("Cull Mode", Float) = 0 64 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) 65 | //_MaskSoftness ("Mask Softness", float) = 0 66 | } 67 | 68 | SubShader { 69 | 70 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 71 | 72 | LOD 300 73 | Cull [_CullMode] 74 | 75 | CGPROGRAM 76 | #pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap 77 | #pragma target 3.0 78 | #pragma shader_feature __ GLOW_ON 79 | #pragma glsl 80 | 81 | #include "TMPro_Properties.cginc" 82 | #include "TMPro.cginc" 83 | 84 | half _FaceShininess; 85 | half _OutlineShininess; 86 | 87 | struct Input 88 | { 89 | fixed4 color : COLOR; 90 | float2 uv_MainTex; 91 | float2 uv2_FaceTex; 92 | float2 uv2_OutlineTex; 93 | float2 param; // Weight, Scale 94 | float3 viewDirEnv; 95 | }; 96 | 97 | 98 | #define BEVEL_ON 1 99 | #include "TMPro_Surface.cginc" 100 | 101 | ENDCG 102 | 103 | // Pass to render object as a shadow caster 104 | Pass 105 | { 106 | Name "Caster" 107 | Tags { "LightMode" = "ShadowCaster" } 108 | Offset 1, 1 109 | 110 | Fog {Mode Off} 111 | ZWrite On 112 | ZTest LEqual 113 | Cull Off 114 | 115 | CGPROGRAM 116 | #pragma vertex vert 117 | #pragma fragment frag 118 | #pragma multi_compile_shadowcaster 119 | #include "UnityCG.cginc" 120 | 121 | struct v2f { 122 | V2F_SHADOW_CASTER; 123 | float2 uv : TEXCOORD1; 124 | float2 uv2 : TEXCOORD3; 125 | float alphaClip : TEXCOORD2; 126 | }; 127 | 128 | uniform float4 _MainTex_ST; 129 | uniform float4 _OutlineTex_ST; 130 | float _OutlineWidth; 131 | float _FaceDilate; 132 | float _ScaleRatioA; 133 | 134 | v2f vert( appdata_base v ) 135 | { 136 | v2f o; 137 | TRANSFER_SHADOW_CASTER(o) 138 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 139 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); 140 | o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; 141 | return o; 142 | } 143 | 144 | uniform sampler2D _MainTex; 145 | 146 | float4 frag(v2f i) : COLOR 147 | { 148 | fixed4 texcol = tex2D(_MainTex, i.uv).a; 149 | clip(texcol.a - i.alphaClip); 150 | SHADOW_CASTER_FRAGMENT(i) 151 | } 152 | ENDCG 153 | } 154 | } 155 | 156 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 157 | } 158 | 159 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_GameObject: {fileID: 0} 9 | m_Enabled: 1 10 | m_EditorHideFlags: 0 11 | m_Script: {fileID: 11500000, guid: ab2114bdc8544297b417dfefe9f1e410, type: 3} 12 | m_Name: Default Style Sheet 13 | m_EditorClassIdentifier: 14 | m_StyleList: 15 | - m_Name: H1 16 | m_HashCode: 2425 17 | m_OpeningDefinition: <#40ff80>* 18 | m_ClosingDefinition: '*' 19 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d00000032000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000660000006600000038000000300000003e0000002a000000 20 | m_ClosingTagArray: 2a0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 21 | - m_Name: Quote 22 | m_HashCode: 92254330 23 | m_OpeningDefinition: 24 | m_ClosingDefinition: 25 | m_OpeningTagArray: 3c000000690000003e0000003c00000073000000690000007a000000650000003d0000003700000035000000250000003e0000003c0000006d000000610000007200000067000000690000006e0000003d0000003100000030000000250000003e000000 26 | m_ClosingTagArray: 3c0000002f000000690000003e0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f00000077000000690000006400000074000000680000003e0000003c0000002f0000006d000000610000007200000067000000690000006e0000003e000000 27 | - m_Name: Link 28 | m_HashCode: 2687968 29 | m_OpeningDefinition: <#40a0ff> 30 | m_ClosingDefinition: 31 | m_OpeningTagArray: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f0000003000000031000000220000003e000000 32 | m_ClosingTagArray: 3c0000002f000000750000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f0000006c000000690000006e0000006b0000003e000000 33 | - m_Name: Title 34 | m_HashCode: 98732960 35 | m_OpeningDefinition: 36 | m_ClosingDefinition: 37 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e0000003c000000620000003e0000003c000000610000006c00000069000000670000006e0000003d00000063000000650000006e0000007400000065000000720000003e000000 38 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000610000006c00000069000000670000006e0000003e000000 39 | - m_Name: H2 40 | m_HashCode: 2426 41 | m_OpeningDefinition: <#4080FF> 42 | m_ClosingDefinition: 43 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e00000035000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000380000003000000046000000460000003e000000 44 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 45 | - m_Name: H3 46 | m_HashCode: 2427 47 | m_OpeningDefinition: <#FF8040> 48 | m_ClosingDefinition: 49 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e0000003100000037000000650000006d0000003e0000003c000000620000003e0000003c000000230000004600000046000000380000003000000034000000300000003e000000 50 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 51 | - m_Name: C1 52 | m_HashCode: 2194 53 | m_OpeningDefinition: 54 | m_ClosingDefinition: 55 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000660000006600000034000000300000003e000000 56 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000 57 | - m_Name: C2 58 | m_HashCode: 2193 59 | m_OpeningDefinition: 60 | m_ClosingDefinition: 61 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000340000003000000046000000460000003e0000003c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e000000 62 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f00000073000000690000007a000000650000003e000000 63 | - m_Name: C3 64 | m_HashCode: 2192 65 | m_OpeningDefinition: 66 | m_ClosingDefinition: 67 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000003800000030000000410000003000000046000000460000003e0000003c000000620000003e000000 68 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f000000620000003e000000 69 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc: -------------------------------------------------------------------------------- 1 | struct vertex_t { 2 | UNITY_VERTEX_INPUT_INSTANCE_ID 3 | float4 position : POSITION; 4 | float3 normal : NORMAL; 5 | float4 color : COLOR; 6 | float2 texcoord0 : TEXCOORD0; 7 | float2 texcoord1 : TEXCOORD1; 8 | }; 9 | 10 | struct pixel_t { 11 | UNITY_VERTEX_INPUT_INSTANCE_ID 12 | UNITY_VERTEX_OUTPUT_STEREO 13 | float4 position : SV_POSITION; 14 | float4 faceColor : COLOR; 15 | float4 outlineColor : COLOR1; 16 | float4 texcoord0 : TEXCOORD0; 17 | float4 param : TEXCOORD1; // weight, scaleRatio 18 | float2 mask : TEXCOORD2; 19 | #if (UNDERLAY_ON || UNDERLAY_INNER) 20 | float4 texcoord2 : TEXCOORD3; 21 | float4 underlayColor : COLOR2; 22 | #endif 23 | }; 24 | 25 | float4 SRGBToLinear(float4 rgba) { 26 | return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a); 27 | } 28 | 29 | pixel_t VertShader(vertex_t input) 30 | { 31 | pixel_t output; 32 | 33 | UNITY_INITIALIZE_OUTPUT(pixel_t, output); 34 | UNITY_SETUP_INSTANCE_ID(input); 35 | UNITY_TRANSFER_INSTANCE_ID(input, output); 36 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); 37 | 38 | float bold = step(input.texcoord1.y, 0); 39 | 40 | float4 vert = input.position; 41 | vert.x += _VertexOffsetX; 42 | vert.y += _VertexOffsetY; 43 | 44 | float4 vPosition = UnityObjectToClipPos(vert); 45 | 46 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 47 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 48 | 49 | // Generate UV for the Masking Texture 50 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 51 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 52 | 53 | float4 color = input.color; 54 | #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA) 55 | color = SRGBToLinear(input.color); 56 | #endif 57 | 58 | float opacity = color.a; 59 | #if (UNDERLAY_ON | UNDERLAY_INNER) 60 | opacity = 1.0; 61 | #endif 62 | 63 | float4 faceColor = float4(color.rgb, opacity) * _FaceColor; 64 | faceColor.rgb *= faceColor.a; 65 | 66 | float4 outlineColor = _OutlineColor; 67 | outlineColor.a *= opacity; 68 | outlineColor.rgb *= outlineColor.a; 69 | 70 | output.position = vPosition; 71 | output.faceColor = faceColor; 72 | output.outlineColor = outlineColor; 73 | output.texcoord0 = float4(input.texcoord0.xy, maskUV.xy); 74 | output.param = float4(0.5 - weight, 1.3333 * _GradientScale * (_Sharpness + 1) / _TextureWidth, _OutlineWidth * _ScaleRatioA * 0.5, 0); 75 | 76 | float2 mask = float2(0, 0); 77 | #if UNITY_UI_CLIP_RECT 78 | mask = vert.xy * 2 - clampedRect.xy - clampedRect.zw; 79 | #endif 80 | output.mask = mask; 81 | 82 | #if (UNDERLAY_ON || UNDERLAY_INNER) 83 | float4 underlayColor = _UnderlayColor; 84 | underlayColor.rgb *= underlayColor.a; 85 | 86 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 87 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 88 | 89 | output.texcoord2 = float4(input.texcoord0 + float2(x, y), input.color.a, 0); 90 | output.underlayColor = underlayColor; 91 | #endif 92 | 93 | return output; 94 | } 95 | 96 | float4 PixShader(pixel_t input) : SV_Target 97 | { 98 | UNITY_SETUP_INSTANCE_ID(input); 99 | 100 | float d = tex2D(_MainTex, input.texcoord0.xy).a; 101 | 102 | float2 UV = input.texcoord0.xy; 103 | float scale = rsqrt(abs(ddx(UV.x) * ddy(UV.y) - ddy(UV.x) * ddx(UV.y))) * input.param.y; 104 | 105 | #if (UNDERLAY_ON | UNDERLAY_INNER) 106 | float layerScale = scale; 107 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 108 | float layerBias = input.param.x * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 109 | #endif 110 | 111 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 112 | 113 | float4 faceColor = input.faceColor * saturate((d - input.param.x) * scale + 0.5); 114 | 115 | #ifdef OUTLINE_ON 116 | float4 outlineColor = lerp(input.faceColor, input.outlineColor, sqrt(min(1.0, input.param.z * scale * 2))); 117 | faceColor = lerp(outlineColor, input.faceColor, saturate((d - input.param.x - input.param.z) * scale + 0.5)); 118 | faceColor *= saturate((d - input.param.x + input.param.z) * scale + 0.5); 119 | #endif 120 | 121 | #if UNDERLAY_ON 122 | d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; 123 | faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - layerBias) * (1 - faceColor.a); 124 | #endif 125 | 126 | #if UNDERLAY_INNER 127 | float bias = input.param.x * scale - 0.5; 128 | float sd = saturate(d * scale - bias - input.param.z); 129 | d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; 130 | faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - layerBias)) * sd * (1 - faceColor.a); 131 | #endif 132 | 133 | #ifdef MASKING 134 | float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); 135 | float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; 136 | a = saturate(t / _MaskEdgeSoftness); 137 | faceColor.rgb = lerp(_MaskEdgeColor.rgb * faceColor.a, faceColor.rgb, a); 138 | faceColor *= a; 139 | #endif 140 | 141 | // Alternative implementation to UnityGet2DClipping with support for softness 142 | #if UNITY_UI_CLIP_RECT 143 | float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale)); 144 | float2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW); 145 | faceColor *= m.x * m.y; 146 | #endif 147 | 148 | #if (UNDERLAY_ON | UNDERLAY_INNER) 149 | faceColor *= input.texcoord2.z; 150 | #endif 151 | 152 | #if UNITY_UI_ALPHACLIP 153 | clip(faceColor.a - 0.001); 154 | #endif 155 | 156 | return faceColor; 157 | } 158 | -------------------------------------------------------------------------------- /Assets/Prefabs/CollidableBowlingPin.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!54 &4690662467811542936 4 | Rigidbody: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 9043499238071024318} 10 | serializedVersion: 2 11 | m_Mass: 0.4 12 | m_Drag: 0 13 | m_AngularDrag: 0.05 14 | m_UseGravity: 1 15 | m_IsKinematic: 0 16 | m_Interpolate: 0 17 | m_Constraints: 0 18 | m_CollisionDetection: 0 19 | --- !u!136 &7904539464986749630 20 | CapsuleCollider: 21 | m_ObjectHideFlags: 0 22 | m_CorrespondingSourceObject: {fileID: 0} 23 | m_PrefabInstance: {fileID: 0} 24 | m_PrefabAsset: {fileID: 0} 25 | m_GameObject: {fileID: 9043499238071024318} 26 | m_Material: {fileID: 0} 27 | m_IsTrigger: 0 28 | m_Enabled: 1 29 | m_Radius: 0.08 30 | m_Height: 0.575 31 | m_Direction: 0 32 | m_Center: {x: 0.21, y: 0, z: 0} 33 | --- !u!65 &7939572062767733283 34 | BoxCollider: 35 | m_ObjectHideFlags: 0 36 | m_CorrespondingSourceObject: {fileID: 0} 37 | m_PrefabInstance: {fileID: 0} 38 | m_PrefabAsset: {fileID: 0} 39 | m_GameObject: {fileID: 9043499238071024318} 40 | m_Material: {fileID: 0} 41 | m_IsTrigger: 0 42 | m_Enabled: 1 43 | serializedVersion: 2 44 | m_Size: {x: 0.1, y: 0.03, z: 0.03} 45 | m_Center: {x: 0.465, y: 0, z: 0} 46 | --- !u!114 &1762738870058944388 47 | MonoBehaviour: 48 | m_ObjectHideFlags: 0 49 | m_CorrespondingSourceObject: {fileID: 0} 50 | m_PrefabInstance: {fileID: 0} 51 | m_PrefabAsset: {fileID: 0} 52 | m_GameObject: {fileID: 9043499238071024318} 53 | m_Enabled: 1 54 | m_EditorHideFlags: 0 55 | m_Script: {fileID: 11500000, guid: 51e5dc30037d1ec4db5acc224a423507, type: 3} 56 | m_Name: 57 | m_EditorClassIdentifier: 58 | pinFallThreshold: 0.02 59 | toppleLife: 3 60 | tries: 10 61 | --- !u!114 &8033553503530119978 62 | MonoBehaviour: 63 | m_ObjectHideFlags: 0 64 | m_CorrespondingSourceObject: {fileID: 0} 65 | m_PrefabInstance: {fileID: 0} 66 | m_PrefabAsset: {fileID: 0} 67 | m_GameObject: {fileID: 9043499238071024318} 68 | m_Enabled: 1 69 | m_EditorHideFlags: 0 70 | m_Script: {fileID: 11500000, guid: 3b20687ab7424fdb9831faad0eef53ef, type: 3} 71 | m_Name: 72 | m_EditorClassIdentifier: 73 | emittedTypes: -1 74 | statesToProcess: -1 75 | forwardingSourceValidity: 76 | field: {fileID: 0} 77 | CollisionStarted: 78 | m_PersistentCalls: 79 | m_Calls: 80 | - m_Target: {fileID: 1762738870058944388} 81 | m_MethodName: CheckTopple 82 | m_Mode: 1 83 | m_Arguments: 84 | m_ObjectArgument: {fileID: 0} 85 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 86 | m_IntArgument: 0 87 | m_FloatArgument: 0 88 | m_StringArgument: 89 | m_BoolArgument: 0 90 | m_CallState: 2 91 | CollisionChanged: 92 | m_PersistentCalls: 93 | m_Calls: [] 94 | CollisionStopped: 95 | m_PersistentCalls: 96 | m_Calls: [] 97 | stopCollisionsOnDisable: 1 98 | --- !u!1001 &1054154239463547831 99 | PrefabInstance: 100 | m_ObjectHideFlags: 0 101 | serializedVersion: 2 102 | m_Modification: 103 | m_TransformParent: {fileID: 0} 104 | m_Modifications: 105 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 106 | type: 3} 107 | propertyPath: m_RootOrder 108 | value: 0 109 | objectReference: {fileID: 0} 110 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 111 | type: 3} 112 | propertyPath: m_LocalScale.x 113 | value: 1 114 | objectReference: {fileID: 0} 115 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 116 | type: 3} 117 | propertyPath: m_LocalScale.y 118 | value: 1 119 | objectReference: {fileID: 0} 120 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 121 | type: 3} 122 | propertyPath: m_LocalScale.z 123 | value: 1 124 | objectReference: {fileID: 0} 125 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 126 | type: 3} 127 | propertyPath: m_LocalPosition.x 128 | value: 0 129 | objectReference: {fileID: 0} 130 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 131 | type: 3} 132 | propertyPath: m_LocalPosition.y 133 | value: 0 134 | objectReference: {fileID: 0} 135 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 136 | type: 3} 137 | propertyPath: m_LocalPosition.z 138 | value: 0 139 | objectReference: {fileID: 0} 140 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 141 | type: 3} 142 | propertyPath: m_LocalRotation.w 143 | value: 0.7071068 144 | objectReference: {fileID: 0} 145 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 146 | type: 3} 147 | propertyPath: m_LocalRotation.x 148 | value: 0 149 | objectReference: {fileID: 0} 150 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 151 | type: 3} 152 | propertyPath: m_LocalRotation.y 153 | value: 0 154 | objectReference: {fileID: 0} 155 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 156 | type: 3} 157 | propertyPath: m_LocalRotation.z 158 | value: -0.7071068 159 | objectReference: {fileID: 0} 160 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 161 | type: 3} 162 | propertyPath: m_LocalEulerAnglesHint.x 163 | value: 0 164 | objectReference: {fileID: 0} 165 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 166 | type: 3} 167 | propertyPath: m_LocalEulerAnglesHint.y 168 | value: 0 169 | objectReference: {fileID: 0} 170 | - target: {fileID: -4216859302048453862, guid: b91270cef1e82de42a090e1b4b8881f1, 171 | type: 3} 172 | propertyPath: m_LocalEulerAnglesHint.z 173 | value: -90 174 | objectReference: {fileID: 0} 175 | - target: {fileID: -1504981713932161579, guid: b91270cef1e82de42a090e1b4b8881f1, 176 | type: 3} 177 | propertyPath: m_Materials.Array.data[0] 178 | value: 179 | objectReference: {fileID: 2100000, guid: cb0735e6bc58e484188c61d8c9edb63b, type: 2} 180 | - target: {fileID: -927199367670048503, guid: b91270cef1e82de42a090e1b4b8881f1, 181 | type: 3} 182 | propertyPath: m_Name 183 | value: CollidableBowlingPin 184 | objectReference: {fileID: 0} 185 | m_RemovedComponents: [] 186 | m_SourcePrefab: {fileID: 100100000, guid: b91270cef1e82de42a090e1b4b8881f1, type: 3} 187 | --- !u!1 &9043499238071024318 stripped 188 | GameObject: 189 | m_CorrespondingSourceObject: {fileID: -927199367670048503, guid: b91270cef1e82de42a090e1b4b8881f1, 190 | type: 3} 191 | m_PrefabInstance: {fileID: 1054154239463547831} 192 | m_PrefabAsset: {fileID: 0} 193 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Standalone: 5 227 | WebGL: 3 228 | Windows Store Apps: 5 229 | XboxOne: 5 230 | iPhone: 2 231 | tvOS: 2 232 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field Overlay" { 7 | 8 | Properties { 9 | [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | _Sharpness ("Sharpness", Range(-1,1)) = 0 38 | 39 | _VertexOffsetX ("Vertex OffsetX", float) = 0 40 | _VertexOffsetY ("Vertex OffsetY", float) = 0 41 | 42 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 43 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 44 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 45 | 46 | _StencilComp ("Stencil Comparison", Float) = 8 47 | _Stencil ("Stencil ID", Float) = 0 48 | _StencilOp ("Stencil Operation", Float) = 0 49 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 50 | _StencilReadMask ("Stencil Read Mask", Float) = 255 51 | 52 | _CullMode ("Cull Mode", Float) = 0 53 | _ColorMask ("Color Mask", Float) = 15 54 | } 55 | 56 | SubShader { 57 | Tags 58 | { 59 | "Queue"="Overlay" 60 | "IgnoreProjector"="True" 61 | "RenderType"="Transparent" 62 | } 63 | 64 | 65 | Stencil 66 | { 67 | Ref [_Stencil] 68 | Comp [_StencilComp] 69 | Pass [_StencilOp] 70 | ReadMask [_StencilReadMask] 71 | WriteMask [_StencilWriteMask] 72 | } 73 | 74 | Cull [_CullMode] 75 | ZWrite Off 76 | Lighting Off 77 | Fog { Mode Off } 78 | ZTest Always 79 | Blend One OneMinusSrcAlpha 80 | ColorMask [_ColorMask] 81 | 82 | Pass { 83 | CGPROGRAM 84 | #pragma vertex VertShader 85 | #pragma fragment PixShader 86 | #pragma shader_feature __ OUTLINE_ON 87 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 88 | 89 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 90 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 91 | 92 | #include "UnityCG.cginc" 93 | #include "UnityUI.cginc" 94 | #include "TMPro_Properties.cginc" 95 | 96 | struct vertex_t { 97 | UNITY_VERTEX_INPUT_INSTANCE_ID 98 | float4 vertex : POSITION; 99 | float3 normal : NORMAL; 100 | fixed4 color : COLOR; 101 | float2 texcoord0 : TEXCOORD0; 102 | float2 texcoord1 : TEXCOORD1; 103 | }; 104 | 105 | struct pixel_t { 106 | UNITY_VERTEX_INPUT_INSTANCE_ID 107 | UNITY_VERTEX_OUTPUT_STEREO 108 | float4 vertex : SV_POSITION; 109 | fixed4 faceColor : COLOR; 110 | fixed4 outlineColor : COLOR1; 111 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 112 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 113 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 114 | #if (UNDERLAY_ON | UNDERLAY_INNER) 115 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 116 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 117 | #endif 118 | }; 119 | 120 | 121 | pixel_t VertShader(vertex_t input) 122 | { 123 | pixel_t output; 124 | 125 | UNITY_INITIALIZE_OUTPUT(pixel_t, output); 126 | UNITY_SETUP_INSTANCE_ID(input); 127 | UNITY_TRANSFER_INSTANCE_ID(input, output); 128 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); 129 | 130 | float bold = step(input.texcoord1.y, 0); 131 | 132 | float4 vert = input.vertex; 133 | vert.x += _VertexOffsetX; 134 | vert.y += _VertexOffsetY; 135 | float4 vPosition = UnityObjectToClipPos(vert); 136 | 137 | float2 pixelSize = vPosition.w; 138 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 139 | 140 | float scale = rsqrt(dot(pixelSize, pixelSize)); 141 | scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); 142 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 143 | 144 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 145 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 146 | 147 | float layerScale = scale; 148 | 149 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 150 | float bias = (0.5 - weight) * scale - 0.5; 151 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 152 | 153 | float opacity = input.color.a; 154 | #if (UNDERLAY_ON | UNDERLAY_INNER) 155 | opacity = 1.0; 156 | #endif 157 | 158 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 159 | faceColor.rgb *= faceColor.a; 160 | 161 | fixed4 outlineColor = _OutlineColor; 162 | outlineColor.a *= opacity; 163 | outlineColor.rgb *= outlineColor.a; 164 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 165 | 166 | #if (UNDERLAY_ON | UNDERLAY_INNER) 167 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 168 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 169 | 170 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 171 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 172 | float2 layerOffset = float2(x, y); 173 | #endif 174 | 175 | // Generate UV for the Masking Texture 176 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 177 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 178 | 179 | // Populate structure for pixel shader 180 | output.vertex = vPosition; 181 | output.faceColor = faceColor; 182 | output.outlineColor = outlineColor; 183 | output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y); 184 | output.param = half4(scale, bias - outline, bias + outline, bias); 185 | output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 186 | #if (UNDERLAY_ON || UNDERLAY_INNER) 187 | output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0); 188 | output.underlayParam = half2(layerScale, layerBias); 189 | #endif 190 | 191 | return output; 192 | } 193 | 194 | 195 | // PIXEL SHADER 196 | fixed4 PixShader(pixel_t input) : SV_Target 197 | { 198 | UNITY_SETUP_INSTANCE_ID(input); 199 | 200 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 201 | half4 c = input.faceColor * saturate(d - input.param.w); 202 | 203 | #ifdef OUTLINE_ON 204 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 205 | c *= saturate(d - input.param.y); 206 | #endif 207 | 208 | #if UNDERLAY_ON 209 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 210 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 211 | #endif 212 | 213 | #if UNDERLAY_INNER 214 | half sd = saturate(d - input.param.z); 215 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 216 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 217 | #endif 218 | 219 | // Alternative implementation to UnityGet2DClipping with support for softness. 220 | #if UNITY_UI_CLIP_RECT 221 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 222 | c *= m.x * m.y; 223 | #endif 224 | 225 | #if (UNDERLAY_ON | UNDERLAY_INNER) 226 | c *= input.texcoord1.z; 227 | #endif 228 | 229 | #if UNITY_UI_ALPHACLIP 230 | clip(c.a - 0.001); 231 | #endif 232 | 233 | return c; 234 | } 235 | ENDCG 236 | } 237 | } 238 | 239 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 240 | } 241 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field" { 7 | 8 | Properties { 9 | [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | _Sharpness ("Sharpness", Range(-1,1)) = 0 38 | 39 | _VertexOffsetX ("Vertex OffsetX", float) = 0 40 | _VertexOffsetY ("Vertex OffsetY", float) = 0 41 | 42 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 43 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 44 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 45 | 46 | _StencilComp ("Stencil Comparison", Float) = 8 47 | _Stencil ("Stencil ID", Float) = 0 48 | _StencilOp ("Stencil Operation", Float) = 0 49 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 50 | _StencilReadMask ("Stencil Read Mask", Float) = 255 51 | 52 | _CullMode ("Cull Mode", Float) = 0 53 | _ColorMask ("Color Mask", Float) = 15 54 | } 55 | 56 | SubShader { 57 | Tags 58 | { 59 | "Queue"="Transparent" 60 | "IgnoreProjector"="True" 61 | "RenderType"="Transparent" 62 | } 63 | 64 | 65 | Stencil 66 | { 67 | Ref [_Stencil] 68 | Comp [_StencilComp] 69 | Pass [_StencilOp] 70 | ReadMask [_StencilReadMask] 71 | WriteMask [_StencilWriteMask] 72 | } 73 | 74 | Cull [_CullMode] 75 | ZWrite Off 76 | Lighting Off 77 | Fog { Mode Off } 78 | ZTest [unity_GUIZTestMode] 79 | Blend One OneMinusSrcAlpha 80 | ColorMask [_ColorMask] 81 | 82 | Pass { 83 | CGPROGRAM 84 | #pragma vertex VertShader 85 | #pragma fragment PixShader 86 | #pragma shader_feature __ OUTLINE_ON 87 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 88 | 89 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 90 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 91 | 92 | #include "UnityCG.cginc" 93 | #include "UnityUI.cginc" 94 | #include "TMPro_Properties.cginc" 95 | 96 | struct vertex_t { 97 | UNITY_VERTEX_INPUT_INSTANCE_ID 98 | float4 vertex : POSITION; 99 | float3 normal : NORMAL; 100 | fixed4 color : COLOR; 101 | float2 texcoord0 : TEXCOORD0; 102 | float2 texcoord1 : TEXCOORD1; 103 | }; 104 | 105 | struct pixel_t { 106 | UNITY_VERTEX_INPUT_INSTANCE_ID 107 | UNITY_VERTEX_OUTPUT_STEREO 108 | float4 vertex : SV_POSITION; 109 | fixed4 faceColor : COLOR; 110 | fixed4 outlineColor : COLOR1; 111 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 112 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 113 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 114 | #if (UNDERLAY_ON | UNDERLAY_INNER) 115 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 116 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 117 | #endif 118 | }; 119 | 120 | 121 | pixel_t VertShader(vertex_t input) 122 | { 123 | pixel_t output; 124 | 125 | UNITY_INITIALIZE_OUTPUT(pixel_t, output); 126 | UNITY_SETUP_INSTANCE_ID(input); 127 | UNITY_TRANSFER_INSTANCE_ID(input, output); 128 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); 129 | 130 | float bold = step(input.texcoord1.y, 0); 131 | 132 | float4 vert = input.vertex; 133 | vert.x += _VertexOffsetX; 134 | vert.y += _VertexOffsetY; 135 | float4 vPosition = UnityObjectToClipPos(vert); 136 | 137 | float2 pixelSize = vPosition.w; 138 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 139 | 140 | float scale = rsqrt(dot(pixelSize, pixelSize)); 141 | scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); 142 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 143 | 144 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 145 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 146 | 147 | float layerScale = scale; 148 | 149 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 150 | float bias = (0.5 - weight) * scale - 0.5; 151 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 152 | 153 | float opacity = input.color.a; 154 | #if (UNDERLAY_ON | UNDERLAY_INNER) 155 | opacity = 1.0; 156 | #endif 157 | 158 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 159 | faceColor.rgb *= faceColor.a; 160 | 161 | fixed4 outlineColor = _OutlineColor; 162 | outlineColor.a *= opacity; 163 | outlineColor.rgb *= outlineColor.a; 164 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 165 | 166 | #if (UNDERLAY_ON | UNDERLAY_INNER) 167 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 168 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 169 | 170 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 171 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 172 | float2 layerOffset = float2(x, y); 173 | #endif 174 | 175 | // Generate UV for the Masking Texture 176 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 177 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 178 | 179 | // Populate structure for pixel shader 180 | output.vertex = vPosition; 181 | output.faceColor = faceColor; 182 | output.outlineColor = outlineColor; 183 | output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y); 184 | output.param = half4(scale, bias - outline, bias + outline, bias); 185 | output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 186 | #if (UNDERLAY_ON || UNDERLAY_INNER) 187 | output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0); 188 | output.underlayParam = half2(layerScale, layerBias); 189 | #endif 190 | 191 | return output; 192 | } 193 | 194 | 195 | // PIXEL SHADER 196 | fixed4 PixShader(pixel_t input) : SV_Target 197 | { 198 | UNITY_SETUP_INSTANCE_ID(input); 199 | 200 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 201 | half4 c = input.faceColor * saturate(d - input.param.w); 202 | 203 | #ifdef OUTLINE_ON 204 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 205 | c *= saturate(d - input.param.y); 206 | #endif 207 | 208 | #if UNDERLAY_ON 209 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 210 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 211 | #endif 212 | 213 | #if UNDERLAY_INNER 214 | half sd = saturate(d - input.param.z); 215 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 216 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 217 | #endif 218 | 219 | // Alternative implementation to UnityGet2DClipping with support for softness. 220 | #if UNITY_UI_CLIP_RECT 221 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 222 | c *= m.x * m.y; 223 | #endif 224 | 225 | #if (UNDERLAY_ON | UNDERLAY_INNER) 226 | c *= input.texcoord1.z; 227 | #endif 228 | 229 | #if UNITY_UI_ALPHACLIP 230 | clip(c.a - 0.001); 231 | #endif 232 | 233 | return c; 234 | } 235 | ENDCG 236 | } 237 | } 238 | 239 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 240 | } 241 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field - Masking" { 7 | 8 | Properties { 9 | [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | _Sharpness ("Sharpness", Range(-1,1)) = 0 38 | 39 | _VertexOffsetX ("Vertex OffsetX", float) = 0 40 | _VertexOffsetY ("Vertex OffsetY", float) = 0 41 | 42 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 43 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 44 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 45 | _MaskTex ("Mask Texture", 2D) = "white" {} 46 | _MaskInverse ("Inverse", float) = 0 47 | _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) 48 | _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 49 | _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 50 | 51 | _StencilComp ("Stencil Comparison", Float) = 8 52 | _Stencil ("Stencil ID", Float) = 0 53 | _StencilOp ("Stencil Operation", Float) = 0 54 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 55 | _StencilReadMask ("Stencil Read Mask", Float) = 255 56 | 57 | _CullMode ("Cull Mode", Float) = 0 58 | _ColorMask ("Color Mask", Float) = 15 59 | } 60 | 61 | SubShader { 62 | Tags 63 | { 64 | "Queue"="Transparent" 65 | "IgnoreProjector"="True" 66 | "RenderType"="Transparent" 67 | } 68 | 69 | 70 | Stencil 71 | { 72 | Ref [_Stencil] 73 | Comp [_StencilComp] 74 | Pass [_StencilOp] 75 | ReadMask [_StencilReadMask] 76 | WriteMask [_StencilWriteMask] 77 | } 78 | 79 | Cull [_CullMode] 80 | ZWrite Off 81 | Lighting Off 82 | Fog { Mode Off } 83 | ZTest [unity_GUIZTestMode] 84 | Blend One OneMinusSrcAlpha 85 | ColorMask [_ColorMask] 86 | 87 | Pass { 88 | CGPROGRAM 89 | #pragma vertex VertShader 90 | #pragma fragment PixShader 91 | #pragma shader_feature __ OUTLINE_ON 92 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 93 | 94 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 95 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 96 | 97 | 98 | #include "UnityCG.cginc" 99 | #include "UnityUI.cginc" 100 | #include "TMPro_Properties.cginc" 101 | 102 | struct vertex_t { 103 | float4 vertex : POSITION; 104 | float3 normal : NORMAL; 105 | fixed4 color : COLOR; 106 | float2 texcoord0 : TEXCOORD0; 107 | float2 texcoord1 : TEXCOORD1; 108 | }; 109 | 110 | struct pixel_t { 111 | float4 vertex : SV_POSITION; 112 | fixed4 faceColor : COLOR; 113 | fixed4 outlineColor : COLOR1; 114 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 115 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 116 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 117 | #if (UNDERLAY_ON | UNDERLAY_INNER) 118 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 119 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 120 | #endif 121 | }; 122 | 123 | float _MaskWipeControl; 124 | float _MaskEdgeSoftness; 125 | fixed4 _MaskEdgeColor; 126 | bool _MaskInverse; 127 | 128 | pixel_t VertShader(vertex_t input) 129 | { 130 | float bold = step(input.texcoord1.y, 0); 131 | 132 | float4 vert = input.vertex; 133 | vert.x += _VertexOffsetX; 134 | vert.y += _VertexOffsetY; 135 | float4 vPosition = UnityObjectToClipPos(vert); 136 | 137 | float2 pixelSize = vPosition.w; 138 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 139 | 140 | float scale = rsqrt(dot(pixelSize, pixelSize)); 141 | scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); 142 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 143 | 144 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 145 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 146 | 147 | float layerScale = scale; 148 | 149 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 150 | float bias = (0.5 - weight) * scale - 0.5; 151 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 152 | 153 | float opacity = input.color.a; 154 | #if (UNDERLAY_ON | UNDERLAY_INNER) 155 | opacity = 1.0; 156 | #endif 157 | 158 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 159 | faceColor.rgb *= faceColor.a; 160 | 161 | fixed4 outlineColor = _OutlineColor; 162 | outlineColor.a *= opacity; 163 | outlineColor.rgb *= outlineColor.a; 164 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 165 | 166 | #if (UNDERLAY_ON | UNDERLAY_INNER) 167 | 168 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 169 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 170 | 171 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 172 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 173 | float2 layerOffset = float2(x, y); 174 | #endif 175 | 176 | // Generate UV for the Masking Texture 177 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 178 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 179 | 180 | // Structure for pixel shader 181 | pixel_t output = { 182 | vPosition, 183 | faceColor, 184 | outlineColor, 185 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), 186 | half4(scale, bias - outline, bias + outline, bias), 187 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 188 | #if (UNDERLAY_ON | UNDERLAY_INNER) 189 | float4(input.texcoord0 + layerOffset, input.color.a, 0), 190 | half2(layerScale, layerBias), 191 | #endif 192 | }; 193 | 194 | return output; 195 | } 196 | 197 | 198 | // PIXEL SHADER 199 | fixed4 PixShader(pixel_t input) : SV_Target 200 | { 201 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 202 | half4 c = input.faceColor * saturate(d - input.param.w); 203 | 204 | #ifdef OUTLINE_ON 205 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 206 | c *= saturate(d - input.param.y); 207 | #endif 208 | 209 | #if UNDERLAY_ON 210 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 211 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 212 | #endif 213 | 214 | #if UNDERLAY_INNER 215 | half sd = saturate(d - input.param.z); 216 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 217 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 218 | #endif 219 | 220 | // Alternative implementation to UnityGet2DClipping with support for softness. 221 | //#if UNITY_UI_CLIP_RECT 222 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 223 | c *= m.x * m.y; 224 | //#endif 225 | 226 | float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); 227 | float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; 228 | a = saturate(t / _MaskEdgeSoftness); 229 | c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a); 230 | c *= a; 231 | 232 | #if (UNDERLAY_ON | UNDERLAY_INNER) 233 | c *= input.texcoord1.z; 234 | #endif 235 | 236 | #if UNITY_UI_ALPHACLIP 237 | clip(c.a - 0.001); 238 | #endif 239 | 240 | return c; 241 | } 242 | ENDCG 243 | } 244 | } 245 | 246 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 247 | } 248 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2180264 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: LiberationSans SDF Material 11 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 1 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _Cube: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailAlbedoMap: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailMask: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailNormalMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _EmissionMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _FaceTex: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _MainTex: 51 | m_Texture: {fileID: 28268798066460806} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _MetallicGlossMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _OcclusionMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _OutlineTex: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _ParallaxMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | m_Floats: 71 | - _Ambient: 0.5 72 | - _Bevel: 0.5 73 | - _BevelClamp: 0 74 | - _BevelOffset: 0 75 | - _BevelRoundness: 0 76 | - _BevelWidth: 0 77 | - _BumpFace: 0 78 | - _BumpOutline: 0 79 | - _BumpScale: 1 80 | - _ColorMask: 15 81 | - _Cutoff: 0.5 82 | - _DetailNormalMapScale: 1 83 | - _Diffuse: 0.5 84 | - _DstBlend: 0 85 | - _FaceDilate: 0 86 | - _FaceUVSpeedX: 0 87 | - _FaceUVSpeedY: 0 88 | - _GlossMapScale: 1 89 | - _Glossiness: 0.5 90 | - _GlossyReflections: 1 91 | - _GlowInner: 0.05 92 | - _GlowOffset: 0 93 | - _GlowOuter: 0.05 94 | - _GlowPower: 0.75 95 | - _GradientScale: 10 96 | - _LightAngle: 3.1416 97 | - _MaskSoftnessX: 0 98 | - _MaskSoftnessY: 0 99 | - _Metallic: 0 100 | - _Mode: 0 101 | - _OcclusionStrength: 1 102 | - _OutlineSoftness: 0 103 | - _OutlineUVSpeedX: 0 104 | - _OutlineUVSpeedY: 0 105 | - _OutlineWidth: 0 106 | - _Parallax: 0.02 107 | - _PerspectiveFilter: 0.875 108 | - _Reflectivity: 10 109 | - _ScaleRatioA: 0.90909094 110 | - _ScaleRatioB: 0.73125 111 | - _ScaleRatioC: 0.7386364 112 | - _ScaleX: 1 113 | - _ScaleY: 1 114 | - _ShaderFlags: 0 115 | - _Sharpness: 0 116 | - _SmoothnessTextureChannel: 0 117 | - _SpecularHighlights: 1 118 | - _SpecularPower: 2 119 | - _SrcBlend: 1 120 | - _Stencil: 0 121 | - _StencilComp: 8 122 | - _StencilOp: 0 123 | - _StencilReadMask: 255 124 | - _StencilWriteMask: 255 125 | - _TextureHeight: 512 126 | - _TextureWidth: 512 127 | - _UVSec: 0 128 | - _UnderlayDilate: 0 129 | - _UnderlayOffsetX: 0 130 | - _UnderlayOffsetY: 0 131 | - _UnderlaySoftness: 0 132 | - _VertexOffsetX: 0 133 | - _VertexOffsetY: 0 134 | - _WeightBold: 0.75 135 | - _WeightNormal: 0 136 | - _ZWrite: 1 137 | m_Colors: 138 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 139 | - _Color: {r: 1, g: 1, b: 1, a: 1} 140 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 141 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 142 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 143 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 144 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 145 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 146 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 147 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 148 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 149 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 150 | --- !u!114 &11400000 151 | MonoBehaviour: 152 | m_ObjectHideFlags: 0 153 | m_CorrespondingSourceObject: {fileID: 0} 154 | m_PrefabInstance: {fileID: 0} 155 | m_PrefabAsset: {fileID: 0} 156 | m_GameObject: {fileID: 0} 157 | m_Enabled: 1 158 | m_EditorHideFlags: 0 159 | m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} 160 | m_Name: LiberationSans SDF - Fallback 161 | m_EditorClassIdentifier: 162 | hashCode: -1699145518 163 | material: {fileID: 2180264} 164 | materialHashCode: -1183942120 165 | m_Version: 1.1.0 166 | m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 167 | m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, 168 | type: 3} 169 | m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3} 170 | m_AtlasPopulationMode: 1 171 | m_FaceInfo: 172 | m_FamilyName: Liberation Sans 173 | m_StyleName: Regular 174 | m_PointSize: 86 175 | m_Scale: 1 176 | m_LineHeight: 98.8916 177 | m_AscentLine: 77.853516 178 | m_CapLine: 59 179 | m_MeanLine: 45 180 | m_Baseline: 0 181 | m_DescentLine: -18.22461 182 | m_SuperscriptOffset: 77.853516 183 | m_SuperscriptSize: 0.5 184 | m_SubscriptOffset: -18.22461 185 | m_SubscriptSize: 0.5 186 | m_UnderlineOffset: -12.261719 187 | m_UnderlineThickness: 6.298828 188 | m_StrikethroughOffset: 18 189 | m_StrikethroughThickness: 6.298828 190 | m_TabWidth: 24 191 | m_GlyphTable: [] 192 | m_CharacterTable: [] 193 | m_AtlasTextures: 194 | - {fileID: 28268798066460806} 195 | m_AtlasTextureIndex: 0 196 | m_UsedGlyphRects: [] 197 | m_FreeGlyphRects: 198 | - m_X: 0 199 | m_Y: 0 200 | m_Width: 511 201 | m_Height: 511 202 | m_fontInfo: 203 | Name: Liberation Sans 204 | PointSize: 86 205 | Scale: 1 206 | CharacterCount: 250 207 | LineHeight: 98.90625 208 | Baseline: 0 209 | Ascender: 77.84375 210 | CapHeight: 59.1875 211 | Descender: -18.21875 212 | CenterLine: 0 213 | SuperscriptOffset: 77.84375 214 | SubscriptOffset: -12.261719 215 | SubSize: 0.5 216 | Underline: -12.261719 217 | UnderlineThickness: 6.298828 218 | strikethrough: 23.675 219 | strikethroughThickness: 0 220 | TabWidth: 239.0625 221 | Padding: 9 222 | AtlasWidth: 1024 223 | AtlasHeight: 1024 224 | atlas: {fileID: 0} 225 | m_AtlasWidth: 512 226 | m_AtlasHeight: 512 227 | m_AtlasPadding: 9 228 | m_AtlasRenderMode: 4169 229 | m_glyphInfoList: [] 230 | m_KerningTable: 231 | kerningPairs: [] 232 | m_FallbackFontAssetTable: [] 233 | m_CreationSettings: 234 | sourceFontFileName: 235 | sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 236 | pointSizeSamplingMode: 0 237 | pointSize: 86 238 | padding: 9 239 | packingMode: 4 240 | atlasWidth: 512 241 | atlasHeight: 512 242 | characterSetSelectionMode: 1 243 | characterSequence: 32 - 126, 160 - 255, 8192 - 8303, 8364, 8482, 9633 244 | referencedFontAssetGUID: 8f586378b4e144a9851e7b34d9b748ee 245 | referencedTextAssetGUID: 246 | fontStyle: 0 247 | fontStyleModifier: 0 248 | renderMode: 4169 249 | includeFontFeatures: 1 250 | m_FontWeightTable: 251 | - regularTypeface: {fileID: 0} 252 | italicTypeface: {fileID: 0} 253 | - regularTypeface: {fileID: 0} 254 | italicTypeface: {fileID: 0} 255 | - regularTypeface: {fileID: 0} 256 | italicTypeface: {fileID: 0} 257 | - regularTypeface: {fileID: 0} 258 | italicTypeface: {fileID: 0} 259 | - regularTypeface: {fileID: 0} 260 | italicTypeface: {fileID: 0} 261 | - regularTypeface: {fileID: 0} 262 | italicTypeface: {fileID: 0} 263 | - regularTypeface: {fileID: 0} 264 | italicTypeface: {fileID: 0} 265 | - regularTypeface: {fileID: 0} 266 | italicTypeface: {fileID: 0} 267 | - regularTypeface: {fileID: 0} 268 | italicTypeface: {fileID: 0} 269 | - regularTypeface: {fileID: 0} 270 | italicTypeface: {fileID: 0} 271 | fontWeights: 272 | - regularTypeface: {fileID: 0} 273 | italicTypeface: {fileID: 0} 274 | - regularTypeface: {fileID: 0} 275 | italicTypeface: {fileID: 0} 276 | - regularTypeface: {fileID: 0} 277 | italicTypeface: {fileID: 0} 278 | - regularTypeface: {fileID: 0} 279 | italicTypeface: {fileID: 0} 280 | - regularTypeface: {fileID: 0} 281 | italicTypeface: {fileID: 0} 282 | - regularTypeface: {fileID: 0} 283 | italicTypeface: {fileID: 0} 284 | - regularTypeface: {fileID: 0} 285 | italicTypeface: {fileID: 0} 286 | - regularTypeface: {fileID: 0} 287 | italicTypeface: {fileID: 0} 288 | - regularTypeface: {fileID: 0} 289 | italicTypeface: {fileID: 0} 290 | - regularTypeface: {fileID: 0} 291 | italicTypeface: {fileID: 0} 292 | normalStyle: 0 293 | normalSpacingOffset: 0 294 | boldStyle: 0.75 295 | boldSpacing: 7 296 | italicStyle: 35 297 | tabSize: 10 298 | --- !u!28 &28268798066460806 299 | Texture2D: 300 | m_ObjectHideFlags: 0 301 | m_CorrespondingSourceObject: {fileID: 0} 302 | m_PrefabInstance: {fileID: 0} 303 | m_PrefabAsset: {fileID: 0} 304 | m_Name: LiberationSans SDF Atlas 305 | m_ImageContentsHash: 306 | serializedVersion: 2 307 | Hash: 00000000000000000000000000000000 308 | m_ForcedFallbackFormat: 4 309 | m_DownscaleFallback: 0 310 | serializedVersion: 2 311 | m_Width: 0 312 | m_Height: 0 313 | m_CompleteImageSize: 0 314 | m_TextureFormat: 1 315 | m_MipCount: 1 316 | m_IsReadable: 1 317 | m_StreamingMipmaps: 0 318 | m_StreamingMipmapsPriority: 0 319 | m_AlphaIsTransparency: 0 320 | m_ImageCount: 1 321 | m_TextureDimension: 2 322 | m_TextureSettings: 323 | serializedVersion: 2 324 | m_FilterMode: 1 325 | m_Aniso: 1 326 | m_MipBias: 0 327 | m_WrapU: 0 328 | m_WrapV: 0 329 | m_WrapW: 0 330 | m_LightmapFormat: 0 331 | m_ColorSpace: 0 332 | image data: 0 333 | _typelessdata: 334 | m_StreamData: 335 | offset: 0 336 | size: 0 337 | path: 338 | -------------------------------------------------------------------------------- /Assets/TextMesh Pro/Sprites/EmojiOne.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dffef66376be4fa480fb02b19edbe903 3 | TextureImporter: 4 | fileIDToRecycleName: 5 | 21300000: EmojiOne_0 6 | 21300002: EmojiOne_1 7 | 21300004: EmojiOne_2 8 | 21300006: EmojiOne_3 9 | 21300008: EmojiOne_4 10 | 21300010: EmojiOne_6 11 | 21300012: EmojiOne_7 12 | 21300014: EmojiOne_8 13 | 21300016: EmojiOne_9 14 | 21300018: EmojiOne_10 15 | 21300020: EmojiOne_11 16 | 21300022: EmojiOne_12 17 | 21300024: EmojiOne_13 18 | 21300026: EmojiOne_5 19 | 21300028: EmojiOne_14 20 | externalObjects: {} 21 | serializedVersion: 5 22 | mipmaps: 23 | mipMapMode: 0 24 | enableMipMap: 1 25 | sRGBTexture: 1 26 | linearTexture: 0 27 | fadeOut: 0 28 | borderMipMap: 0 29 | mipMapsPreserveCoverage: 0 30 | alphaTestReferenceValue: 0.5 31 | mipMapFadeDistanceStart: 1 32 | mipMapFadeDistanceEnd: 3 33 | bumpmap: 34 | convertToNormalMap: 0 35 | externalNormalMap: 0 36 | heightScale: 0.25 37 | normalMapFilter: 0 38 | isReadable: 0 39 | grayScaleToAlpha: 0 40 | generateCubemap: 6 41 | cubemapConvolution: 0 42 | seamlessCubemap: 0 43 | textureFormat: -1 44 | maxTextureSize: 2048 45 | textureSettings: 46 | serializedVersion: 2 47 | filterMode: -1 48 | aniso: -1 49 | mipBias: -1 50 | wrapU: 1 51 | wrapV: 1 52 | wrapW: 1 53 | nPOTScale: 0 54 | lightmap: 0 55 | compressionQuality: 50 56 | spriteMode: 2 57 | spriteExtrude: 1 58 | spriteMeshType: 1 59 | alignment: 0 60 | spritePivot: {x: 0.5, y: 0.5} 61 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 62 | spritePixelsToUnits: 100 63 | alphaUsage: 1 64 | alphaIsTransparency: 1 65 | spriteTessellationDetail: -1 66 | textureType: 0 67 | textureShape: 1 68 | singleChannelComponent: 0 69 | maxTextureSizeSet: 0 70 | compressionQualitySet: 0 71 | textureFormatSet: 0 72 | platformSettings: 73 | - serializedVersion: 2 74 | buildTarget: DefaultTexturePlatform 75 | maxTextureSize: 512 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | - serializedVersion: 2 85 | buildTarget: Standalone 86 | maxTextureSize: 512 87 | resizeAlgorithm: 0 88 | textureFormat: -1 89 | textureCompression: 1 90 | compressionQuality: 50 91 | crunchedCompression: 0 92 | allowsAlphaSplitting: 0 93 | overridden: 0 94 | androidETC2FallbackOverride: 0 95 | - serializedVersion: 2 96 | buildTarget: iPhone 97 | maxTextureSize: 512 98 | resizeAlgorithm: 0 99 | textureFormat: -1 100 | textureCompression: 1 101 | compressionQuality: 50 102 | crunchedCompression: 0 103 | allowsAlphaSplitting: 0 104 | overridden: 0 105 | androidETC2FallbackOverride: 0 106 | - serializedVersion: 2 107 | buildTarget: Android 108 | maxTextureSize: 512 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: 120 | - serializedVersion: 2 121 | name: EmojiOne_0 122 | rect: 123 | serializedVersion: 2 124 | x: 0 125 | y: 384 126 | width: 128 127 | height: 128 128 | alignment: 0 129 | pivot: {x: 0.5, y: 0.5} 130 | border: {x: 0, y: 0, z: 0, w: 0} 131 | outline: [] 132 | physicsShape: [] 133 | tessellationDetail: 0 134 | bones: [] 135 | spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c 136 | vertices: [] 137 | indices: 138 | edges: [] 139 | weights: [] 140 | - serializedVersion: 2 141 | name: EmojiOne_1 142 | rect: 143 | serializedVersion: 2 144 | x: 128 145 | y: 384 146 | width: 128 147 | height: 128 148 | alignment: 0 149 | pivot: {x: 0.5, y: 0.5} 150 | border: {x: 0, y: 0, z: 0, w: 0} 151 | outline: [] 152 | physicsShape: [] 153 | tessellationDetail: 0 154 | bones: [] 155 | spriteID: e9eea8093eaeaee4d901c4553f572c22 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | - serializedVersion: 2 161 | name: EmojiOne_2 162 | rect: 163 | serializedVersion: 2 164 | x: 256 165 | y: 384 166 | width: 128 167 | height: 128 168 | alignment: 0 169 | pivot: {x: 0.5, y: 0.5} 170 | border: {x: 0, y: 0, z: 0, w: 0} 171 | outline: [] 172 | physicsShape: [] 173 | tessellationDetail: 0 174 | bones: [] 175 | spriteID: 49451da35411dcc42a3692e39b0fde70 176 | vertices: [] 177 | indices: 178 | edges: [] 179 | weights: [] 180 | - serializedVersion: 2 181 | name: EmojiOne_3 182 | rect: 183 | serializedVersion: 2 184 | x: 384 185 | y: 384 186 | width: 128 187 | height: 128 188 | alignment: 0 189 | pivot: {x: 0.5, y: 0.5} 190 | border: {x: 0, y: 0, z: 0, w: 0} 191 | outline: [] 192 | physicsShape: [] 193 | tessellationDetail: 0 194 | bones: [] 195 | spriteID: f65709664b924904790c850a50ca82bc 196 | vertices: [] 197 | indices: 198 | edges: [] 199 | weights: [] 200 | - serializedVersion: 2 201 | name: EmojiOne_4 202 | rect: 203 | serializedVersion: 2 204 | x: 0 205 | y: 256 206 | width: 128 207 | height: 128 208 | alignment: 0 209 | pivot: {x: 0.5, y: 0.5} 210 | border: {x: 0, y: 0, z: 0, w: 0} 211 | outline: [] 212 | physicsShape: [] 213 | tessellationDetail: 0 214 | bones: [] 215 | spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8 216 | vertices: [] 217 | indices: 218 | edges: [] 219 | weights: [] 220 | - serializedVersion: 2 221 | name: EmojiOne_6 222 | rect: 223 | serializedVersion: 2 224 | x: 256 225 | y: 256 226 | width: 128 227 | height: 128 228 | alignment: 0 229 | pivot: {x: 0.5, y: 0.5} 230 | border: {x: 0, y: 0, z: 0, w: 0} 231 | outline: [] 232 | physicsShape: [] 233 | tessellationDetail: 0 234 | bones: [] 235 | spriteID: b10f2b48b7281594bb8a24a6511a35af 236 | vertices: [] 237 | indices: 238 | edges: [] 239 | weights: [] 240 | - serializedVersion: 2 241 | name: EmojiOne_7 242 | rect: 243 | serializedVersion: 2 244 | x: 384 245 | y: 256 246 | width: 128 247 | height: 128 248 | alignment: 0 249 | pivot: {x: 0.5, y: 0.5} 250 | border: {x: 0, y: 0, z: 0, w: 0} 251 | outline: [] 252 | physicsShape: [] 253 | tessellationDetail: 0 254 | bones: [] 255 | spriteID: 10a600f9329dc2246a897e89f4d283cd 256 | vertices: [] 257 | indices: 258 | edges: [] 259 | weights: [] 260 | - serializedVersion: 2 261 | name: EmojiOne_8 262 | rect: 263 | serializedVersion: 2 264 | x: 0 265 | y: 128 266 | width: 128 267 | height: 128 268 | alignment: 0 269 | pivot: {x: 0.5, y: 0.5} 270 | border: {x: 0, y: 0, z: 0, w: 0} 271 | outline: [] 272 | physicsShape: [] 273 | tessellationDetail: 0 274 | bones: [] 275 | spriteID: 66cffa363b90ab14787d8a5b90cf4502 276 | vertices: [] 277 | indices: 278 | edges: [] 279 | weights: [] 280 | - serializedVersion: 2 281 | name: EmojiOne_9 282 | rect: 283 | serializedVersion: 2 284 | x: 128 285 | y: 128 286 | width: 128 287 | height: 128 288 | alignment: 0 289 | pivot: {x: 0.5, y: 0.5} 290 | border: {x: 0, y: 0, z: 0, w: 0} 291 | outline: [] 292 | physicsShape: [] 293 | tessellationDetail: 0 294 | bones: [] 295 | spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad 296 | vertices: [] 297 | indices: 298 | edges: [] 299 | weights: [] 300 | - serializedVersion: 2 301 | name: EmojiOne_10 302 | rect: 303 | serializedVersion: 2 304 | x: 256 305 | y: 128 306 | width: 128 307 | height: 128 308 | alignment: 0 309 | pivot: {x: 0.5, y: 0.5} 310 | border: {x: 0, y: 0, z: 0, w: 0} 311 | outline: [] 312 | physicsShape: [] 313 | tessellationDetail: 0 314 | bones: [] 315 | spriteID: 2a9e58eaf96feef42bcefa1cf257193f 316 | vertices: [] 317 | indices: 318 | edges: [] 319 | weights: [] 320 | - serializedVersion: 2 321 | name: EmojiOne_11 322 | rect: 323 | serializedVersion: 2 324 | x: 384 325 | y: 128 326 | width: 128 327 | height: 128 328 | alignment: 0 329 | pivot: {x: 0.5, y: 0.5} 330 | border: {x: 0, y: 0, z: 0, w: 0} 331 | outline: [] 332 | physicsShape: [] 333 | tessellationDetail: 0 334 | bones: [] 335 | spriteID: 2489120affc155840ae6a7be2e93ce19 336 | vertices: [] 337 | indices: 338 | edges: [] 339 | weights: [] 340 | - serializedVersion: 2 341 | name: EmojiOne_12 342 | rect: 343 | serializedVersion: 2 344 | x: 0 345 | y: 0 346 | width: 128 347 | height: 128 348 | alignment: 0 349 | pivot: {x: 0.5, y: 0.5} 350 | border: {x: 0, y: 0, z: 0, w: 0} 351 | outline: [] 352 | physicsShape: [] 353 | tessellationDetail: 0 354 | bones: [] 355 | spriteID: 412349a150598d14da4d7140df5c0286 356 | vertices: [] 357 | indices: 358 | edges: [] 359 | weights: [] 360 | - serializedVersion: 2 361 | name: EmojiOne_13 362 | rect: 363 | serializedVersion: 2 364 | x: 128 365 | y: 0 366 | width: 128 367 | height: 128 368 | alignment: 0 369 | pivot: {x: 0.5, y: 0.5} 370 | border: {x: 0, y: 0, z: 0, w: 0} 371 | outline: [] 372 | physicsShape: [] 373 | tessellationDetail: 0 374 | bones: [] 375 | spriteID: a937464b42bb3634782dea34c6becb6c 376 | vertices: [] 377 | indices: 378 | edges: [] 379 | weights: [] 380 | - serializedVersion: 2 381 | name: EmojiOne_5 382 | rect: 383 | serializedVersion: 2 384 | x: 256 385 | y: 0 386 | width: 128 387 | height: 128 388 | alignment: 0 389 | pivot: {x: 0, y: 0} 390 | border: {x: 0, y: 0, z: 0, w: 0} 391 | outline: [] 392 | physicsShape: [] 393 | tessellationDetail: 0 394 | bones: [] 395 | spriteID: b0f933b217682124dbfc5e6b89abe3d0 396 | vertices: [] 397 | indices: 398 | edges: [] 399 | weights: [] 400 | - serializedVersion: 2 401 | name: EmojiOne_14 402 | rect: 403 | serializedVersion: 2 404 | x: 128 405 | y: 256 406 | width: 128 407 | height: 128 408 | alignment: 0 409 | pivot: {x: 0, y: 0} 410 | border: {x: 0, y: 0, z: 0, w: 0} 411 | outline: [] 412 | physicsShape: [] 413 | tessellationDetail: 0 414 | bones: [] 415 | spriteID: f7235c763afe4434e8bb666750a41096 416 | vertices: [] 417 | indices: 418 | edges: [] 419 | weights: [] 420 | outline: [] 421 | physicsShape: [] 422 | bones: [] 423 | spriteID: 3e32d8f5477abfc43b19066e8ad5032e 424 | vertices: [] 425 | indices: 426 | edges: [] 427 | weights: [] 428 | spritePackingTag: 429 | userData: 430 | assetBundleName: 431 | assetBundleVariant: 432 | --------------------------------------------------------------------------------