├── .collabignore
├── .gitignore
├── .idea
└── .idea.Basketball
│ ├── .idea
│ ├── contentModel.xml
│ ├── indexLayout.xml
│ ├── modules.xml
│ └── workspace.xml
│ └── riderModule.iml
├── Assets
├── Ball.mat
├── Ball.mat.meta
├── Ball.physicMaterial
├── Ball.physicMaterial.meta
├── Ball.prefab
├── Ball.prefab.meta
├── BallController.cs
├── BallController.cs.meta
├── BallScored.mat
├── BallScored.mat.meta
├── BallSpawnerController.cs
├── BallSpawnerController.cs.meta
├── Blocker.cs
├── Blocker.cs.meta
├── Court.mat
├── Court.mat.meta
├── Debug.mat
├── Debug.mat.meta
├── Hoop.prefab
├── Hoop.prefab.meta
├── ML-Agents.meta
├── PercentageController.cs
├── PercentageController.cs.meta
├── Player.mat
├── Player.mat.meta
├── PlayerController.cs
├── PlayerController.cs.meta
├── Plugins.meta
├── Plugins
│ ├── Editor.meta
│ └── Editor
│ │ ├── JetBrains.meta
│ │ └── JetBrains
│ │ ├── JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
│ │ └── JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
├── Resources.meta
├── Resources
│ ├── frozen.pb.bytes
│ └── frozen.pb.bytes.meta
├── Scenes.meta
├── Scenes
│ ├── SampleScene.unity
│ └── SampleScene.unity.meta
├── TextMesh Pro.meta
└── TextMesh Pro
│ ├── Documentation.meta
│ ├── Documentation
│ ├── TextMesh Pro User Guide 2016.pdf
│ └── TextMesh Pro User Guide 2016.pdf.meta
│ ├── Resources.meta
│ ├── Resources
│ ├── Fonts & Materials.meta
│ ├── Fonts & Materials
│ │ ├── LiberationSans SDF - Drop Shadow.mat
│ │ ├── LiberationSans SDF - Drop Shadow.mat.meta
│ │ ├── LiberationSans SDF - Outline.mat
│ │ ├── LiberationSans SDF - Outline.mat.meta
│ │ ├── LiberationSans SDF.asset
│ │ └── LiberationSans SDF.asset.meta
│ ├── LineBreaking Following Characters.txt
│ ├── LineBreaking Following Characters.txt.meta
│ ├── LineBreaking Leading Characters.txt
│ ├── LineBreaking Leading Characters.txt.meta
│ ├── Shaders.meta
│ ├── Shaders
│ │ ├── TMP_Bitmap-Mobile.shader
│ │ ├── TMP_Bitmap-Mobile.shader.meta
│ │ ├── TMP_Bitmap.shader
│ │ ├── TMP_Bitmap.shader.meta
│ │ ├── TMP_SDF Overlay.shader
│ │ ├── TMP_SDF Overlay.shader.meta
│ │ ├── TMP_SDF-Mobile Masking.shader
│ │ ├── TMP_SDF-Mobile Masking.shader.meta
│ │ ├── TMP_SDF-Mobile Overlay.shader
│ │ ├── TMP_SDF-Mobile Overlay.shader.meta
│ │ ├── TMP_SDF-Mobile.shader
│ │ ├── TMP_SDF-Mobile.shader.meta
│ │ ├── TMP_SDF-Surface-Mobile.shader
│ │ ├── TMP_SDF-Surface-Mobile.shader.meta
│ │ ├── TMP_SDF-Surface.shader
│ │ ├── TMP_SDF-Surface.shader.meta
│ │ ├── TMP_SDF.shader
│ │ ├── TMP_SDF.shader.meta
│ │ ├── TMP_Sprite.shader
│ │ ├── TMP_Sprite.shader.meta
│ │ ├── TMPro.cginc
│ │ ├── TMPro.cginc.meta
│ │ ├── TMPro_Properties.cginc
│ │ ├── TMPro_Properties.cginc.meta
│ │ ├── TMPro_Surface.cginc
│ │ └── TMPro_Surface.cginc.meta
│ ├── Sprite Assets.meta
│ ├── Sprite Assets
│ │ ├── EmojiOne.asset
│ │ └── EmojiOne.asset.meta
│ ├── Style Sheets.meta
│ ├── Style Sheets
│ │ ├── Default Style Sheet.asset
│ │ └── Default Style Sheet.asset.meta
│ ├── TMP Settings.asset
│ └── TMP Settings.asset.meta
│ ├── Sprites.meta
│ └── Sprites
│ ├── EmojiOne.json
│ ├── EmojiOne.json.meta
│ ├── EmojiOne.png
│ └── EmojiOne.png.meta
├── LICENSE
├── Packages
└── manifest.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
└── UnityConnectSettings.asset
├── README.md
└── tsjs
├── .idea
├── basketflow.iml
├── misc.xml
├── modules.xml
└── workspace.xml
├── build.sh
├── index.js
├── keras_to_pb.py
├── package-lock.json
├── package.json
├── pb_to_frozen_pb.sh
└── tsjs_to_keras.sh
/.collabignore:
--------------------------------------------------------------------------------
1 | # ===========================
2 | # Default Collab Ignore Rules
3 | # ===========================
4 |
5 | # OS Generated
6 | # ============
7 | .DS_Store
8 | ._*
9 | .Spotlight-V100
10 | .Trashes
11 | Icon?
12 | ehthumbs.db
13 | [Tt]humbs.db
14 | [Dd]esktop.ini
15 |
16 | # Visual Studio / MonoDevelop generated
17 | # =====================================
18 | [Ee]xported[Oo]bj/
19 | *.userprefs
20 | *.csproj
21 | *.pidb
22 | *.suo
23 | *.sln
24 | *.user
25 | *.unityproj
26 | *.booproj
27 |
28 | # Unity generated
29 | # ===============
30 | [Oo]bj/
31 | [Bb]uild
32 | sysinfo.txt
33 | *.stackdump
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | [Ll]ibrary/
3 | [Tt]emp/
4 | [Oo]bj/
5 | [Bb]uild/
6 | [Bb]uilds/
7 | Assets/AssetStoreTools*
8 |
9 | # Visual Studio cache directory
10 | .vs/
11 |
12 | # Autogenerated VS/MD/Consulo solution and project files
13 | ExportedObj/
14 | .consulo/
15 | *.csproj
16 | *.unityproj
17 | *.sln
18 | *.suo
19 | *.tmp
20 | *.user
21 | *.userprefs
22 | *.pidb
23 | *.booproj
24 | *.svd
25 | *.pdb
26 | *.opendb
27 |
28 | # Unity3D generated meta files
29 | *.pidb.meta
30 | *.pdb.meta
31 |
32 | # Unity3D Generated File On Crash Reports
33 | sysinfo.txt
34 |
35 | # Builds
36 | *.apk
37 | *.unitypackage
38 |
39 | # Logs
40 | logs
41 | *.log
42 | npm-debug.log*
43 | yarn-debug.log*
44 | yarn-error.log*
45 |
46 | # Runtime data
47 | pids
48 | *.pid
49 | *.seed
50 | *.pid.lock
51 |
52 | # Directory for instrumented libs generated by jscoverage/JSCover
53 | lib-cov
54 |
55 | # Coverage directory used by tools like istanbul
56 | coverage
57 |
58 | # nyc test coverage
59 | .nyc_output
60 |
61 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
62 | .grunt
63 |
64 | # Bower dependency directory (https://bower.io/)
65 | bower_components
66 |
67 | # node-waf configuration
68 | .lock-wscript
69 |
70 | # Compiled binary addons (https://nodejs.org/api/addons.html)
71 | build/Release
72 |
73 | # Dependency directories
74 | /**/node_modules/
75 | jspm_packages/
76 |
77 | # TypeScript v1 declaration files
78 | typings/
79 |
80 | # Optional npm cache directory
81 | .npm
82 |
83 | # Optional eslint cache
84 | .eslintcache
85 |
86 | # Optional REPL history
87 | .node_repl_history
88 |
89 | # Output of 'npm pack'
90 | *.tgz
91 |
92 | # Yarn Integrity file
93 | .yarn-integrity
94 |
95 | # dotenv environment variables file
96 | .env
97 |
98 | # parcel-bundler cache (https://parceljs.org/)
99 | .cache
100 |
101 | # next.js build output
102 | .next
103 |
104 | # nuxt.js build output
105 | .nuxt
106 |
107 | # vuepress build output
108 | .vuepress/dist
109 |
110 | # Serverless directories
111 | .serverless
112 |
--------------------------------------------------------------------------------
/.idea/.idea.Basketball/.idea/contentModel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
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 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/.idea/.idea.Basketball/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/.idea.Basketball/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/.idea.Basketball/riderModule.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Assets/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_PrefabInternal: {fileID: 0}
9 | m_Name: Ball
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BackTex:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _BumpMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailAlbedoMap:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailMask:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _DetailNormalMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _DownTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _EmissionMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _FrontTex:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _LeftTex:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | - _MainTex:
58 | m_Texture: {fileID: 10305, guid: 0000000000000000f000000000000000, type: 0}
59 | m_Scale: {x: 1, y: 1}
60 | m_Offset: {x: 0, y: 0}
61 | - _MetallicGlossMap:
62 | m_Texture: {fileID: 0}
63 | m_Scale: {x: 1, y: 1}
64 | m_Offset: {x: 0, y: 0}
65 | - _OcclusionMap:
66 | m_Texture: {fileID: 0}
67 | m_Scale: {x: 1, y: 1}
68 | m_Offset: {x: 0, y: 0}
69 | - _ParallaxMap:
70 | m_Texture: {fileID: 0}
71 | m_Scale: {x: 1, y: 1}
72 | m_Offset: {x: 0, y: 0}
73 | - _RightTex:
74 | m_Texture: {fileID: 0}
75 | m_Scale: {x: 1, y: 1}
76 | m_Offset: {x: 0, y: 0}
77 | - _UpTex:
78 | m_Texture: {fileID: 0}
79 | m_Scale: {x: 1, y: 1}
80 | m_Offset: {x: 0, y: 0}
81 | m_Floats:
82 | - _BumpScale: 1
83 | - _Cutoff: 0.5
84 | - _DetailNormalMapScale: 1
85 | - _DstBlend: 0
86 | - _GlossMapScale: 1
87 | - _Glossiness: 0.5
88 | - _GlossyReflections: 1
89 | - _Metallic: 0
90 | - _Mode: 0
91 | - _OcclusionStrength: 1
92 | - _Parallax: 0.02
93 | - _Shininess: 0.078125
94 | - _SmoothnessTextureChannel: 0
95 | - _SpecularHighlights: 1
96 | - _SrcBlend: 1
97 | - _UVSec: 0
98 | - _ZWrite: 1
99 | m_Colors:
100 | - _Color: {r: 1, g: 0.5705093, b: 0.1462264, a: 1}
101 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
102 |
--------------------------------------------------------------------------------
/Assets/Ball.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 43666f8b669134e2294d81f8266aaa17
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Ball.physicMaterial:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!134 &13400000
4 | PhysicMaterial:
5 | m_ObjectHideFlags: 0
6 | m_PrefabParentObject: {fileID: 0}
7 | m_PrefabInternal: {fileID: 0}
8 | m_Name: Ball
9 | dynamicFriction: 0.6
10 | staticFriction: 0.6
11 | bounciness: 0.8
12 | frictionCombine: 0
13 | bounceCombine: 0
14 |
--------------------------------------------------------------------------------
/Assets/Ball.physicMaterial.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 03ea0581daf814c89917366b58c547fc
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 13400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Ball.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1001 &100100000
4 | Prefab:
5 | m_ObjectHideFlags: 1
6 | serializedVersion: 2
7 | m_Modification:
8 | m_TransformParent: {fileID: 0}
9 | m_Modifications: []
10 | m_RemovedComponents: []
11 | m_ParentPrefab: {fileID: 0}
12 | m_RootGameObject: {fileID: 1170952483474920}
13 | m_IsPrefabParent: 1
14 | --- !u!1 &1170952483474920
15 | GameObject:
16 | m_ObjectHideFlags: 0
17 | m_PrefabParentObject: {fileID: 0}
18 | m_PrefabInternal: {fileID: 100100000}
19 | serializedVersion: 5
20 | m_Component:
21 | - component: {fileID: 4013052997496702}
22 | - component: {fileID: 33528461817327928}
23 | - component: {fileID: 23831429752061744}
24 | - component: {fileID: 135708113979347392}
25 | - component: {fileID: 54259867138054550}
26 | - component: {fileID: 114201532830804482}
27 | m_Layer: 9
28 | m_Name: Ball
29 | m_TagString: Untagged
30 | m_Icon: {fileID: 0}
31 | m_NavMeshLayer: 0
32 | m_StaticEditorFlags: 0
33 | m_IsActive: 1
34 | --- !u!4 &4013052997496702
35 | Transform:
36 | m_ObjectHideFlags: 1
37 | m_PrefabParentObject: {fileID: 0}
38 | m_PrefabInternal: {fileID: 100100000}
39 | m_GameObject: {fileID: 1170952483474920}
40 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
41 | m_LocalPosition: {x: 0, y: 1, z: 0}
42 | m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
43 | m_Children: []
44 | m_Father: {fileID: 0}
45 | m_RootOrder: 0
46 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
47 | --- !u!23 &23831429752061744
48 | MeshRenderer:
49 | m_ObjectHideFlags: 1
50 | m_PrefabParentObject: {fileID: 0}
51 | m_PrefabInternal: {fileID: 100100000}
52 | m_GameObject: {fileID: 1170952483474920}
53 | m_Enabled: 1
54 | m_CastShadows: 1
55 | m_ReceiveShadows: 1
56 | m_DynamicOccludee: 1
57 | m_MotionVectors: 1
58 | m_LightProbeUsage: 1
59 | m_ReflectionProbeUsage: 1
60 | m_RenderingLayerMask: 4294967295
61 | m_Materials:
62 | - {fileID: 2100000, guid: 43666f8b669134e2294d81f8266aaa17, type: 2}
63 | m_StaticBatchInfo:
64 | firstSubMesh: 0
65 | subMeshCount: 0
66 | m_StaticBatchRoot: {fileID: 0}
67 | m_ProbeAnchor: {fileID: 0}
68 | m_LightProbeVolumeOverride: {fileID: 0}
69 | m_ScaleInLightmap: 1
70 | m_PreserveUVs: 0
71 | m_IgnoreNormalsForChartDetection: 0
72 | m_ImportantGI: 0
73 | m_StitchLightmapSeams: 0
74 | m_SelectedEditorRenderState: 3
75 | m_MinimumChartSize: 4
76 | m_AutoUVMaxDistance: 0.5
77 | m_AutoUVMaxAngle: 89
78 | m_LightmapParameters: {fileID: 0}
79 | m_SortingLayerID: 0
80 | m_SortingLayer: 0
81 | m_SortingOrder: 0
82 | --- !u!33 &33528461817327928
83 | MeshFilter:
84 | m_ObjectHideFlags: 1
85 | m_PrefabParentObject: {fileID: 0}
86 | m_PrefabInternal: {fileID: 100100000}
87 | m_GameObject: {fileID: 1170952483474920}
88 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
89 | --- !u!54 &54259867138054550
90 | Rigidbody:
91 | m_ObjectHideFlags: 1
92 | m_PrefabParentObject: {fileID: 0}
93 | m_PrefabInternal: {fileID: 100100000}
94 | m_GameObject: {fileID: 1170952483474920}
95 | serializedVersion: 2
96 | m_Mass: 1
97 | m_Drag: 0
98 | m_AngularDrag: 0.05
99 | m_UseGravity: 1
100 | m_IsKinematic: 0
101 | m_Interpolate: 0
102 | m_Constraints: 0
103 | m_CollisionDetection: 0
104 | --- !u!114 &114201532830804482
105 | MonoBehaviour:
106 | m_ObjectHideFlags: 1
107 | m_PrefabParentObject: {fileID: 0}
108 | m_PrefabInternal: {fileID: 100100000}
109 | m_GameObject: {fileID: 1170952483474920}
110 | m_Enabled: 1
111 | m_EditorHideFlags: 0
112 | m_Script: {fileID: 11500000, guid: 0d44f26b44bd64f8282b4bdd66670b9c, type: 3}
113 | m_Name:
114 | m_EditorClassIdentifier:
115 | Force: {x: 0.5, y: 0.5, z: 0}
116 | Distance: 0
117 | MaterialBallScored: {fileID: 2100000, guid: 80278698e477648dc95142ddc96fa432, type: 2}
118 | --- !u!135 &135708113979347392
119 | SphereCollider:
120 | m_ObjectHideFlags: 1
121 | m_PrefabParentObject: {fileID: 0}
122 | m_PrefabInternal: {fileID: 100100000}
123 | m_GameObject: {fileID: 1170952483474920}
124 | m_Material: {fileID: 13400000, guid: 03ea0581daf814c89917366b58c547fc, type: 2}
125 | m_IsTrigger: 0
126 | m_Enabled: 1
127 | serializedVersion: 2
128 | m_Radius: 0.5
129 | m_Center: {x: 0, y: 0, z: 0}
130 |
--------------------------------------------------------------------------------
/Assets/Ball.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bb8818788338841d68c398bc128b663e
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 100100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/BallController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using Boo.Lang;
6 | using UnityEngine;
7 | using UnityEngine.Assertions.Comparers;
8 |
9 | public class BallController : MonoBehaviour
10 | {
11 | public Vector3 Force;
12 | public float Distance;
13 | public static int SuccessCount = 0;
14 | public static int ShotCount = 1;
15 |
16 | public Material MaterialBallScored;
17 | private Vector3 Scaler = new Vector3(1000, 1000, 1000);
18 |
19 | private bool hasBeenScored = false;
20 |
21 | // Use this for initialization
22 | void Start ()
23 | {
24 | var scaledForce = Vector3.Scale(Scaler, Force);
25 | GetComponent().AddForce(scaledForce);
26 | StartCoroutine(DoDespawn(30));
27 | ShotCount++;
28 | }
29 |
30 | IEnumerator DoDespawn(float delay)
31 | {
32 | yield return new WaitForSeconds(delay);
33 | Destroy(gameObject);
34 | }
35 |
36 | private bool hasTriggeredTop = false;
37 |
38 | private void OnCollisionEnter(Collision other)
39 | {
40 | if (other.gameObject.name == "Court")
41 | {
42 | StartCoroutine(DoDespawn(2.5f));
43 | }
44 | }
45 |
46 | private void OnTriggerEnter(Collider other)
47 | {
48 | if (other.name == "TriggerTop")
49 | {
50 | hasTriggeredTop = true;
51 | } else if (other.name == "TriggerBottom") {
52 | if (hasTriggeredTop && !hasBeenScored)
53 | {
54 | GetComponent().material = MaterialBallScored;
55 | DoReport(String.Format("{0}, {1}, {2}", SuccessCount++, Distance, Force.y));
56 | }
57 | hasBeenScored = true;
58 | }
59 | }
60 |
61 | void DoReport(string info)
62 | {
63 | Debug.Log(info);
64 | File.AppendAllText("successful_shots.csv", info += "\n");
65 | }
66 |
67 | IEnumerator DoReport()
68 | {
69 | using (WWW www = new WWW("localhost:8080/success?distance=" + Distance + "&force=" + Force.y))
70 | {
71 | yield return www;
72 | Debug.Log("Sent!");
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Assets/BallController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0d44f26b44bd64f8282b4bdd66670b9c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/BallScored.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_PrefabInternal: {fileID: 0}
9 | m_Name: BallScored
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0.10132882, g: 0.8773585, b: 0, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/BallScored.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 80278698e477648dc95142ddc96fa432
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/BallSpawnerController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using UnityEngine;
6 | using UnityEngine.UI;
7 | using Random = UnityEngine.Random;
8 | using TensorFlow;
9 |
10 | [System.Serializable]
11 | class Prediction
12 | {
13 | public float result;
14 | }
15 |
16 | public class BallSpawnerController : MonoBehaviour
17 | {
18 | public Transform TransformGoal;
19 | public Transform TransformAim;
20 | public GameObject PrefabBall;
21 |
22 | [Range(0, 10)]
23 | public float maxVariance;
24 |
25 | private float test = 1f;
26 |
27 | private TFGraph graph;
28 | private TFSession session;
29 |
30 | void Start ()
31 | {
32 | File.WriteAllText("successful_shots.csv", "");
33 | TextAsset graphModel = Resources.Load ("frozen.pb") as TextAsset;
34 | graph = new TFGraph ();
35 | graph.Import (graphModel.bytes);
36 |
37 | session = new TFSession (graph);
38 |
39 | StartCoroutine(DoShoot());
40 | }
41 |
42 | private void Update()
43 | {
44 | TransformAim.LookAt(TransformGoal);
45 | }
46 |
47 | IEnumerator DoShoot()
48 | {
49 | while (true)
50 | {
51 | // yield return new WaitUntil(() => !Input.GetButton("Jump"));
52 | // yield return new WaitUntil(() => Input.GetButton("Jump"));
53 |
54 | var gv2 = new Vector2(
55 | TransformGoal.position.x,
56 | TransformGoal.position.z);
57 |
58 | var tv2 = new Vector2(
59 | transform.position.x, transform.position.z);
60 |
61 | var dir = (gv2 - tv2).normalized;
62 | var dist = (gv2 - tv2).magnitude;
63 | var arch = 0.5f;
64 |
65 | var closeness = Math.Min(10f, dist) / 10f;
66 |
67 | float force = GetForceFromTensorFlow(dist);
68 |
69 | var ball = Instantiate(PrefabBall, transform.position, Quaternion.identity);
70 | var bc = ball.GetComponent();
71 | bc.Force = new Vector3(
72 | dir.x * arch * closeness,
73 | force,//* (1f / closeness) Optional: Uncomment this to experiment with artificial shot arcs!
74 | dir.y * arch * closeness
75 | );
76 | bc.Distance = dist;
77 |
78 | yield return new WaitForSeconds(0.02f);
79 | // MoveToRandomDistance();
80 | }
81 | }
82 |
83 | float GetForceFromTensorFlow(float distance)
84 | {
85 | var runner = session.GetRunner ();
86 |
87 | runner.AddInput (
88 | graph["shots_input"][0],
89 | new float[1,1]{{distance}}
90 | );
91 | runner.Fetch (graph ["shots/BiasAdd"] [0]);
92 | float[,] recurrent_tensor = runner.Run () [0].GetValue () as float[,];
93 | var force = recurrent_tensor[0, 0] / 10;
94 | Debug.Log(String.Format("{0}, {1}", distance, force));
95 | return force;
96 | }
97 |
98 | float GetForceRandomly(float distance)
99 | {
100 | return Random.Range(0f, 1f);
101 | }
102 |
103 | float GetForceFromMagicFormula(float distance)
104 | {
105 | var variance = Random.Range(1f, maxVariance);
106 | return (0.125f) + (0.0317f * distance * variance);
107 | }
108 |
109 | void MoveToRandomDistance()
110 | {
111 | var newPosition = new Vector3(TransformGoal.position.x + Random.Range(2.5f, 23f), transform.parent.position.y, TransformGoal.position.z);
112 | transform.parent.position = newPosition;
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Assets/BallSpawnerController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b1b32e5de95d144d19e31b68b0ba7510
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Blocker.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public class Blocker : MonoBehaviour
6 | {
7 | public Transform Target;
8 | private Vector3 Initial;
9 | private float Speed = 0.1f;
10 |
11 | private Rigidbody Rigidbody;
12 |
13 | public bool canJump = false;
14 | public bool canBlock = false;
15 | private bool canMove = true;
16 |
17 | public GameObject GameobjectArms;
18 |
19 | // Use this for initialization
20 | void Start ()
21 | {
22 | Rigidbody = GetComponent();
23 | StartCoroutine(DoBlock());
24 | }
25 |
26 | // Update is called once per frame
27 | private void OnCollisionEnter(Collision other)
28 | {
29 | if (other.gameObject.name == "Court")
30 | {
31 | canJump = true;
32 | }
33 | }
34 |
35 | private void OnCollisionExit(Collision other)
36 | {
37 | if (other.gameObject.name == "Court")
38 | {
39 | canJump = false;
40 | }
41 | }
42 |
43 | private void OnTriggerEnter(Collider other)
44 | {
45 | if (other.gameObject.name == "Positioned")
46 | {
47 | canBlock = true;
48 | }
49 | }
50 |
51 | private void OnTriggerExit(Collider other)
52 | {
53 | if (other.gameObject.name == "Positioned")
54 | {
55 | canBlock = false;
56 | }
57 | }
58 |
59 | IEnumerator DoBlock() {
60 | while (true)
61 | {
62 | yield return new WaitUntil(() => { return canBlock && canJump; });
63 | GameobjectArms.SetActive(true);
64 | canMove = false;
65 |
66 | yield return new WaitUntil(() => { return !(canBlock && canJump); });
67 | GameobjectArms.SetActive(false);
68 | canMove = true;
69 | }
70 | }
71 |
72 | void FixedUpdate ()
73 | {
74 | // if (!canMove) return;
75 |
76 | Rigidbody.MovePosition(Vector3.MoveTowards(
77 | transform.position,
78 | new Vector3(
79 | Target.position.x,
80 | Initial.y,
81 | Target.position.z),
82 | Speed
83 | ));
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/Assets/Blocker.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7df249497b951499482db4c11bf93005
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Court.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_PrefabInternal: {fileID: 0}
9 | m_Name: Court
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0.3018868, g: 0.3018868, b: 0.3018868, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/Court.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2e1996a6242774c6ea0f160e0ac60cda
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Debug.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_PrefabInternal: {fileID: 0}
9 | m_Name: Debug
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0.34349412, g: 0.6410541, b: 0.7830189, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/Debug.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b9438de75f90647e19473342c463bb70
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Hoop.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a07f0417874ad4e77bdfbf768d8f4e29
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 100100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ML-Agents.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 11630fa83cc8b4194b94352e3e6cdb9d
3 | folderAsset: yes
4 | timeCreated: 1504127524
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/PercentageController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using TMPro;
5 | using UnityEngine;
6 |
7 | public class PercentageController : MonoBehaviour
8 | {
9 | public TextMeshPro TextMeshPro;
10 |
11 | // Update is called once per frame
12 | void Update ()
13 | {
14 | TextMeshPro.text = String.Format("{0:0.00}%",
15 | ((float)BallController.SuccessCount / (float)BallController.ShotCount) * 100f);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Assets/PercentageController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4e4aaf7d958f84a38a1d89f265e605ed
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Player.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_PrefabInternal: {fileID: 0}
9 | m_Name: Player
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 1, g: 0.3443396, b: 0.3443396, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/Player.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 22ac09e9e1c7d423fb1a43b3ee0d746f
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/PlayerController.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public class PlayerController : MonoBehaviour
6 | {
7 | public float Speed;
8 |
9 | private Rigidbody Rigidbody;
10 | // Use this for initialization
11 | void Start ()
12 | {
13 | Rigidbody = GetComponent();
14 | }
15 |
16 | // Update is called once per frame
17 | void FixedUpdate () {
18 | Vector3 movement = new Vector3(
19 | Input.GetAxis("Horizontal") * Speed * Time.deltaTime,
20 | 0f,
21 | Input.GetAxis("Vertical") * Speed * Time.deltaTime
22 | );
23 |
24 | Rigidbody.MovePosition(Vector3.MoveTowards(
25 | transform.position,
26 | transform.position + movement,
27 | Speed
28 | ));
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Assets/PlayerController.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1b5f3cc50b9c040538c2fef43f441484
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dfe71419d2aeb48f78a837af4336ade4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Plugins/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 29f98210f2fd5438183bd6b578406823
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Plugins/Editor/JetBrains.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 150b1f1c8e5ec40b99a7ee535e13c2da
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abeisgoat/tf-jam/b47915c22168c7d9a39051ab78116bcf34fbbaf4/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
--------------------------------------------------------------------------------
/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0916638ee25fb4c8ebbb571cc1caea88
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | isPreloaded: 0
9 | isOverridable: 0
10 | platformData:
11 | - first:
12 | Any:
13 | second:
14 | enabled: 0
15 | settings: {}
16 | - first:
17 | Editor: Editor
18 | second:
19 | enabled: 1
20 | settings:
21 | DefaultValueInitialized: true
22 | - first:
23 | Windows Store Apps: WindowsStoreApps
24 | second:
25 | enabled: 0
26 | settings:
27 | CPU: AnyCPU
28 | userData:
29 | assetBundleName:
30 | assetBundleVariant:
31 |
--------------------------------------------------------------------------------
/Assets/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f66cbb88fe8004a4294bca7de107084c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Resources/frozen.pb.bytes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abeisgoat/tf-jam/b47915c22168c7d9a39051ab78116bcf34fbbaf4/Assets/Resources/frozen.pb.bytes
--------------------------------------------------------------------------------
/Assets/Resources/frozen.pb.bytes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c84344846038649859b7d5e0b7a3ac0c
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4f704ae4b4f98ae41a0bce26658850c1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scenes/SampleScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 99c9720ab356a0642a771bea13969a05
3 | DefaultImporter:
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/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/Documentation/TextMesh Pro User Guide 2016.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abeisgoat/tf-jam/b47915c22168c7d9a39051ab78116bcf34fbbaf4/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf
--------------------------------------------------------------------------------
/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/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/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 |
--------------------------------------------------------------------------------
/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_PrefabParentObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: LiberationSans SDF - Drop Shadow
10 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
11 | m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON
12 | m_LightmapFlags: 5
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _Cube:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _FaceTex:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _MainTex:
34 | m_Texture: {fileID: 2846298, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _OutlineTex:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | m_Floats:
42 | - _Ambient: 0.5
43 | - _Bevel: 0.5
44 | - _BevelClamp: 0
45 | - _BevelOffset: 0
46 | - _BevelRoundness: 0
47 | - _BevelWidth: 0
48 | - _BumpFace: 0
49 | - _BumpOutline: 0
50 | - _ColorMask: 15
51 | - _Diffuse: 0.5
52 | - _DiffusePower: 1
53 | - _FaceDilate: 0.1
54 | - _FaceUVSpeedX: 0
55 | - _FaceUVSpeedY: 0
56 | - _GlowInner: 0.05
57 | - _GlowOffset: 0
58 | - _GlowOuter: 0.05
59 | - _GlowPower: 0.75
60 | - _GradientScale: 10
61 | - _LightAngle: 3.1416
62 | - _MaskSoftnessX: 0
63 | - _MaskSoftnessY: 0
64 | - _OutlineSoftness: 0
65 | - _OutlineUVSpeedX: 0
66 | - _OutlineUVSpeedY: 0
67 | - _OutlineWidth: 0.1
68 | - _PerspectiveFilter: 0.875
69 | - _Reflectivity: 10
70 | - _ScaleRatioA: 0.9
71 | - _ScaleRatioB: 0.73125
72 | - _ScaleRatioC: 0.64125
73 | - _ScaleX: 1
74 | - _ScaleY: 1
75 | - _ShaderFlags: 0
76 | - _SpecularPower: 2
77 | - _Stencil: 0
78 | - _StencilComp: 8
79 | - _StencilOp: 0
80 | - _StencilReadMask: 255
81 | - _StencilWriteMask: 255
82 | - _TextureHeight: 1024
83 | - _TextureWidth: 1024
84 | - _UnderlayDilate: 0
85 | - _UnderlayOffsetX: 0.5
86 | - _UnderlayOffsetY: -0.5
87 | - _UnderlaySoftness: 0.05
88 | - _VertexOffsetX: 0
89 | - _VertexOffsetY: 0
90 | - _WeightBold: 0.75
91 | - _WeightNormal: 0
92 | m_Colors:
93 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
94 | - _Color: {r: 1, g: 1, b: 1, a: 1}
95 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
96 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1}
97 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
98 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
99 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
100 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
101 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
102 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
103 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
104 |
--------------------------------------------------------------------------------
/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 - 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_PrefabParentObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: LiberationSans SDF - Outline
10 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
11 | m_ShaderKeywords: OUTLINE_ON
12 | m_LightmapFlags: 5
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: 3000
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _Cube:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _FaceTex:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _MainTex:
34 | m_Texture: {fileID: 2846298, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _OutlineTex:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | m_Floats:
42 | - _Ambient: 0.5
43 | - _Bevel: 0.5
44 | - _BevelClamp: 0
45 | - _BevelOffset: 0
46 | - _BevelRoundness: 0
47 | - _BevelWidth: 0
48 | - _BumpFace: 0
49 | - _BumpOutline: 0
50 | - _ColorMask: 15
51 | - _Diffuse: 0.5
52 | - _FaceDilate: 0.1
53 | - _FaceUVSpeedX: 0
54 | - _FaceUVSpeedY: 0
55 | - _GlowInner: 0.05
56 | - _GlowOffset: 0
57 | - _GlowOuter: 0.05
58 | - _GlowPower: 0.75
59 | - _GradientScale: 10
60 | - _LightAngle: 3.1416
61 | - _MaskSoftnessX: 0
62 | - _MaskSoftnessY: 0
63 | - _OutlineSoftness: 0
64 | - _OutlineUVSpeedX: 0
65 | - _OutlineUVSpeedY: 0
66 | - _OutlineWidth: 0.1
67 | - _PerspectiveFilter: 0.875
68 | - _Reflectivity: 10
69 | - _ScaleRatioA: 0.9
70 | - _ScaleRatioB: 0.73125
71 | - _ScaleRatioC: 0.64125
72 | - _ScaleX: 1
73 | - _ScaleY: 1
74 | - _ShaderFlags: 0
75 | - _SpecularPower: 2
76 | - _Stencil: 0
77 | - _StencilComp: 8
78 | - _StencilOp: 0
79 | - _StencilReadMask: 255
80 | - _StencilWriteMask: 255
81 | - _TextureHeight: 1024
82 | - _TextureWidth: 1024
83 | - _UnderlayDilate: 0
84 | - _UnderlayOffsetX: 0
85 | - _UnderlayOffsetY: 0
86 | - _UnderlaySoftness: 0
87 | - _VertexOffsetX: 0
88 | - _VertexOffsetY: 0
89 | - _WeightBold: 0.75
90 | - _WeightNormal: 0
91 | m_Colors:
92 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
93 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
94 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1}
95 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
96 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
97 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
98 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
99 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
100 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
101 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
102 |
--------------------------------------------------------------------------------
/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/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/LineBreaking Following Characters.txt:
--------------------------------------------------------------------------------
1 | )]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,.
--------------------------------------------------------------------------------
/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:
--------------------------------------------------------------------------------
1 | ([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇〉》」$⦆¥₩ #
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 99f836c9cb9345dba2e72c4a1f2d0695
3 | folderAsset: yes
4 | timeCreated: 1436068007
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader:
--------------------------------------------------------------------------------
1 | Shader "TextMeshPro/Mobile/Bitmap" {
2 |
3 | Properties {
4 | _MainTex ("Font Atlas", 2D) = "white" {}
5 | _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 | _ColorMask("Color Mask", Float) = 15
22 | }
23 |
24 | SubShader {
25 |
26 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
27 |
28 | Stencil
29 | {
30 | Ref[_Stencil]
31 | Comp[_StencilComp]
32 | Pass[_StencilOp]
33 | ReadMask[_StencilReadMask]
34 | WriteMask[_StencilWriteMask]
35 | }
36 |
37 |
38 | Lighting Off
39 | Cull Off
40 | ZTest [unity_GUIZTestMode]
41 | ZWrite Off
42 | Fog { Mode Off }
43 | Blend SrcAlpha OneMinusSrcAlpha
44 | ColorMask[_ColorMask]
45 |
46 | Pass {
47 | CGPROGRAM
48 | #pragma vertex vert
49 | #pragma fragment frag
50 | #pragma fragmentoption ARB_precision_hint_fastest
51 |
52 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
53 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
54 |
55 | #include "UnityCG.cginc"
56 |
57 | struct appdata_t {
58 | float4 vertex : POSITION;
59 | fixed4 color : COLOR;
60 | float2 texcoord0 : TEXCOORD0;
61 | float2 texcoord1 : TEXCOORD1;
62 | };
63 |
64 | struct v2f {
65 | float4 vertex : POSITION;
66 | fixed4 color : COLOR;
67 | float2 texcoord0 : TEXCOORD0;
68 | float4 mask : TEXCOORD2;
69 | };
70 |
71 | sampler2D _MainTex;
72 | fixed4 _Color;
73 | float _DiffusePower;
74 |
75 | uniform float _VertexOffsetX;
76 | uniform float _VertexOffsetY;
77 | uniform float4 _ClipRect;
78 | uniform float _MaskSoftnessX;
79 | uniform float _MaskSoftnessY;
80 |
81 | v2f vert (appdata_t v)
82 | {
83 | v2f o;
84 | float4 vert = v.vertex;
85 | vert.x += _VertexOffsetX;
86 | vert.y += _VertexOffsetY;
87 |
88 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
89 |
90 | o.vertex = UnityPixelSnap(UnityObjectToClipPos(vert));
91 | o.color = v.color;
92 | o.color *= _Color;
93 | o.color.rgb *= _DiffusePower;
94 | o.texcoord0 = v.texcoord0;
95 |
96 | float2 pixelSize = o.vertex.w;
97 | //pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
98 |
99 | // Clamp _ClipRect to 16bit.
100 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
101 | o.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
102 |
103 | return o;
104 | }
105 |
106 | fixed4 frag (v2f i) : COLOR
107 | {
108 | fixed4 c = fixed4(i.color.rgb, i.color.a * tex2D(_MainTex, i.texcoord0).a);
109 |
110 | // Alternative implementation to UnityGet2DClipping with support for softness.
111 | #if UNITY_UI_CLIP_RECT
112 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(i.mask.xy)) * i.mask.zw);
113 | c *= m.x * m.y;
114 | #endif
115 |
116 | #if UNITY_UI_ALPHACLIP
117 | clip(c.a - 0.001);
118 | #endif
119 |
120 | return c;
121 | }
122 | ENDCG
123 | }
124 | }
125 |
126 | SubShader {
127 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
128 | Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off }
129 | Blend SrcAlpha OneMinusSrcAlpha
130 | BindChannels {
131 | Bind "Color", color
132 | Bind "Vertex", vertex
133 | Bind "TexCoord", texcoord0
134 | }
135 | Pass {
136 | SetTexture [_MainTex] {
137 | constantColor [_Color] combine constant * primary, constant * texture
138 | }
139 | }
140 | }
141 |
142 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
143 | }
144 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1e3b057af24249748ff873be7fafee47
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader:
--------------------------------------------------------------------------------
1 | Shader "TextMeshPro/Bitmap" {
2 |
3 | Properties {
4 | _MainTex ("Font Atlas", 2D) = "white" {}
5 | _FaceTex ("Font Texture", 2D) = "white" {}
6 | _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 | _ColorMask("Color Mask", Float) = 15
22 | }
23 |
24 | SubShader{
25 |
26 | Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
27 |
28 | Stencil
29 | {
30 | Ref[_Stencil]
31 | Comp[_StencilComp]
32 | Pass[_StencilOp]
33 | ReadMask[_StencilReadMask]
34 | WriteMask[_StencilWriteMask]
35 | }
36 |
37 |
38 | Lighting Off
39 | Cull [_CullMode]
40 | ZTest [unity_GUIZTestMode]
41 | ZWrite Off
42 | Fog { Mode Off }
43 | Blend SrcAlpha OneMinusSrcAlpha
44 | ColorMask[_ColorMask]
45 |
46 | Pass {
47 | CGPROGRAM
48 | #pragma vertex vert
49 | #pragma fragment frag
50 |
51 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
52 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
53 |
54 | #include "UnityCG.cginc"
55 |
56 | struct appdata_t {
57 | float4 vertex : POSITION;
58 | fixed4 color : COLOR;
59 | float2 texcoord0 : TEXCOORD0;
60 | float2 texcoord1 : TEXCOORD1;
61 | };
62 |
63 | struct v2f {
64 | float4 vertex : POSITION;
65 | fixed4 color : COLOR;
66 | float2 texcoord0 : TEXCOORD0;
67 | float2 texcoord1 : TEXCOORD1;
68 | float4 mask : TEXCOORD2;
69 | };
70 |
71 | uniform sampler2D _MainTex;
72 | uniform sampler2D _FaceTex;
73 | uniform float4 _FaceTex_ST;
74 | uniform fixed4 _FaceColor;
75 |
76 | uniform float _VertexOffsetX;
77 | uniform float _VertexOffsetY;
78 | uniform float4 _ClipRect;
79 | uniform float _MaskSoftnessX;
80 | uniform float _MaskSoftnessY;
81 |
82 | float2 UnpackUV(float uv)
83 | {
84 | float2 output;
85 | output.x = floor(uv / 4096);
86 | output.y = uv - 4096 * output.x;
87 |
88 | return output * 0.001953125;
89 | }
90 |
91 | v2f vert (appdata_t i)
92 | {
93 | float4 vert = i.vertex;
94 | vert.x += _VertexOffsetX;
95 | vert.y += _VertexOffsetY;
96 |
97 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
98 |
99 | float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert));
100 |
101 | fixed4 faceColor = i.color;
102 | faceColor *= _FaceColor;
103 |
104 | v2f o;
105 | o.vertex = vPosition;
106 | o.color = faceColor;
107 | o.texcoord0 = i.texcoord0;
108 | o.texcoord1 = TRANSFORM_TEX(UnpackUV(i.texcoord1), _FaceTex);
109 | float2 pixelSize = vPosition.w;
110 | pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
111 |
112 | // Clamp _ClipRect to 16bit.
113 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
114 | o.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
115 |
116 | return o;
117 | }
118 |
119 | fixed4 frag (v2f i) : COLOR
120 | {
121 | //fixed4 c = tex2D(_MainTex, i.texcoord0) * tex2D(_FaceTex, i.texcoord1) * i.color;
122 |
123 | fixed4 c = tex2D(_MainTex, i.texcoord0);
124 | c = fixed4 (tex2D(_FaceTex, i.texcoord1).rgb * i.color.rgb, i.color.a * c.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(i.mask.xy)) * i.mask.zw);
129 | c *= m.x * m.y;
130 | #endif
131 |
132 | #if UNITY_UI_ALPHACLIP
133 | clip(c.a - 0.001);
134 | #endif
135 |
136 | return c;
137 | }
138 | ENDCG
139 | }
140 | }
141 |
142 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
143 | }
144 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 128e987d567d4e2c824d754223b3f3b0
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader:
--------------------------------------------------------------------------------
1 | Shader "TextMeshPro/Distance Field Overlay" {
2 |
3 | Properties {
4 | _FaceTex ("Face 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 | _FaceColor ("Face Color", Color) = (1,1,1,1)
8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
9 |
10 | _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 | _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
24 | _SpecularColor ("Specular", Color) = (1,1,1,1)
25 | _SpecularPower ("Specular", Range(0,4)) = 2.0
26 | _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10
27 | _Diffuse ("Diffuse", Range(0,1)) = 0.5
28 | _Ambient ("Ambient", Range(1,0)) = 0.5
29 |
30 | _BumpMap ("Normal map", 2D) = "bump" {}
31 | _BumpOutline ("Bump Outline", Range(0,1)) = 0
32 | _BumpFace ("Bump Face", Range(0,1)) = 0
33 |
34 | _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1)
35 | _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
36 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
37 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
38 |
39 |
40 | _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
41 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
42 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
43 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
44 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0
45 |
46 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5)
47 | _GlowOffset ("Offset", Range(-1,1)) = 0
48 | _GlowInner ("Inner", Range(0,1)) = 0.05
49 | _GlowOuter ("Outer", Range(0,1)) = 0.05
50 | _GlowPower ("Falloff", Range(1, 0)) = 0.75
51 |
52 | _WeightNormal ("Weight Normal", float) = 0
53 | _WeightBold ("Weight Bold", float) = 0.5
54 |
55 | _ShaderFlags ("Flags", float) = 0
56 | _ScaleRatioA ("Scale RatioA", float) = 1
57 | _ScaleRatioB ("Scale RatioB", float) = 1
58 | _ScaleRatioC ("Scale RatioC", float) = 1
59 |
60 | _MainTex ("Font Atlas", 2D) = "white" {}
61 | _TextureWidth ("Texture Width", float) = 512
62 | _TextureHeight ("Texture Height", float) = 512
63 | _GradientScale ("Gradient Scale", float) = 5.0
64 | _ScaleX ("Scale X", float) = 1.0
65 | _ScaleY ("Scale Y", float) = 1.0
66 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
67 |
68 | _VertexOffsetX ("Vertex OffsetX", float) = 0
69 | _VertexOffsetY ("Vertex OffsetY", float) = 0
70 |
71 | _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
72 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
73 | _MaskSoftnessX ("Mask SoftnessX", float) = 0
74 | _MaskSoftnessY ("Mask SoftnessY", float) = 0
75 |
76 | _StencilComp ("Stencil Comparison", Float) = 8
77 | _Stencil ("Stencil ID", Float) = 0
78 | _StencilOp ("Stencil Operation", Float) = 0
79 | _StencilWriteMask ("Stencil Write Mask", Float) = 255
80 | _StencilReadMask ("Stencil Read Mask", Float) = 255
81 |
82 | _ColorMask ("Color Mask", Float) = 15
83 | }
84 |
85 | SubShader {
86 |
87 | Tags
88 | {
89 | "Queue"="Overlay"
90 | "IgnoreProjector"="True"
91 | "RenderType"="Transparent"
92 | }
93 |
94 | Stencil
95 | {
96 | Ref [_Stencil]
97 | Comp [_StencilComp]
98 | Pass [_StencilOp]
99 | ReadMask [_StencilReadMask]
100 | WriteMask [_StencilWriteMask]
101 | }
102 |
103 | Cull [_CullMode]
104 | ZWrite Off
105 | Lighting Off
106 | Fog { Mode Off }
107 | ZTest Always
108 | Blend One OneMinusSrcAlpha
109 | ColorMask [_ColorMask]
110 |
111 | Pass {
112 | CGPROGRAM
113 | #pragma target 3.0
114 | #pragma vertex VertShader
115 | #pragma fragment PixShader
116 | #pragma shader_feature __ BEVEL_ON
117 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
118 | #pragma shader_feature __ GLOW_ON
119 | #pragma shader_feature __ MASK_OFF
120 |
121 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
122 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
123 |
124 |
125 | #include "UnityCG.cginc"
126 | #include "UnityUI.cginc"
127 | #include "TMPro_Properties.cginc"
128 | #include "TMPro.cginc"
129 |
130 | struct vertex_t {
131 | float4 position : POSITION;
132 | float3 normal : NORMAL;
133 | fixed4 color : COLOR;
134 | float2 texcoord0 : TEXCOORD0;
135 | float2 texcoord1 : TEXCOORD1;
136 | };
137 |
138 |
139 | struct pixel_t {
140 | float4 position : SV_POSITION;
141 | fixed4 color : COLOR;
142 | float2 atlas : TEXCOORD0; // Atlas
143 | float4 param : TEXCOORD1; // alphaClip, scale, bias, weight
144 | float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw)
145 | float3 viewDir : TEXCOORD3;
146 |
147 | #if (UNDERLAY_ON || UNDERLAY_INNER)
148 | float4 texcoord2 : TEXCOORD4; // u,v, scale, bias
149 | fixed4 underlayColor : COLOR1;
150 | #endif
151 | float4 textures : TEXCOORD5;
152 | };
153 |
154 | // Used by Unity internally to handle Texture Tiling and Offset.
155 | float4 _FaceTex_ST;
156 | float4 _OutlineTex_ST;
157 |
158 | pixel_t VertShader(vertex_t input)
159 | {
160 | float bold = step(input.texcoord1.y, 0);
161 |
162 | float4 vert = input.position;
163 | vert.x += _VertexOffsetX;
164 | vert.y += _VertexOffsetY;
165 | float4 vPosition = UnityObjectToClipPos(vert);
166 |
167 | float2 pixelSize = vPosition.w;
168 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
169 | float scale = rsqrt(dot(pixelSize, pixelSize));
170 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5;
171 | if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
172 |
173 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
174 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
175 |
176 | float bias =(.5 - weight) + (.5 / scale);
177 |
178 | float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA);
179 |
180 | #if GLOW_ON
181 | alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
182 | #endif
183 |
184 | alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight;
185 |
186 | #if (UNDERLAY_ON || UNDERLAY_INNER)
187 | float4 underlayColor = _UnderlayColor;
188 | underlayColor.rgb *= underlayColor.a;
189 |
190 | float bScale = scale;
191 | bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
192 | float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
193 |
194 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
195 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
196 | float2 bOffset = float2(x, y);
197 | #endif
198 |
199 | // Generate UV for the Masking Texture
200 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
201 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
202 |
203 | // Support for texture tiling and offset
204 | float2 textureUV = UnpackUV(input.texcoord1.x);
205 | float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
206 | float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
207 |
208 | pixel_t output = {
209 | vPosition,
210 | input.color,
211 | input.texcoord0,
212 | float4(alphaClip, scale, bias, weight),
213 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
214 | mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz),
215 | #if (UNDERLAY_ON || UNDERLAY_INNER)
216 | float4(input.texcoord0 + bOffset, bScale, bBias),
217 | underlayColor,
218 | #endif
219 | float4(faceUV, outlineUV),
220 | };
221 |
222 | return output;
223 | }
224 |
225 |
226 | fixed4 PixShader(pixel_t input) : SV_Target
227 | {
228 | float c = tex2D(_MainTex, input.atlas).a;
229 |
230 | #ifndef UNDERLAY_ON
231 | clip(c - input.param.x);
232 | #endif
233 |
234 | float scale = input.param.y;
235 | float bias = input.param.z;
236 | float weight = input.param.w;
237 | float sd = (bias - c) * scale;
238 |
239 | float outline = (_OutlineWidth * _ScaleRatioA) * scale;
240 | float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
241 |
242 | half4 faceColor = _FaceColor;
243 | half4 outlineColor = _OutlineColor;
244 |
245 | faceColor.rgb *= input.color.rgb;
246 |
247 | faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
248 | outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
249 |
250 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
251 |
252 | #if BEVEL_ON
253 | float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
254 | float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
255 |
256 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
257 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
258 | n = normalize(n- bump);
259 |
260 | float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
261 |
262 | float3 col = GetSpecular(n, light);
263 | faceColor.rgb += col*faceColor.a;
264 | faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
265 | faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
266 |
267 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
268 | faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
269 | #endif
270 |
271 | #if UNDERLAY_ON
272 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
273 | faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
274 | #endif
275 |
276 | #if UNDERLAY_INNER
277 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
278 | faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
279 | #endif
280 |
281 | #if GLOW_ON
282 | float4 glowColor = GetGlowColor(sd, scale);
283 | faceColor.rgb += glowColor.rgb * glowColor.a;
284 | #endif
285 |
286 | // Alternative implementation to UnityGet2DClipping with support for softness.
287 | #if UNITY_UI_CLIP_RECT
288 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
289 | faceColor *= m.x * m.y;
290 | #endif
291 |
292 | #if UNITY_UI_ALPHACLIP
293 | clip(faceColor.a - 0.001);
294 | #endif
295 |
296 | return faceColor * input.color.a;
297 | }
298 |
299 | ENDCG
300 | }
301 | }
302 |
303 | Fallback "TextMeshPro/Mobile/Distance Field"
304 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
305 | }
306 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dd89cf5b9246416f84610a006f916af7
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _FaceColor ("Face Color", Color) = (1,1,1,1)
10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
11 |
12 | _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 | _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 |
38 | _VertexOffsetX ("Vertex OffsetX", float) = 0
39 | _VertexOffsetY ("Vertex OffsetY", float) = 0
40 |
41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0
43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0
44 | _MaskTex ("Mask Texture", 2D) = "white" {}
45 | _MaskInverse ("Inverse", float) = 0
46 | _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1)
47 | _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01
48 | _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5
49 |
50 | _StencilComp ("Stencil Comparison", Float) = 8
51 | _Stencil ("Stencil ID", Float) = 0
52 | _StencilOp ("Stencil Operation", Float) = 0
53 | _StencilWriteMask ("Stencil Write Mask", Float) = 255
54 | _StencilReadMask ("Stencil Read Mask", Float) = 255
55 |
56 | _ColorMask ("Color Mask", Float) = 15
57 | }
58 |
59 | SubShader {
60 | Tags
61 | {
62 | "Queue"="Transparent"
63 | "IgnoreProjector"="True"
64 | "RenderType"="Transparent"
65 | }
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 | //#pragma shader_feature __ ALPHA_MASK_ON
92 |
93 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
94 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
95 |
96 | #include "UnityCG.cginc"
97 | #include "UnityUI.cginc"
98 | #include "TMPro_Properties.cginc"
99 |
100 | struct vertex_t {
101 | float4 vertex : POSITION;
102 | float3 normal : NORMAL;
103 | fixed4 color : COLOR;
104 | float2 texcoord0 : TEXCOORD0;
105 | float2 texcoord1 : TEXCOORD1;
106 | };
107 |
108 | struct pixel_t {
109 | float4 vertex : SV_POSITION;
110 | fixed4 faceColor : COLOR;
111 | fixed4 outlineColor : COLOR1;
112 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
113 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
114 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
115 | #if (UNDERLAY_ON | UNDERLAY_INNER)
116 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
117 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
118 | #endif
119 | };
120 |
121 | float _MaskWipeControl;
122 | float _MaskEdgeSoftness;
123 | fixed4 _MaskEdgeColor;
124 | bool _MaskInverse;
125 |
126 | pixel_t VertShader(vertex_t input)
127 | {
128 | float bold = step(input.texcoord1.y, 0);
129 |
130 | float4 vert = input.vertex;
131 | vert.x += _VertexOffsetX;
132 | vert.y += _VertexOffsetY;
133 | float4 vPosition = UnityObjectToClipPos(vert);
134 |
135 | float2 pixelSize = vPosition.w;
136 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
137 |
138 | float scale = rsqrt(dot(pixelSize, pixelSize));
139 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5;
140 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
141 |
142 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
143 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
144 |
145 | float layerScale = scale;
146 |
147 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
148 | float bias = (0.5 - weight) * scale - 0.5;
149 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
150 |
151 | float opacity = input.color.a;
152 | #if (UNDERLAY_ON | UNDERLAY_INNER)
153 | opacity = 1.0;
154 | #endif
155 |
156 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
157 | faceColor.rgb *= faceColor.a;
158 |
159 | fixed4 outlineColor = _OutlineColor;
160 | outlineColor.a *= opacity;
161 | outlineColor.rgb *= outlineColor.a;
162 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
163 |
164 | #if (UNDERLAY_ON | UNDERLAY_INNER)
165 |
166 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
167 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
168 |
169 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
170 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
171 | float2 layerOffset = float2(x, y);
172 | #endif
173 |
174 | // Generate UV for the Masking Texture
175 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
176 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
177 |
178 | // Structure for pixel shader
179 | pixel_t output = {
180 | vPosition,
181 | faceColor,
182 | outlineColor,
183 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y),
184 | half4(scale, bias - outline, bias + outline, bias),
185 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
186 | #if (UNDERLAY_ON | UNDERLAY_INNER)
187 | float4(input.texcoord0 + layerOffset, input.color.a, 0),
188 | half2(layerScale, layerBias),
189 | #endif
190 | };
191 |
192 | return output;
193 | }
194 |
195 |
196 | // PIXEL SHADER
197 | fixed4 PixShader(pixel_t input) : SV_Target
198 | {
199 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
200 | half4 c = input.faceColor * saturate(d - input.param.w);
201 |
202 | #ifdef OUTLINE_ON
203 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
204 | c *= saturate(d - input.param.y);
205 | #endif
206 |
207 | #if UNDERLAY_ON
208 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
209 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
210 | #endif
211 |
212 | #if UNDERLAY_INNER
213 | half sd = saturate(d - input.param.z);
214 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
215 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
216 | #endif
217 |
218 | // Alternative implementation to UnityGet2DClipping with support for softness.
219 | #if UNITY_UI_CLIP_RECT
220 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
221 | c *= m.x * m.y;
222 | #endif
223 |
224 | //#if ALPHA_MASK_ON
225 | float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a);
226 | float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl;
227 | a = saturate(t / _MaskEdgeSoftness);
228 | c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a);
229 | c *= a;
230 | //#endif
231 |
232 | #if (UNDERLAY_ON | UNDERLAY_INNER)
233 | c *= input.texcoord1.z;
234 | #endif
235 |
236 | return c;
237 | }
238 | ENDCG
239 | }
240 | }
241 |
242 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
243 | }
244 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bc1ede39bf3643ee8e493720e4259791
3 | timeCreated: 1463704911
4 | licenseType: Pro
5 | ShaderImporter:
6 | defaultTextures: []
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _FaceColor ("Face Color", Color) = (1,1,1,1)
10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
11 |
12 | _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 | _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 |
38 | _VertexOffsetX ("Vertex OffsetX", float) = 0
39 | _VertexOffsetY ("Vertex OffsetY", float) = 0
40 |
41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0
43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0
44 |
45 | _StencilComp ("Stencil Comparison", Float) = 8
46 | _Stencil ("Stencil ID", Float) = 0
47 | _StencilOp ("Stencil Operation", Float) = 0
48 | _StencilWriteMask ("Stencil Write Mask", Float) = 255
49 | _StencilReadMask ("Stencil Read Mask", Float) = 255
50 |
51 | _ColorMask ("Color Mask", Float) = 15
52 | }
53 |
54 | SubShader {
55 | Tags
56 | {
57 | "Queue"="Overlay"
58 | "IgnoreProjector"="True"
59 | "RenderType"="Transparent"
60 | }
61 |
62 |
63 | Stencil
64 | {
65 | Ref [_Stencil]
66 | Comp [_StencilComp]
67 | Pass [_StencilOp]
68 | ReadMask [_StencilReadMask]
69 | WriteMask [_StencilWriteMask]
70 | }
71 |
72 | Cull [_CullMode]
73 | ZWrite Off
74 | Lighting Off
75 | Fog { Mode Off }
76 | ZTest Always
77 | Blend One OneMinusSrcAlpha
78 | ColorMask [_ColorMask]
79 |
80 | Pass {
81 | CGPROGRAM
82 | #pragma vertex VertShader
83 | #pragma fragment PixShader
84 | #pragma shader_feature __ OUTLINE_ON
85 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
86 |
87 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
88 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
89 |
90 | #include "UnityCG.cginc"
91 | #include "UnityUI.cginc"
92 | #include "TMPro_Properties.cginc"
93 |
94 | struct vertex_t {
95 | float4 vertex : POSITION;
96 | float3 normal : NORMAL;
97 | fixed4 color : COLOR;
98 | float2 texcoord0 : TEXCOORD0;
99 | float2 texcoord1 : TEXCOORD1;
100 | };
101 |
102 | struct pixel_t {
103 | float4 vertex : SV_POSITION;
104 | fixed4 faceColor : COLOR;
105 | fixed4 outlineColor : COLOR1;
106 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
107 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
108 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
109 | #if (UNDERLAY_ON | UNDERLAY_INNER)
110 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
111 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
112 | #endif
113 | };
114 |
115 |
116 | pixel_t VertShader(vertex_t input)
117 | {
118 | float bold = step(input.texcoord1.y, 0);
119 |
120 | float4 vert = input.vertex;
121 | vert.x += _VertexOffsetX;
122 | vert.y += _VertexOffsetY;
123 | float4 vPosition = UnityObjectToClipPos(vert);
124 |
125 | float2 pixelSize = vPosition.w;
126 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
127 |
128 | float scale = rsqrt(dot(pixelSize, pixelSize));
129 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5;
130 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
131 |
132 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
133 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
134 |
135 | float layerScale = scale;
136 |
137 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
138 | float bias = (0.5 - weight) * scale - 0.5;
139 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
140 |
141 | float opacity = input.color.a;
142 | #if (UNDERLAY_ON | UNDERLAY_INNER)
143 | opacity = 1.0;
144 | #endif
145 |
146 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
147 | faceColor.rgb *= faceColor.a;
148 |
149 | fixed4 outlineColor = _OutlineColor;
150 | outlineColor.a *= opacity;
151 | outlineColor.rgb *= outlineColor.a;
152 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
153 |
154 | #if (UNDERLAY_ON | UNDERLAY_INNER)
155 |
156 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
157 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
158 |
159 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
160 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
161 | float2 layerOffset = float2(x, y);
162 | #endif
163 |
164 | // Generate UV for the Masking Texture
165 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
166 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
167 |
168 | // Structure for pixel shader
169 | pixel_t output = {
170 | vPosition,
171 | faceColor,
172 | outlineColor,
173 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y),
174 | half4(scale, bias - outline, bias + outline, bias),
175 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
176 | #if (UNDERLAY_ON | UNDERLAY_INNER)
177 | float4(input.texcoord0 + layerOffset, input.color.a, 0),
178 | half2(layerScale, layerBias),
179 | #endif
180 | };
181 |
182 | return output;
183 | }
184 |
185 |
186 | // PIXEL SHADER
187 | fixed4 PixShader(pixel_t input) : SV_Target
188 | {
189 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
190 | half4 c = input.faceColor * saturate(d - input.param.w);
191 |
192 | #ifdef OUTLINE_ON
193 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
194 | c *= saturate(d - input.param.y);
195 | #endif
196 |
197 | #if UNDERLAY_ON
198 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
199 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
200 | #endif
201 |
202 | #if UNDERLAY_INNER
203 | half sd = saturate(d - input.param.z);
204 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
205 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
206 | #endif
207 |
208 | // Alternative implementation to UnityGet2DClipping with support for softness.
209 | #if UNITY_UI_CLIP_RECT
210 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
211 | c *= m.x * m.y;
212 | #endif
213 |
214 | #if UNITY_UI_ALPHACLIP
215 | clip(c.a - 0.001);
216 | #endif
217 |
218 | #if (UNDERLAY_ON | UNDERLAY_INNER)
219 | c *= input.texcoord1.z;
220 | #endif
221 |
222 | return c;
223 | }
224 | ENDCG
225 | }
226 | }
227 |
228 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
229 | }
230 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a02a7d8c237544f1962732b55a9aebf1
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _FaceColor ("Face Color", Color) = (1,1,1,1)
10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
11 |
12 | _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 | _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 |
38 | _VertexOffsetX ("Vertex OffsetX", float) = 0
39 | _VertexOffsetY ("Vertex OffsetY", float) = 0
40 |
41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0
43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0
44 |
45 | _StencilComp ("Stencil Comparison", Float) = 8
46 | _Stencil ("Stencil ID", Float) = 0
47 | _StencilOp ("Stencil Operation", Float) = 0
48 | _StencilWriteMask ("Stencil Write Mask", Float) = 255
49 | _StencilReadMask ("Stencil Read Mask", Float) = 255
50 |
51 | _ColorMask ("Color Mask", Float) = 15
52 | }
53 |
54 | SubShader {
55 | Tags
56 | {
57 | "Queue"="Transparent"
58 | "IgnoreProjector"="True"
59 | "RenderType"="Transparent"
60 | }
61 |
62 |
63 | Stencil
64 | {
65 | Ref [_Stencil]
66 | Comp [_StencilComp]
67 | Pass [_StencilOp]
68 | ReadMask [_StencilReadMask]
69 | WriteMask [_StencilWriteMask]
70 | }
71 |
72 | Cull [_CullMode]
73 | ZWrite Off
74 | Lighting Off
75 | Fog { Mode Off }
76 | ZTest [unity_GUIZTestMode]
77 | Blend One OneMinusSrcAlpha
78 | ColorMask [_ColorMask]
79 |
80 | Pass {
81 | CGPROGRAM
82 | #pragma vertex VertShader
83 | #pragma fragment PixShader
84 | #pragma shader_feature __ OUTLINE_ON
85 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
86 |
87 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
88 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
89 |
90 | #include "UnityCG.cginc"
91 | #include "UnityUI.cginc"
92 | #include "TMPro_Properties.cginc"
93 |
94 | struct vertex_t {
95 | float4 vertex : POSITION;
96 | float3 normal : NORMAL;
97 | fixed4 color : COLOR;
98 | float2 texcoord0 : TEXCOORD0;
99 | float2 texcoord1 : TEXCOORD1;
100 | };
101 |
102 | struct pixel_t {
103 | float4 vertex : SV_POSITION;
104 | fixed4 faceColor : COLOR;
105 | fixed4 outlineColor : COLOR1;
106 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV
107 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w)
108 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw)
109 | #if (UNDERLAY_ON | UNDERLAY_INNER)
110 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved
111 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y)
112 | #endif
113 | };
114 |
115 |
116 | pixel_t VertShader(vertex_t input)
117 | {
118 | float bold = step(input.texcoord1.y, 0);
119 |
120 | float4 vert = input.vertex;
121 | vert.x += _VertexOffsetX;
122 | vert.y += _VertexOffsetY;
123 | float4 vPosition = UnityObjectToClipPos(vert);
124 |
125 | float2 pixelSize = vPosition.w;
126 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
127 |
128 | float scale = rsqrt(dot(pixelSize, pixelSize));
129 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5;
130 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
131 |
132 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
133 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
134 |
135 | float layerScale = scale;
136 |
137 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
138 | float bias = (0.5 - weight) * scale - 0.5;
139 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
140 |
141 | float opacity = input.color.a;
142 | #if (UNDERLAY_ON | UNDERLAY_INNER)
143 | opacity = 1.0;
144 | #endif
145 |
146 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
147 | faceColor.rgb *= faceColor.a;
148 |
149 | fixed4 outlineColor = _OutlineColor;
150 | outlineColor.a *= opacity;
151 | outlineColor.rgb *= outlineColor.a;
152 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
153 |
154 | #if (UNDERLAY_ON | UNDERLAY_INNER)
155 |
156 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
157 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
158 |
159 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
160 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
161 | float2 layerOffset = float2(x, y);
162 | #endif
163 |
164 | // Generate UV for the Masking Texture
165 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
166 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
167 |
168 | // Structure for pixel shader
169 | pixel_t output = {
170 | vPosition,
171 | faceColor,
172 | outlineColor,
173 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y),
174 | half4(scale, bias - outline, bias + outline, bias),
175 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
176 | #if (UNDERLAY_ON | UNDERLAY_INNER)
177 | float4(input.texcoord0 + layerOffset, input.color.a, 0),
178 | half2(layerScale, layerBias),
179 | #endif
180 | };
181 |
182 | return output;
183 | }
184 |
185 |
186 | // PIXEL SHADER
187 | fixed4 PixShader(pixel_t input) : SV_Target
188 | {
189 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
190 | half4 c = input.faceColor * saturate(d - input.param.w);
191 |
192 | #ifdef OUTLINE_ON
193 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
194 | c *= saturate(d - input.param.y);
195 | #endif
196 |
197 | #if UNDERLAY_ON
198 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
199 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
200 | #endif
201 |
202 | #if UNDERLAY_INNER
203 | half sd = saturate(d - input.param.z);
204 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
205 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
206 | #endif
207 |
208 | // Alternative implementation to UnityGet2DClipping with support for softness.
209 | #if UNITY_UI_CLIP_RECT
210 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
211 | c *= m.x * m.y;
212 | #endif
213 |
214 | #if (UNDERLAY_ON | UNDERLAY_INNER)
215 | c *= input.texcoord1.z;
216 | #endif
217 |
218 | #if UNITY_UI_ALPHACLIP
219 | clip(c.a - 0.001);
220 | #endif
221 |
222 | return c;
223 | }
224 | ENDCG
225 | }
226 | }
227 |
228 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
229 | }
230 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fe393ace9b354375a9cb14cdbbc28be4
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _FaceColor ("Fill Color", Color) = (1,1,1,1)
11 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
12 |
13 | _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 | _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 |
41 | _VertexOffsetX ("Vertex OffsetX", float) = 0
42 | _VertexOffsetY ("Vertex OffsetY", float) = 0
43 |
44 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0)
45 | //_MaskSoftness ("Mask Softness", float) = 0
46 | }
47 |
48 | SubShader {
49 |
50 | Tags {
51 | "Queue"="Transparent"
52 | "IgnoreProjector"="True"
53 | "RenderType"="Transparent"
54 | }
55 |
56 | LOD 300
57 | Cull [_CullMode]
58 |
59 | CGPROGRAM
60 | #pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap
61 | #pragma target 3.0
62 | #pragma shader_feature __ GLOW_ON
63 |
64 | #include "TMPro_Properties.cginc"
65 | #include "TMPro.cginc"
66 |
67 | half _FaceShininess;
68 | half _OutlineShininess;
69 |
70 | struct Input
71 | {
72 | fixed4 color : COLOR;
73 | float2 uv_MainTex;
74 | float2 uv2_FaceTex;
75 | float2 uv2_OutlineTex;
76 | float2 param; // Weight, Scale
77 | float3 viewDirEnv;
78 | };
79 |
80 | #include "TMPro_Surface.cginc"
81 |
82 | ENDCG
83 |
84 | // Pass to render object as a shadow caster
85 | Pass
86 | {
87 | Name "Caster"
88 | Tags { "LightMode" = "ShadowCaster" }
89 | Offset 1, 1
90 |
91 | Fog {Mode Off}
92 | ZWrite On ZTest LEqual Cull Off
93 |
94 | CGPROGRAM
95 | #pragma vertex vert
96 | #pragma fragment frag
97 | #pragma multi_compile_shadowcaster
98 | #include "UnityCG.cginc"
99 |
100 | struct v2f {
101 | V2F_SHADOW_CASTER;
102 | float2 uv : TEXCOORD1;
103 | float2 uv2 : TEXCOORD3;
104 | float alphaClip : TEXCOORD2;
105 | };
106 |
107 | uniform float4 _MainTex_ST;
108 | uniform float4 _OutlineTex_ST;
109 | float _OutlineWidth;
110 | float _FaceDilate;
111 | float _ScaleRatioA;
112 |
113 | v2f vert( appdata_base v )
114 | {
115 | v2f o;
116 | TRANSFER_SHADOW_CASTER(o)
117 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
118 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
119 | o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
120 | return o;
121 | }
122 |
123 | uniform sampler2D _MainTex;
124 |
125 | float4 frag(v2f i) : COLOR
126 | {
127 | fixed4 texcol = tex2D(_MainTex, i.uv).a;
128 | clip(texcol.a - i.alphaClip);
129 | SHADOW_CASTER_FRAGMENT(i)
130 | }
131 | ENDCG
132 | }
133 | }
134 |
135 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
136 | }
137 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 85187c2149c549c5b33f0cdb02836b17
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _FaceColor ("Fill Color", Color) = (1,1,1,1)
8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
9 |
10 | _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 | _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 | _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 |
59 | _VertexOffsetX ("Vertex OffsetX", float) = 0
60 | _VertexOffsetY ("Vertex OffsetY", float) = 0
61 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0)
62 | //_MaskSoftness ("Mask Softness", float) = 0
63 | }
64 |
65 | SubShader {
66 |
67 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
68 |
69 | LOD 300
70 | Cull [_CullMode]
71 |
72 | CGPROGRAM
73 | #pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap
74 | #pragma target 3.0
75 | #pragma shader_feature __ GLOW_ON
76 | #pragma glsl
77 |
78 | #include "TMPro_Properties.cginc"
79 | #include "TMPro.cginc"
80 |
81 | half _FaceShininess;
82 | half _OutlineShininess;
83 |
84 | struct Input
85 | {
86 | fixed4 color : COLOR;
87 | float2 uv_MainTex;
88 | float2 uv2_FaceTex;
89 | float2 uv2_OutlineTex;
90 | float2 param; // Weight, Scale
91 | float3 viewDirEnv;
92 | };
93 |
94 |
95 | #define BEVEL_ON 1
96 | #include "TMPro_Surface.cginc"
97 |
98 | ENDCG
99 |
100 | // Pass to render object as a shadow caster
101 | Pass
102 | {
103 | Name "Caster"
104 | Tags { "LightMode" = "ShadowCaster" }
105 | Offset 1, 1
106 |
107 | Fog {Mode Off}
108 | ZWrite On
109 | ZTest LEqual
110 | Cull Off
111 |
112 | CGPROGRAM
113 | #pragma vertex vert
114 | #pragma fragment frag
115 | #pragma multi_compile_shadowcaster
116 | #include "UnityCG.cginc"
117 |
118 | struct v2f {
119 | V2F_SHADOW_CASTER;
120 | float2 uv : TEXCOORD1;
121 | float2 uv2 : TEXCOORD3;
122 | float alphaClip : TEXCOORD2;
123 | };
124 |
125 | uniform float4 _MainTex_ST;
126 | uniform float4 _OutlineTex_ST;
127 | float _OutlineWidth;
128 | float _FaceDilate;
129 | float _ScaleRatioA;
130 |
131 | v2f vert( appdata_base v )
132 | {
133 | v2f o;
134 | TRANSFER_SHADOW_CASTER(o)
135 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
136 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
137 | o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
138 | return o;
139 | }
140 |
141 | uniform sampler2D _MainTex;
142 |
143 | float4 frag(v2f i) : COLOR
144 | {
145 | fixed4 texcol = tex2D(_MainTex, i.uv).a;
146 | clip(texcol.a - i.alphaClip);
147 | SHADOW_CASTER_FRAGMENT(i)
148 | }
149 | ENDCG
150 | }
151 | }
152 |
153 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
154 | }
155 |
156 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f7ada0af4f174f0694ca6a487b8f543d
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader:
--------------------------------------------------------------------------------
1 | Shader "TextMeshPro/Distance Field" {
2 |
3 | Properties {
4 | _FaceTex ("Face 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 | _FaceColor ("Face Color", Color) = (1,1,1,1)
8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0
9 |
10 | _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(-1,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 | _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
24 | _SpecularColor ("Specular", Color) = (1,1,1,1)
25 | _SpecularPower ("Specular", Range(0,4)) = 2.0
26 | _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10
27 | _Diffuse ("Diffuse", Range(0,1)) = 0.5
28 | _Ambient ("Ambient", Range(1,0)) = 0.5
29 |
30 | _BumpMap ("Normal map", 2D) = "bump" {}
31 | _BumpOutline ("Bump Outline", Range(0,1)) = 0
32 | _BumpFace ("Bump Face", Range(0,1)) = 0
33 |
34 | _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1)
35 | _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
36 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
37 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0)
38 |
39 |
40 | _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
41 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0
42 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0
43 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0
44 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0
45 |
46 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5)
47 | _GlowOffset ("Offset", Range(-1,1)) = 0
48 | _GlowInner ("Inner", Range(0,1)) = 0.05
49 | _GlowOuter ("Outer", Range(0,1)) = 0.05
50 | _GlowPower ("Falloff", Range(1, 0)) = 0.75
51 |
52 | _WeightNormal ("Weight Normal", float) = 0
53 | _WeightBold ("Weight Bold", float) = 0.5
54 |
55 | _ShaderFlags ("Flags", float) = 0
56 | _ScaleRatioA ("Scale RatioA", float) = 1
57 | _ScaleRatioB ("Scale RatioB", float) = 1
58 | _ScaleRatioC ("Scale RatioC", float) = 1
59 |
60 | _MainTex ("Font Atlas", 2D) = "white" {}
61 | _TextureWidth ("Texture Width", float) = 512
62 | _TextureHeight ("Texture Height", float) = 512
63 | _GradientScale ("Gradient Scale", float) = 5.0
64 | _ScaleX ("Scale X", float) = 1.0
65 | _ScaleY ("Scale Y", float) = 1.0
66 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875
67 |
68 | _VertexOffsetX ("Vertex OffsetX", float) = 0
69 | _VertexOffsetY ("Vertex OffsetY", float) = 0
70 |
71 | _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
72 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
73 | _MaskSoftnessX ("Mask SoftnessX", float) = 0
74 | _MaskSoftnessY ("Mask SoftnessY", float) = 0
75 |
76 | _StencilComp ("Stencil Comparison", Float) = 8
77 | _Stencil ("Stencil ID", Float) = 0
78 | _StencilOp ("Stencil Operation", Float) = 0
79 | _StencilWriteMask ("Stencil Write Mask", Float) = 255
80 | _StencilReadMask ("Stencil Read Mask", Float) = 255
81 |
82 | _ColorMask ("Color Mask", Float) = 15
83 | }
84 |
85 | SubShader {
86 |
87 | Tags
88 | {
89 | "Queue"="Transparent"
90 | "IgnoreProjector"="True"
91 | "RenderType"="Transparent"
92 | }
93 |
94 | Stencil
95 | {
96 | Ref [_Stencil]
97 | Comp [_StencilComp]
98 | Pass [_StencilOp]
99 | ReadMask [_StencilReadMask]
100 | WriteMask [_StencilWriteMask]
101 | }
102 |
103 | Cull [_CullMode]
104 | ZWrite Off
105 | Lighting Off
106 | Fog { Mode Off }
107 | ZTest [unity_GUIZTestMode]
108 | Blend One OneMinusSrcAlpha
109 | ColorMask [_ColorMask]
110 |
111 | Pass {
112 | CGPROGRAM
113 | #pragma target 3.0
114 | #pragma vertex VertShader
115 | #pragma fragment PixShader
116 | #pragma shader_feature __ BEVEL_ON
117 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
118 | #pragma shader_feature __ GLOW_ON
119 | #pragma shader_feature __ MASK_OFF
120 |
121 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
122 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
123 |
124 | #include "UnityCG.cginc"
125 | #include "UnityUI.cginc"
126 | #include "TMPro_Properties.cginc"
127 | #include "TMPro.cginc"
128 |
129 | struct vertex_t {
130 | float4 position : POSITION;
131 | float3 normal : NORMAL;
132 | fixed4 color : COLOR;
133 | float2 texcoord0 : TEXCOORD0;
134 | float2 texcoord1 : TEXCOORD1;
135 | };
136 |
137 |
138 | struct pixel_t {
139 | float4 position : SV_POSITION;
140 | fixed4 color : COLOR;
141 | float2 atlas : TEXCOORD0; // Atlas
142 | float4 param : TEXCOORD1; // alphaClip, scale, bias, weight
143 | float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw)
144 | float3 viewDir : TEXCOORD3;
145 |
146 | #if (UNDERLAY_ON || UNDERLAY_INNER)
147 | float4 texcoord2 : TEXCOORD4; // u,v, scale, bias
148 | fixed4 underlayColor : COLOR1;
149 | #endif
150 | float4 textures : TEXCOORD5;
151 | };
152 |
153 | // Used by Unity internally to handle Texture Tiling and Offset.
154 | float4 _FaceTex_ST;
155 | float4 _OutlineTex_ST;
156 |
157 | pixel_t VertShader(vertex_t input)
158 | {
159 | float bold = step(input.texcoord1.y, 0);
160 |
161 | float4 vert = input.position;
162 | vert.x += _VertexOffsetX;
163 | vert.y += _VertexOffsetY;
164 |
165 | float4 vPosition = UnityObjectToClipPos(vert);
166 |
167 | float2 pixelSize = vPosition.w;
168 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
169 | float scale = rsqrt(dot(pixelSize, pixelSize));
170 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5;
171 | if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
172 |
173 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
174 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
175 |
176 | float bias =(.5 - weight) + (.5 / scale);
177 |
178 | float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA);
179 |
180 | #if GLOW_ON
181 | alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
182 | #endif
183 |
184 | alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight;
185 |
186 | #if (UNDERLAY_ON || UNDERLAY_INNER)
187 | float4 underlayColor = _UnderlayColor;
188 | underlayColor.rgb *= underlayColor.a;
189 |
190 | float bScale = scale;
191 | bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
192 | float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
193 |
194 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
195 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
196 | float2 bOffset = float2(x, y);
197 | #endif
198 |
199 | // Generate UV for the Masking Texture
200 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
201 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
202 |
203 | // Support for texture tiling and offset
204 | float2 textureUV = UnpackUV(input.texcoord1.x);
205 | float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
206 | float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
207 |
208 | pixel_t output = {
209 | vPosition,
210 | input.color,
211 | input.texcoord0,
212 | float4(alphaClip, scale, bias, weight),
213 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
214 | mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz),
215 | #if (UNDERLAY_ON || UNDERLAY_INNER)
216 | float4(input.texcoord0 + bOffset, bScale, bBias),
217 | underlayColor,
218 | #endif
219 | float4(faceUV, outlineUV),
220 | };
221 |
222 | return output;
223 | }
224 |
225 |
226 | fixed4 PixShader(pixel_t input) : SV_Target
227 | {
228 | float c = tex2D(_MainTex, input.atlas).a;
229 |
230 | #ifndef UNDERLAY_ON
231 | clip(c - input.param.x);
232 | #endif
233 |
234 | float scale = input.param.y;
235 | float bias = input.param.z;
236 | float weight = input.param.w;
237 | float sd = (bias - c) * scale;
238 |
239 | float outline = (_OutlineWidth * _ScaleRatioA) * scale;
240 | float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
241 |
242 | half4 faceColor = _FaceColor;
243 | half4 outlineColor = _OutlineColor;
244 |
245 | faceColor.rgb *= input.color.rgb;
246 |
247 | faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
248 | outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
249 |
250 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
251 |
252 | #if BEVEL_ON
253 | float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
254 | float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
255 |
256 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
257 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
258 | n = normalize(n- bump);
259 |
260 | float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
261 |
262 | float3 col = GetSpecular(n, light);
263 | faceColor.rgb += col*faceColor.a;
264 | faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
265 | faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
266 |
267 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
268 | faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
269 | #endif
270 |
271 | #if UNDERLAY_ON
272 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
273 | faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
274 | #endif
275 |
276 | #if UNDERLAY_INNER
277 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
278 | faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
279 | #endif
280 |
281 | #if GLOW_ON
282 | float4 glowColor = GetGlowColor(sd, scale);
283 | faceColor.rgb += glowColor.rgb * glowColor.a;
284 | #endif
285 |
286 | // Alternative implementation to UnityGet2DClipping with support for softness.
287 | #if UNITY_UI_CLIP_RECT
288 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
289 | faceColor *= m.x * m.y;
290 | #endif
291 |
292 | #if UNITY_UI_ALPHACLIP
293 | clip(faceColor.a - 0.001);
294 | #endif
295 |
296 | return faceColor * input.color.a;
297 | }
298 |
299 | ENDCG
300 | }
301 | }
302 |
303 | Fallback "TextMeshPro/Mobile/Distance Field"
304 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
305 | }
306 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 68e6db2ebdc24f95958faec2be5558d6
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 | _ColorMask ("Color Mask", Float) = 15
15 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
16 |
17 | [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
18 | }
19 |
20 | SubShader
21 | {
22 | Tags
23 | {
24 | "Queue"="Transparent"
25 | "IgnoreProjector"="True"
26 | "RenderType"="Transparent"
27 | "PreviewType"="Plane"
28 | "CanUseSpriteAtlas"="True"
29 | }
30 |
31 | Stencil
32 | {
33 | Ref [_Stencil]
34 | Comp [_StencilComp]
35 | Pass [_StencilOp]
36 | ReadMask [_StencilReadMask]
37 | WriteMask [_StencilWriteMask]
38 | }
39 |
40 | Cull Off
41 | Lighting Off
42 | ZWrite Off
43 | ZTest [unity_GUIZTestMode]
44 | Blend SrcAlpha OneMinusSrcAlpha
45 | ColorMask [_ColorMask]
46 |
47 | Pass
48 | {
49 | CGPROGRAM
50 | #pragma vertex vert
51 | #pragma fragment frag
52 |
53 | #include "UnityCG.cginc"
54 | #include "UnityUI.cginc"
55 |
56 | #pragma multi_compile __ UNITY_UI_CLIP_RECT
57 | #pragma multi_compile __ UNITY_UI_ALPHACLIP
58 |
59 | struct appdata_t
60 | {
61 | float4 vertex : POSITION;
62 | float4 color : COLOR;
63 | float2 texcoord : TEXCOORD0;
64 | };
65 |
66 | struct v2f
67 | {
68 | float4 vertex : SV_POSITION;
69 | fixed4 color : COLOR;
70 | half2 texcoord : TEXCOORD0;
71 | float4 worldPosition : TEXCOORD1;
72 | };
73 |
74 | fixed4 _Color;
75 | fixed4 _TextureSampleAdd;
76 | float4 _ClipRect;
77 |
78 | v2f vert(appdata_t IN)
79 | {
80 | v2f OUT;
81 | OUT.worldPosition = IN.vertex;
82 | OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
83 |
84 | OUT.texcoord = IN.texcoord;
85 |
86 | #ifdef UNITY_HALF_TEXEL_OFFSET
87 | OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
88 | #endif
89 |
90 | OUT.color = IN.color * _Color;
91 | return OUT;
92 | }
93 |
94 | sampler2D _MainTex;
95 |
96 | fixed4 frag(v2f IN) : SV_Target
97 | {
98 | half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
99 |
100 | #if UNITY_UI_CLIP_RECT
101 | color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
102 | #endif
103 |
104 | #ifdef UNITY_UI_ALPHACLIP
105 | clip (color.a - 0.001);
106 | #endif
107 |
108 | return color;
109 | }
110 | ENDCG
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cf81c85f95fe47e1a27f6ae460cf182c
3 | timeCreated: 1450517184
4 | licenseType: Pro
5 | ShaderImporter:
6 | defaultTextures: []
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 407bc68d299748449bbf7f48ee690f8d
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3997e2241185407d80309a82f9148466
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/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 * 1.5;
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 | //float opacity = v.color.a;
29 |
30 | data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; //
31 |
32 | v.texcoord1.xy = UnpackUV(v.texcoord1.x);
33 | data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex));
34 | }
35 |
36 | void PixShader(Input input, inout SurfaceOutput o)
37 | {
38 |
39 | #if USE_DERIVATIVE | BEVEL_ON
40 | float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0);
41 |
42 | float4 smp4x = { tex2D(_MainTex, input.uv_MainTex - delta.xz).a,
43 | tex2D(_MainTex, input.uv_MainTex + delta.xz).a,
44 | tex2D(_MainTex, input.uv_MainTex - delta.zy).a,
45 | tex2D(_MainTex, input.uv_MainTex + delta.zy).a };
46 | #endif
47 |
48 | #if USE_DERIVATIVE
49 | // Screen space scaling reciprocal with anisotropic correction
50 | float2 edgeNormal = Normalize(float2(smp4x.x - smp4x.y, smp4x.z - smp4x.w));
51 | float2 res = float2(_TextureWidth * input.param.y, _TextureHeight);
52 | float2 tdx = ddx(input.uv_MainTex)*res;
53 | float2 tdy = ddy(input.uv_MainTex)*res;
54 | float lx = length(tdx);
55 | float ly = length(tdy);
56 | float s = sqrt(min(lx, ly) / max(lx, ly));
57 | s = lerp(1, s, abs(dot(normalize(tdx + tdy), edgeNormal)));
58 | float scale = rsqrt(abs(tdx.x * tdy.y - tdx.y * tdy.x)) * (_GradientScale * 2) * s;
59 | #else
60 | float scale = input.param.y;
61 | #endif
62 |
63 | // Signed distance
64 | float c = tex2D(_MainTex, input.uv_MainTex).a;
65 | float sd = (.5 - c - input.param.x) * scale + .5;
66 | float outline = _OutlineWidth*_ScaleRatioA * scale;
67 | float softness = _OutlineSoftness*_ScaleRatioA * scale;
68 |
69 | // Color & Alpha
70 | float4 faceColor = _FaceColor;
71 | float4 outlineColor = _OutlineColor;
72 | faceColor *= input.color;
73 | outlineColor.a *= input.color.a;
74 | faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y));
75 | outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y));
76 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
77 | faceColor.rgb /= max(faceColor.a, 0.0001);
78 |
79 |
80 | #if BEVEL_ON
81 | // Face Normal
82 | float3 n = GetSurfaceNormal(smp4x, input.param.x);
83 |
84 | // Bumpmap
85 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz;
86 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
87 | bump = lerp(float3(0, 0, 1), bump, faceColor.a);
88 | n = normalize(n - bump);
89 |
90 | // Cubemap reflection
91 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n)));
92 | float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
93 | #else
94 | float3 n = float3(0, 0, -1);
95 | float3 emission = float3(0, 0, 0);
96 | #endif
97 |
98 |
99 |
100 | #if GLOW_ON
101 | float4 glowColor = GetGlowColor(sd, scale);
102 | glowColor.a *= input.color.a;
103 | emission += glowColor.rgb*glowColor.a;
104 | faceColor = BlendARGB(glowColor, faceColor);
105 | faceColor.rgb /= max(faceColor.a, 0.0001);
106 | #endif
107 |
108 | // Set Standard output structure
109 | o.Albedo = faceColor.rgb;
110 | o.Normal = -n;
111 | o.Emission = emission;
112 | o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5));
113 | o.Gloss = 1;
114 | o.Alpha = faceColor.a;
115 | }
116 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d930090c0cd643c7b55f19a38538c162
3 | ShaderImporter:
4 | defaultTextures: []
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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/Sprite Assets/EmojiOne.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2103686
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 1
7 | m_PrefabParentObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: TextMeshPro/Sprite
10 | m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3}
11 | m_ShaderKeywords: UNITY_UI_CLIP_RECT
12 | m_LightmapFlags: 5
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _MainTex:
22 | m_Texture: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | m_Floats:
26 | - _ColorMask: 15
27 | - _Stencil: 0
28 | - _StencilComp: 8
29 | - _StencilOp: 0
30 | - _StencilReadMask: 255
31 | - _StencilWriteMask: 255
32 | - _UseUIAlphaClip: 0
33 | m_Colors:
34 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
35 | - _Color: {r: 1, g: 1, b: 1, a: 1}
36 | --- !u!114 &11400000
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_PrefabParentObject: {fileID: 0}
40 | m_PrefabInternal: {fileID: 0}
41 | m_GameObject: {fileID: 0}
42 | m_Enabled: 1
43 | m_EditorHideFlags: 0
44 | m_Script: {fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281, type: 3}
45 | m_Name: EmojiOne
46 | m_EditorClassIdentifier:
47 | hashCode: -1836805472
48 | material: {fileID: 2103686}
49 | materialHashCode: 0
50 | spriteSheet: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
51 | spriteInfoList:
52 | - id: 0
53 | x: 0
54 | y: 384
55 | width: 128
56 | height: 128
57 | xOffset: 0
58 | yOffset: 115.6
59 | xAdvance: 128
60 | scale: 1
61 | name: 1f60a
62 | hashCode: 57188336
63 | unicode: 128522
64 | pivot: {x: 0.5, y: 0.5}
65 | sprite: {fileID: 0}
66 | - id: 1
67 | x: 128
68 | y: 384
69 | width: 128
70 | height: 128
71 | xOffset: 0
72 | yOffset: 115.6
73 | xAdvance: 128
74 | scale: 1
75 | name: 1f60b
76 | hashCode: 57188339
77 | unicode: 128523
78 | pivot: {x: 0.5, y: 0.5}
79 | sprite: {fileID: 0}
80 | - id: 2
81 | x: 256
82 | y: 384
83 | width: 128
84 | height: 128
85 | xOffset: 0
86 | yOffset: 115.6
87 | xAdvance: 128
88 | scale: 1
89 | name: 1f60d
90 | hashCode: 57188341
91 | unicode: 128525
92 | pivot: {x: 0.5, y: 0.5}
93 | sprite: {fileID: 0}
94 | - id: 3
95 | x: 384
96 | y: 384
97 | width: 128
98 | height: 128
99 | xOffset: 0
100 | yOffset: 115.6
101 | xAdvance: 128
102 | scale: 1
103 | name: 1f60e
104 | hashCode: 57188340
105 | unicode: 128526
106 | pivot: {x: 0.5, y: 0.5}
107 | sprite: {fileID: 0}
108 | - id: 4
109 | x: 0
110 | y: 256
111 | width: 128
112 | height: 128
113 | xOffset: 0
114 | yOffset: 115.6
115 | xAdvance: 128
116 | scale: 1
117 | name: 1f600
118 | hashCode: 57188257
119 | unicode: 128512
120 | pivot: {x: 0.5, y: 0.5}
121 | sprite: {fileID: 0}
122 | - id: 5
123 | x: 128
124 | y: 256
125 | width: 128
126 | height: 128
127 | xOffset: 0
128 | yOffset: 115.6
129 | xAdvance: 128
130 | scale: 1
131 | name: 1f601
132 | hashCode: 57188256
133 | unicode: 128513
134 | pivot: {x: 0.5, y: 0.5}
135 | sprite: {fileID: 0}
136 | - id: 6
137 | x: 256
138 | y: 256
139 | width: 128
140 | height: 128
141 | xOffset: 0
142 | yOffset: 115.6
143 | xAdvance: 128
144 | scale: 1
145 | name: 1f602
146 | hashCode: 57188259
147 | unicode: 128514
148 | pivot: {x: 0.5, y: 0.5}
149 | sprite: {fileID: 0}
150 | - id: 7
151 | x: 384
152 | y: 256
153 | width: 128
154 | height: 128
155 | xOffset: 0
156 | yOffset: 115.6
157 | xAdvance: 128
158 | scale: 1
159 | name: 1f603
160 | hashCode: 57188258
161 | unicode: 128515
162 | pivot: {x: 0.5, y: 0.5}
163 | sprite: {fileID: 0}
164 | - id: 8
165 | x: 0
166 | y: 128
167 | width: 128
168 | height: 128
169 | xOffset: 0
170 | yOffset: 115.6
171 | xAdvance: 128
172 | scale: 1
173 | name: 1f604
174 | hashCode: 57188261
175 | unicode: 128516
176 | pivot: {x: 0.5, y: 0.5}
177 | sprite: {fileID: 0}
178 | - id: 9
179 | x: 128
180 | y: 128
181 | width: 128
182 | height: 128
183 | xOffset: 0
184 | yOffset: 115.6
185 | xAdvance: 128
186 | scale: 1
187 | name: 1f605
188 | hashCode: 57188260
189 | unicode: 128517
190 | pivot: {x: 0.5, y: 0.5}
191 | sprite: {fileID: 0}
192 | - id: 10
193 | x: 256
194 | y: 128
195 | width: 128
196 | height: 128
197 | xOffset: 0
198 | yOffset: 115.6
199 | xAdvance: 128
200 | scale: 1
201 | name: 1f606
202 | hashCode: 57188263
203 | unicode: 128518
204 | pivot: {x: 0.5, y: 0.5}
205 | sprite: {fileID: 0}
206 | - id: 11
207 | x: 384
208 | y: 128
209 | width: 128
210 | height: 128
211 | xOffset: 0
212 | yOffset: 115.6
213 | xAdvance: 128
214 | scale: 1
215 | name: 1f609
216 | hashCode: 57188264
217 | unicode: 128521
218 | pivot: {x: 0.5, y: 0.5}
219 | sprite: {fileID: 0}
220 | - id: 12
221 | x: 0
222 | y: 0
223 | width: 128
224 | height: 128
225 | xOffset: 0
226 | yOffset: 115.6
227 | xAdvance: 128
228 | scale: 1
229 | name: 1f618
230 | hashCode: 57188168
231 | unicode: 128536
232 | pivot: {x: 0.5, y: 0.5}
233 | sprite: {fileID: 0}
234 | - id: 13
235 | x: 128
236 | y: 0
237 | width: 128
238 | height: 128
239 | xOffset: 0
240 | yOffset: 115.6
241 | xAdvance: 128
242 | scale: 1
243 | name: 1f923
244 | hashCode: 57200239
245 | unicode: 129315
246 | pivot: {x: 0.5, y: 0.5}
247 | sprite: {fileID: 0}
248 | - id: 14
249 | x: 256
250 | y: 0
251 | width: 128
252 | height: 128
253 | xOffset: 0
254 | yOffset: 115.6
255 | xAdvance: 128
256 | scale: 1
257 | name: 263a
258 | hashCode: 1748406
259 | unicode: 9786
260 | pivot: {x: 0.5, y: 0.5}
261 | sprite: {fileID: 0}
262 | - id: 15
263 | x: 384
264 | y: 0
265 | width: 128
266 | height: 128
267 | xOffset: 0
268 | yOffset: 115.6
269 | xAdvance: 128
270 | scale: 1
271 | name: 2639
272 | hashCode: 1748462
273 | unicode: 9785
274 | pivot: {x: 0.5, y: 0.5}
275 | sprite: {fileID: 0}
276 | fallbackSpriteAssets: []
277 | --- !u!21 &1369835458
278 | Material:
279 | serializedVersion: 6
280 | m_ObjectHideFlags: 1
281 | m_PrefabParentObject: {fileID: 0}
282 | m_PrefabInternal: {fileID: 0}
283 | m_Name: TextMeshPro/Sprite
284 | m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3}
285 | m_ShaderKeywords:
286 | m_LightmapFlags: 5
287 | m_EnableInstancingVariants: 0
288 | m_DoubleSidedGI: 0
289 | m_CustomRenderQueue: -1
290 | stringTagMap: {}
291 | disabledShaderPasses: []
292 | m_SavedProperties:
293 | serializedVersion: 3
294 | m_TexEnvs: []
295 | m_Floats: []
296 | m_Colors: []
297 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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:
--------------------------------------------------------------------------------
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: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f00000030000000310000003e000000
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/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 |
--------------------------------------------------------------------------------
/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_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: 2705215ac5b84b70bacc50632be6e391, type: 3}
12 | m_Name: TMP Settings
13 | m_EditorClassIdentifier:
14 | m_version: 1.0.56.0b1
15 | m_enableWordWrapping: 1
16 | m_enableKerning: 1
17 | m_enableExtraPadding: 0
18 | m_enableTintAllSprites: 0
19 | m_enableParseEscapeCharacters: 1
20 | m_missingGlyphCharacter: 0
21 | m_warningsDisabled: 0
22 | m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
23 | m_defaultFontAssetPath: Fonts & Materials/
24 | m_defaultFontSize: 36
25 | m_defaultAutoSizeMinRatio: 0.5
26 | m_defaultAutoSizeMaxRatio: 2
27 | m_defaultTextMeshProTextContainerSize: {x: 20, y: 5}
28 | m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50}
29 | m_autoSizeTextContainer: 0
30 | m_fallbackFontAssets: []
31 | m_matchMaterialPreset: 1
32 | m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45,
33 | type: 2}
34 | m_defaultSpriteAssetPath: Sprite Assets/
35 | m_defaultColorGradientPresetsPath: Color Gradient Presets/
36 | m_enableEmojiSupport: 1
37 | m_defaultStyleSheet: {fileID: 11400000, guid: f952c082cb03451daed3ee968ac6c63e,
38 | type: 2}
39 | m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3}
40 | m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b,
41 | type: 3}
42 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/Assets/TextMesh Pro/Sprites/EmojiOne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abeisgoat/tf-jam/b47915c22168c7d9a39051ab78116bcf34fbbaf4/Assets/TextMesh Pro/Sprites/EmojiOne.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | }
4 | }
5 |
--------------------------------------------------------------------------------
/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 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/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/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: 7
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: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 1
23 | m_ClothInterCollisionSettingsToggle: 0
24 | m_ContactPairsMode: 0
25 | m_BroadphaseType: 0
26 | m_WorldBounds:
27 | m_Center: {x: 0, y: 0, z: 0}
28 | m_Extent: {x: 250, y: 250, z: 250}
29 | m_WorldSubdivisions: 8
30 |
--------------------------------------------------------------------------------
/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 | - enabled: 1
9 | path: Assets/Scenes/SampleScene.unity
10 | guid: 99c9720ab356a0642a771bea13969a05
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/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: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_SpritePackerMode: 0
12 | m_SpritePackerPaddingPower: 1
13 | m_EtcTextureCompressorBehavior: 1
14 | m_EtcTextureFastCompressor: 1
15 | m_EtcTextureNormalCompressor: 2
16 | m_EtcTextureBestCompressor: 4
17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
18 | m_ProjectGenerationRootNamespace:
19 | m_UserGeneratedProjectSuffix:
20 | m_CollabEditorSettings:
21 | inProgressEnabled: 1
22 |
--------------------------------------------------------------------------------
/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 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
40 | m_PreloadedShaders: []
41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
42 | type: 0}
43 | m_CustomRenderPipeline: {fileID: 0}
44 | m_TransparencySortMode: 0
45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
46 | m_DefaultRenderingPath: 1
47 | m_DefaultMobileRenderingPath: 1
48 | m_TierSettings: []
49 | m_LightmapStripping: 0
50 | m_FogStripping: 0
51 | m_InstancingStripping: 0
52 | m_LightmapKeepPlain: 1
53 | m_LightmapKeepDirCombined: 1
54 | m_LightmapKeepDynamicPlain: 1
55 | m_LightmapKeepDynamicDirCombined: 1
56 | m_LightmapKeepShadowMask: 1
57 | m_LightmapKeepSubtractive: 1
58 | m_FogKeepLinear: 1
59 | m_FogKeepExp: 1
60 | m_FogKeepExp2: 1
61 | m_AlbedoSwatchInfos: []
62 | m_LightsUseLinearIntensity: 0
63 | m_LightsUseColorTemperature: 0
64 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/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: 3
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_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AutoSyncTransforms: 1
28 | m_AlwaysShowColliders: 0
29 | m_ShowColliderSleep: 1
30 | m_ShowColliderContacts: 0
31 | m_ShowColliderAABB: 0
32 | m_ContactArrowScale: 0.2
33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38 |
--------------------------------------------------------------------------------
/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 | - type:
8 | m_NativeTypeID: 108
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,
13 | type: 2}
14 | - type:
15 | m_NativeTypeID: 1020
16 | m_ManagedTypePPtr: {fileID: 0}
17 | m_ManagedTypeFallback:
18 | defaultPresets:
19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,
20 | type: 2}
21 | - type:
22 | m_NativeTypeID: 1006
23 | m_ManagedTypePPtr: {fileID: 0}
24 | m_ManagedTypeFallback:
25 | defaultPresets:
26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,
27 | type: 2}
28 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2018.2.0b7
2 |
--------------------------------------------------------------------------------
/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: 4
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 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 4
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 4
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 4
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 2
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 4
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 40
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 1
136 | antiAliasing: 4
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 4
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
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: 1
164 | antiAliasing: 4
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 4
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSP2: 2
183 | Standalone: 5
184 | Tizen: 2
185 | WebGL: 3
186 | WiiU: 5
187 | Windows Store Apps: 5
188 | XboxOne: 5
189 | iPhone: 2
190 | tvOS: 2
191 |
--------------------------------------------------------------------------------
/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 | - PostProcessing
17 | - Ball
18 | - Player
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/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.0167
7 | Maximum Allowed Timestep: 0.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/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 | m_Enabled: 0
7 | m_TestMode: 0
8 | m_TestEventUrl:
9 | m_TestConfigUrl:
10 | m_TestInitMode: 0
11 | CrashReportingSettings:
12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate
14 | m_Enabled: 0
15 | m_CaptureEditorExceptions: 1
16 | UnityPurchasingSettings:
17 | m_Enabled: 0
18 | m_TestMode: 0
19 | UnityAnalyticsSettings:
20 | m_Enabled: 1
21 | m_InitializeOnStartup: 1
22 | m_TestMode: 0
23 | m_TestEventUrl:
24 | m_TestConfigUrl:
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tensor Jam: Shooting Hoops with Machine Learning
2 | Coming soon!
3 |
--------------------------------------------------------------------------------
/tsjs/.idea/basketflow.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tsjs/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tsjs/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tsjs/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | node index.js
3 | bash tsjs_to_keras.sh
4 | python3 keras_to_pb.py
5 | bash pb_to_frozen_pb.sh
6 |
7 |
--------------------------------------------------------------------------------
/tsjs/index.js:
--------------------------------------------------------------------------------
1 | const tf = require("@tensorflow/tfjs");
2 | const fs = require("fs");
3 | require('@tensorflow/tfjs-node');
4 |
5 | (async () => {
6 | /*
7 | Load our csv file and get it into a properly shaped array of pairs likes...
8 | [
9 | [distanceA, forceB],
10 | [distanceB, forceB],
11 | ...
12 | ]
13 | */
14 | var pairs = getPairsFromCSV().slice(0, 1000);
15 |
16 | /*
17 | Train the model using the data.
18 | */
19 | var model = tf.sequential();
20 | model.add(tf.layers.dense({units: 1, inputShape: [1], name: "shots"}));
21 | model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
22 |
23 | console.log(pairs);
24 |
25 | const xs = tf.tensor1d(pairs.map((p) => p[0] / 100));
26 | const ys = tf.tensor1d(pairs.map((p) => p[1]));
27 |
28 | console.log(`Training ${pairs.length}...`);
29 | await model.fit(xs, ys, {epochs: 100});
30 |
31 | await model.save("file://./model_as_tsjs");
32 |
33 | console.log(model.inputs);
34 | console.log(model.outputNames)
35 | })();
36 |
37 | function getPairsFromCSV() {
38 | return fs.readFileSync("../successful_shots.csv").toString().split("\n").map((row) => {
39 | const pair = row.split(",").slice(1).map((field) => {
40 | return parseFloat(field);
41 | });
42 |
43 | return pair.length ? pair : null;
44 | }).filter((p) => p);
45 | }
--------------------------------------------------------------------------------
/tsjs/keras_to_pb.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | from keras.models import load_model
3 | import tensorflow as tf
4 | import sys
5 |
6 | sess = tf.Session()
7 |
8 | from keras import backend as K
9 | K.set_session(sess)
10 | model = load_model('model_as_keras/model.h5')
11 |
12 | def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):
13 | """
14 | Freezes the state of a session into a pruned computation graph.
15 |
16 | Creates a new computation graph where variable nodes are replaced by
17 | constants taking their current value in the session. The new graph will be
18 | pruned so subgraphs that are not necessary to compute the requested
19 | outputs are removed.
20 | @param session The TensorFlow session to be frozen.
21 | @param keep_var_names A list of variable names that should not be frozen,
22 | or None to freeze all the variables in the graph.
23 | @param output_names Names of the relevant graph outputs.
24 | @param clear_devices Remove the device directives from the graph for better portability.
25 | @return The frozen graph definition.
26 | """
27 | from tensorflow.python.framework.graph_util import convert_variables_to_constants
28 | graph = session.graph
29 | with graph.as_default():
30 | freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))
31 | output_names = output_names or []
32 | output_names += [v.op.name for v in tf.global_variables()]
33 | input_graph_def = graph.as_graph_def()
34 | if clear_devices:
35 | for node in input_graph_def.node:
36 | node.device = ""
37 | frozen_graph = convert_variables_to_constants(session, input_graph_def,
38 | output_names, freeze_var_names)
39 | return frozen_graph
40 |
41 |
42 | tSaver = tf.train.Saver()
43 | tSaver.save(sess, "model_as_checkpoint/Profile.ckpt")
44 |
45 | print([n.name for n in tf.get_default_graph().as_graph_def().node])
46 | print(model.summary())
47 |
48 | #frozen_graph = freeze_session(sess)
49 | tf.train.write_graph(sess.graph_def, "./model_as_pb", "model.pb", as_text=True)
--------------------------------------------------------------------------------
/tsjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "basketflow",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "@tensorflow/tfjs": "^0.11.7",
13 | "@tensorflow/tfjs-node": "^0.1.7",
14 | "@tensorflow/tfjs-node-gpu": "^0.1.7",
15 | "express": "^4.16.3"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tsjs/pb_to_frozen_pb.sh:
--------------------------------------------------------------------------------
1 | freeze_graph --input_graph=./model_as_pb/model.pb --input_checkpoint=./model_as_checkpoint/Profile.ckpt --output_node_name=shots/BiasAdd --output_graph=../Assets/Resources/frozen.pb.bytes
2 |
--------------------------------------------------------------------------------
/tsjs/tsjs_to_keras.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | tensorflowjs_converter --input_format tensorflowjs --output_format keras ./model_as_tsjs/model.json ./model_as_keras/model.h5
3 |
--------------------------------------------------------------------------------