a %5.5.1f1ţ˙˙˙˙˙Č0ĹňĂôL.`?^Ů0D7€˙˙˙˙€Ś€˛€ЀŚ€Ś€Ś€#Ś€+H€3˙˙˙˙€1€1€˙˙˙˙@ހ€ Q€j€ ™€< Ś€H H€Z˙˙˙˙ €1€1€˙˙˙˙@ހ€Q€j€ЀgŚ€Ś€Ś€#Ś€+v~ € €– €Ÿ €¨ €ą €ş €Ă €Ě €Ő €Ţ  €ç! €ń" €ű# €$ €% €&Ő€#˙˙˙˙'€1€1€˙˙˙˙(€ހ€)H€j€˙˙˙˙*€1€1€˙˙˙˙+@ހ€,Q€j€-™€*.ހ8/AssetMetaDataguiddata[0]data[1]data[2]data[3]pathNametimeCreatedoriginalChangesetoriginalNameoriginalParentHash128originalDigestbytes[0]bytes[1]bytes[2]bytes[3]bytes[4]bytes[5]bytes[6]bytes[7]bytes[8]bytes[9]bytes[10]bytes[11]bytes[12]bytes[13]bytes[14]bytes[15]labelsassetStoreReflicenseType ˙˙z{ď@îČă5^(H'7€˙˙˙˙€Ś€˛€ Ő€ ހ#.€,†€Ä€ ހ#.€,H€Ť€˙˙˙˙€1€1€˙˙˙˙ @ހ€ Q€j€ Ő€5˙˙˙˙ €1€1€˙˙˙˙ €ހ€€j€˙˙˙˙€H€›€˙˙˙˙€1€1€˙˙˙˙@ހ€Q€j€y€ € ހ#.€, €I@ž€X @ހ#.€,H€]˙˙˙˙€1€1€˙˙˙˙@ހ€Q€j€H€h˙˙˙˙€1€1€˙˙˙˙ @ހ€!Q€j€"H€z˙˙˙˙#€1€1€˙˙˙˙$@ހ€%Q€j€&MonoImporterPPtrm_FileIDm_PathIDm_DefaultReferencesexecutionOrdericonm_UserDatam_AssetBundleNamem_AssetBundleVariants˙˙˙8-l'€Łć„hŒÎA,Œ€7€˙˙˙˙€Ś€˛€Ő€ ހ.€†€Ä€ ހ.€H€Ť€˙˙˙˙€1€1€˙˙˙˙ @ހ€ Q€j€ H€ę€˙˙˙˙ €1€1€˙˙˙˙ @ހ€Q€j€ń€(˙˙˙˙€1€1€˙˙˙˙€ހ€€j€˙˙˙˙€H€›€˙˙˙˙€1€1€˙˙˙˙@ހ€Q€j€y€ € ހ.€y€< ހ.€ހCH€T˙˙˙˙€1€1€˙˙˙˙ @ހ€!Q€j€"H€`˙˙˙˙#€1€1€˙˙˙˙$@ހ€%Q€j€&H€l˙˙˙˙'€1€1€˙˙˙˙(@ހ€)Q€j€*L€{+PPtrm_FileIDm_PathIDm_DefaultReferencesm_Iconm_ExecutionOrderm_ClassNamem_Namespacem_AssemblyNamem_IsEditorScript”˜@ŕyŻŘM*€%ě@ůFN–Ľ„k:Eë8<Assets/Standard Assets/Effects/ImageEffects/Scripts/Quads.csQuadsˇusing System; using UnityEngine; using Object = UnityEngine.Object; // same as Triangles but creates quads instead which generally // saves fillrate at the expense for more triangles to issue namespace UnityStandardAssets.ImageEffects { class Quads { static Mesh[] meshes; static int currentQuads = 0; static bool HasMeshes () { if (meshes == null) return false; foreach (Mesh m in meshes) if (null == m) return false; return true; } public static void Cleanup () { if (meshes == null) return; for (int i = 0; i < meshes.Length; i++) { if (null != meshes[i]) { Object.DestroyImmediate (meshes[i]); meshes[i] = null; } } meshes = null; } public static Mesh[] GetMeshes ( int totalWidth, int totalHeight) { if (HasMeshes () && (currentQuads == (totalWidth * totalHeight))) { return meshes; } int maxQuads = 65000 / 6; int totalQuads = totalWidth * totalHeight; currentQuads = totalQuads; int meshCount = Mathf.CeilToInt ((1.0f * totalQuads) / (1.0f * maxQuads)); meshes = new Mesh [meshCount]; int i = 0; int index = 0; for (i = 0; i < totalQuads; i += maxQuads) { int quads = Mathf.FloorToInt (Mathf.Clamp ((totalQuads-i), 0, maxQuads)); meshes[index] = GetMesh (quads, i, totalWidth, totalHeight); index++; } return meshes; } static Mesh GetMesh (int triCount, int triOffset, int totalWidth, int totalHeight) { var mesh = new Mesh (); mesh.hideFlags = HideFlags.DontSave; var verts = new Vector3[triCount * 4]; var uvs = new Vector2[triCount * 4]; var uvs2 = new Vector2[triCount * 4]; var tris = new int[triCount * 6]; for (int i = 0; i < triCount; i++) { int i4 = i * 4; int i6 = i * 6; int vertexWithOffset = triOffset + i; float x = Mathf.Floor (vertexWithOffset % totalWidth) / totalWidth; float y = Mathf.Floor (vertexWithOffset / totalWidth) / totalHeight; Vector3 position = new Vector3 (x * 2 - 1, y * 2 - 1, 1.0f); verts[i4 + 0] = position; verts[i4 + 1] = position; verts[i4 + 2] = position; verts[i4 + 3] = position; uvs[i4 + 0] = new Vector2 (0.0f, 0.0f); uvs[i4 + 1] = new Vector2 (1.0f, 0.0f); uvs[i4 + 2] = new Vector2 (0.0f, 1.0f); uvs[i4 + 3] = new Vector2 (1.0f, 1.0f); uvs2[i4 + 0] = new Vector2 (x, y); uvs2[i4 + 1] = new Vector2 (x, y); uvs2[i4 + 2] = new Vector2 (x, y); uvs2[i4 + 3] = new Vector2 (x, y); tris[i6 + 0] = i4 + 0; tris[i6 + 1] = i4 + 1; tris[i6 + 2] = i4 + 2; tris[i6 + 3] = i4 + 1; tris[i6 + 4] = i4 + 2; tris[i6 + 5] = i4 + 3; } mesh.vertices = verts; mesh.triangles = tris; mesh.uv = uvs; mesh.uv2 = uvs2; return mesh; } } } Quads UnityStandardAssets.ImageEffectsAssembly-CSharp-firstpass.dll