diff options
Diffstat (limited to 'Assets/LensFlare')
25 files changed, 2890 insertions, 0 deletions
diff --git a/Assets/LensFlare/Editor.meta b/Assets/LensFlare/Editor.meta new file mode 100644 index 0000000..32b0be3 --- /dev/null +++ b/Assets/LensFlare/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c99000734a73974db86c76ddfede011 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/Editor/FlareAtlasEditor.cs b/Assets/LensFlare/Editor/FlareAtlasEditor.cs new file mode 100644 index 0000000..8bcd05d --- /dev/null +++ b/Assets/LensFlare/Editor/FlareAtlasEditor.cs @@ -0,0 +1,138 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(FlareAtlas), false)]
+public class FlareAtlasEditor : Editor
+{
+ private FlareAtlas m_Atlas;
+ private List<FlareTexture> m_SubTextures;
+ private int m_Foldout;
+
+ public void OnEnable()
+ {
+ m_Atlas = target as FlareAtlas;
+ m_SubTextures = m_Atlas.SubTextures;
+ m_Foldout = 0;
+ }
+
+ public void OnDisable()
+ {
+ }
+
+ public override void OnInspectorGUI()
+ {
+ GUI.changed = false;
+ EditorGUILayout.LabelField("Atlas Texture");
+ m_Atlas.Atlas = EditorGUILayout.ObjectField(m_Atlas.Atlas, typeof(Texture2D), false) as Texture2D;
+ GUILayout.Space(10);
+ EditorGUILayout.LabelField("Sub Textures: " + m_SubTextures.Count, GUILayout.Width(250));
+ EditorGUILayout.BeginVertical();
+ for(int i = 0; i < m_SubTextures.Count; ++i)
+ {
+ FlareTexture subTex = m_SubTextures[i];
+ if (subTex == null)
+ return;
+
+ EditorGUILayout.BeginHorizontal();
+ bool foldout = (m_Foldout & (1 << i)) != 0;
+ foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, "Tex "+ i);
+ //GUILayout.Button(" - ");
+ GUIStyle style = new GUIStyle();
+ style.alignment = TextAnchor.MiddleRight;
+ if (GUILayout.Button(" - ", GUILayout.Width(40)))
+ {
+ m_SubTextures.RemoveAt(i);
+ int leftPart = m_Foldout >> 1 & ~((1 << i)-1);
+ int rightPart = m_Foldout & ((1 << i) - 1);
+ m_Foldout = leftPart | rightPart;
+ EditorGUILayout.EndHorizontal();
+ break;
+ } + EditorGUILayout.EndHorizontal();
+ m_Foldout = (m_Foldout & ~((1 << i))) | (foldout ? (1 << i) : 0);
+ if (!foldout)
+ {
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ continue;
+ }
+ subTex.Scale = EditorGUILayout.Vector2Field("Scale", subTex.Scale);
+ subTex.Offset = EditorGUILayout.Vector2Field("Offset", subTex.Offset);
+
+ // edit scale offset
+ Vector4 scaleOffset = subTex.ScaleOffset;
+ Vector2 scale = subTex.Scale;
+ Vector2 offset = subTex.Offset;
+ Vector2 imageSize = new Vector2(m_Atlas.Atlas.width, m_Atlas.Atlas.height);
+ Rect rect = GUILayoutUtility.GetLastRect();
+ float left = offset.x * imageSize.x;
+ float right = (scale.x + offset.x) * imageSize.x;
+ float bottom = offset.y * imageSize.y;
+ float top = (scale.y + offset.y) * imageSize.y;
+ float aspect = 1;
+ if (top - bottom != 0)
+ aspect = (right - left) / (top - bottom);
+ Rect texRect = new Rect(rect.x, rect.y + 20, 200, 200);
+ Rect texRect2 = new Rect(rect.x + 220, rect.y + 20, 200 * aspect, 200);
+ Rect uv0 = new Rect(0,0,1,1);
+ Rect uv = new Rect(scaleOffset.z, scaleOffset.w, scaleOffset.x, scaleOffset.y);
+ GUI.DrawTextureWithTexCoords(texRect, m_Atlas.Atlas, uv0);
+ GUI.DrawTextureWithTexCoords(texRect2, m_Atlas.Atlas, uv);
+ DrawHorizontalline(Color.white, new Vector2(texRect.x, texRect.y + 200 - (scale.y + offset.y) * 200), 200);
+ DrawHorizontalline(Color.white, new Vector2(texRect.x, texRect.y + 200 - offset.y * 200), 200);
+ DrawVerticleline(Color.white, new Vector2(texRect.x + offset.x * 200, texRect.y), 200);
+ DrawVerticleline(Color.white, new Vector2(texRect.x + (scale.x + offset.x) * 200, texRect.y), 200);
+
+ GUILayout.Space(200f); + left = Mathf.Clamp(EditorGUILayout.Slider("Left", left, 0f, 2048f), 0, right - 1); + right = Mathf.Clamp(EditorGUILayout.Slider("Right", right, 0f, 2048f), left + 1, imageSize.x); + bottom = Mathf.Clamp(EditorGUILayout.Slider("Bottom", bottom, 0f, 2048f), 0, top - 1); + top = Mathf.Clamp(EditorGUILayout.Slider("Top", top, 0f, 2048f), bottom + 1, imageSize.y); + subTex.ScaleOffset.x = (right - left)/imageSize.x;
+ subTex.ScaleOffset.y = (top - bottom) /imageSize.y;
+ subTex.ScaleOffset.z = left /imageSize.x;
+ subTex.ScaleOffset.w = bottom / imageSize.y;
+ + EditorGUILayout.EndFoldoutHeaderGroup();
+ }
+ EditorGUILayout.EndVertical();
+
+ if (GUILayout.Button("+ New Texture"))
+ {
+ if(m_SubTextures.Count >= 32)
+ {
+ Debug.LogError("最多支持32个子图");
+ }
+ else
+ {
+ m_SubTextures.Add(new FlareTexture());
+ }
+ }
+ if (GUI.changed)
+ {
+ EditorUtility.SetDirty(m_Atlas);
+ }
+ }
+
+ public static void DrawHorizontalline(Color color, Vector2 left, float length, int thickness = 1, int padding = 0)
+ {
+ Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(padding + thickness));
+ r.x = left.x;
+ r.y = left.y;
+ r.width = length;
+ EditorGUI.DrawRect(r, color);
+ GUILayout.Space(-10f);
+ }
+
+ public static void DrawVerticleline(Color color, Vector2 top, float height, int thickness = 1, int padding = 0)
+ {
+ Rect r = EditorGUILayout.GetControlRect(GUILayout.Width(padding + thickness));
+ r.x = top.x;
+ r.y = top.y;
+ r.height = height;
+ EditorGUI.DrawRect(r, color);
+ GUILayout.Space(-10f);
+ }
+
+}
diff --git a/Assets/LensFlare/Editor/FlareAtlasEditor.cs.meta b/Assets/LensFlare/Editor/FlareAtlasEditor.cs.meta new file mode 100644 index 0000000..e1de27d --- /dev/null +++ b/Assets/LensFlare/Editor/FlareAtlasEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2940b263f6c0d74382457e09f328eca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/Flare Atlas.asset b/Assets/LensFlare/Flare Atlas.asset new file mode 100644 index 0000000..65be34f --- /dev/null +++ b/Assets/LensFlare/Flare Atlas.asset @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d198d755c8aabf44b45dba8fa4976ab, type: 3} + m_Name: Flare Atlas + m_EditorClassIdentifier: + Atlas: {fileID: 2800000, guid: 539933a8761e97d41b8c1544e599872f, type: 3} + SubTextures: + - ScaleOffset: {x: 0.3955078, y: 0.11230469, z: 0, w: 0.8876953} + - ScaleOffset: {x: 0.2626953, y: 0.2841797, z: 0.49804688, w: 0.7158203} + - ScaleOffset: {x: 0.19335938, y: 0.2163086, z: 0.5151367, w: 0.48828125} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} + - ScaleOffset: {x: 0.00048828125, y: 0.00048828125, z: 0, w: 0} diff --git a/Assets/LensFlare/Flare Atlas.asset.meta b/Assets/LensFlare/Flare Atlas.asset.meta new file mode 100644 index 0000000..281cc12 --- /dev/null +++ b/Assets/LensFlare/Flare Atlas.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 317e5903581b97148afb8a08854d474d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/FlareAtlas.cs b/Assets/LensFlare/FlareAtlas.cs new file mode 100644 index 0000000..9e42897 --- /dev/null +++ b/Assets/LensFlare/FlareAtlas.cs @@ -0,0 +1,49 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+[Serializable]
+public class FlareTexture
+{
+ public Vector4 ScaleOffset;
+ public Vector2 Scale
+ {
+ get
+ {
+ return new Vector2(ScaleOffset.x, ScaleOffset.y);
+ }
+ set
+ {
+ ScaleOffset.x = value.x;
+ ScaleOffset.y = value.y;
+ }
+ }
+ public Vector2 Offset
+ {
+ get
+ {
+ return new Vector2(ScaleOffset.z, ScaleOffset.w);
+ }
+ set
+ {
+ ScaleOffset.z = value.x;
+ ScaleOffset.w = value.y;
+ }
+ }
+}
+
+[CreateAssetMenu(fileName = "Flare Atlas", menuName ="Rendering/New Flare Atlas", order=5)]
+public class FlareAtlas : ScriptableObject
+{
+ public Texture2D Atlas;
+ public List<FlareTexture> SubTextures;
+
+ public Vector4 GetScaleOffset(int index)
+ {
+ if (SubTextures.Count <= index)
+ return Vector4.zero;
+ return SubTextures[index].ScaleOffset;
+ }
+
+}
diff --git a/Assets/LensFlare/FlareAtlas.cs.meta b/Assets/LensFlare/FlareAtlas.cs.meta new file mode 100644 index 0000000..4b65d3e --- /dev/null +++ b/Assets/LensFlare/FlareAtlas.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d198d755c8aabf44b45dba8fa4976ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/FlareBatch.cs b/Assets/LensFlare/FlareBatch.cs new file mode 100644 index 0000000..06246db --- /dev/null +++ b/Assets/LensFlare/FlareBatch.cs @@ -0,0 +1,119 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FlareBatch : MonoBehaviour
+{
+ [SerializeField] private Camera m_FlareCamera;
+ [SerializeField] private List<FlareSource> m_SourceList;
+ [SerializeField] private Material m_Materail;
+
+ private MeshRenderer m_MeshRenderer;
+ private MeshFilter m_MeshFilter;
+
+ private Mesh m_Mesh;
+
+ void Start()
+ {
+ m_MeshRenderer = GetComponentOrCreate<MeshRenderer>();
+ m_MeshRenderer.sharedMaterial = m_Materail;
+ m_MeshFilter = GetComponentOrCreate<MeshFilter>();
+
+ gameObject.layer = LayerMask.NameToLayer("Flare");
+
+ transform.position = m_FlareCamera.transform.position + m_FlareCamera.transform.forward;
+ transform.rotation = Quaternion.identity;
+ transform.localScale = Vector3.one;
+
+ m_Mesh = new Mesh();
+ m_Mesh.Clear();
+ PopulateMesh();
+ }
+
+ void LateUpdate()
+ {
+ m_Mesh.Clear();
+ for(int i = 0; i < m_SourceList.Count; ++i)
+ {
+ if(m_SourceList[i].IsVisible)
+ UpdateGeometry(m_SourceList[i]);
+ }
+ }
+
+ void UpdateGeometry(FlareSource source)
+ {
+ Vector3 viewportPos = source.ViewportPosition;
+ Vector3 flareSpacePos = ViewportToFlareSpace(viewportPos);
+
+ for (int i = 0; i < source.Flares.Count; ++i)
+ {
+ Flare flare = source.Flares[i];
+ //Matrix4x4 translate = Matrix4x4.Translate(flareSpacePos);
+ Vector3[] vertices =
+ {
+ Vec3(-0.5f, -0.5f, 0),
+ Vec3(-0.5f, 0.5f, 0),
+ Vec3(0.5f, 0.5f, 0),
+ Vec3(0.5f, -0.5f, 0),
+ };
+ for (int j = 0; j < vertices.Length; ++j)
+ {
+ vertices[j] += flareSpacePos;
+ }
+ Vector2[] uv =
+ {
+ Vec2(0,0),
+ Vec2(0,1),
+ Vec2(1,1),
+ Vec2(1,0),
+ };
+ for(int j = 0; j < uv.Length; ++j)
+ {
+ Vector4 scaleOffset = flare.Atlas.GetScaleOffset(flare.Index);
+ uv[j] *= new Vector2(scaleOffset.x, scaleOffset.y);
+ uv[j] += new Vector2(scaleOffset.z, scaleOffset.w);
+ }
+ int[] triangles = { 0, 1, 2, 0, 2, 3 };
+ m_Mesh.vertices = vertices;
+ m_Mesh.uv = uv;
+ m_Mesh.triangles = triangles;
+ // m_MeshFilter.mesh = m_Mesh;
+ }
+ }
+
+ void PopulateMesh()
+ {
+ m_MeshFilter.mesh = m_Mesh;
+ }
+
+ // 将viewport坐标转换到“flare空间”
+ Vector3 ViewportToFlareSpace(Vector3 pos)
+ {
+ pos += new Vector3(-0.5f, -0.5f, 0);
+ pos.x *= m_FlareCamera.aspect * m_FlareCamera.orthographicSize * 2;
+ pos.y *= m_FlareCamera.orthographicSize * 2;
+ pos.z = 0;
+ return pos;
+ }
+
+ T GetComponentOrCreate<T>() where T: Component
+ {
+ T component = GetComponent<T>();
+ if (component == null)
+ component = gameObject.AddComponent(typeof(T)) as T;
+ return component;
+ }
+
+ Vector2 Vec2(float x, float y)
+ {
+ Vector2 v = new Vector2(x, y);
+ return v;
+ }
+
+ Vector3 Vec3(float x, float y, float z)
+ {
+ Vector3 v = new Vector3(x, y, z);
+ return v;
+ }
+
+}
diff --git a/Assets/LensFlare/FlareBatch.cs.meta b/Assets/LensFlare/FlareBatch.cs.meta new file mode 100644 index 0000000..329cc8d --- /dev/null +++ b/Assets/LensFlare/FlareBatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ececf1f2f50645a45900ae50b074d97e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/FlareSource.cs b/Assets/LensFlare/FlareSource.cs new file mode 100644 index 0000000..1ab8a2e --- /dev/null +++ b/Assets/LensFlare/FlareSource.cs @@ -0,0 +1,63 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[Serializable]
+public class Flare
+{
+ public FlareAtlas Atlas;
+ public int Index;
+}
+
+// 光源
+public class FlareSource : MonoBehaviour
+{
+ [SerializeField] private Camera m_GameCamera;
+ [SerializeField] private Camera m_FlareCamera;
+ public List<Flare> Flares;
+
+ private Vector3 m_ViewportPosition;
+ public Vector3 ViewportPosition
+ {
+ get
+ {
+ return m_ViewportPosition;
+ }
+ }
+
+ public bool IsVisible
+ {
+ get;private set;
+ }
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ IsVisible = false;
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ Vector3 position = transform.position;
+ m_ViewportPosition = m_GameCamera.WorldToViewportPoint(position);
+
+ Ray ray = new Ray(m_GameCamera.transform.position, position - m_GameCamera.transform.position);
+ RaycastHit hit;
+ if(Physics.Raycast(ray, out hit))
+ {
+ IsVisible = false;
+ }
+ else
+ {
+ IsVisible = true;
+ }
+ }
+
+ private void OnDrawGizmos()
+ {
+ Gizmos.DrawLine(transform.position, m_GameCamera.transform.position);
+ }
+
+}
diff --git a/Assets/LensFlare/FlareSource.cs.meta b/Assets/LensFlare/FlareSource.cs.meta new file mode 100644 index 0000000..8507a71 --- /dev/null +++ b/Assets/LensFlare/FlareSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd20453260fa4ac4499d69fbf74e50bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/IslandDemoAtlas.png b/Assets/LensFlare/IslandDemoAtlas.png Binary files differnew file mode 100644 index 0000000..15f5844 --- /dev/null +++ b/Assets/LensFlare/IslandDemoAtlas.png diff --git a/Assets/LensFlare/IslandDemoAtlas.png.meta b/Assets/LensFlare/IslandDemoAtlas.png.meta new file mode 100644 index 0000000..1ac94f3 --- /dev/null +++ b/Assets/LensFlare/IslandDemoAtlas.png.meta @@ -0,0 +1,142 @@ +fileFormatVersion: 2 +guid: 539933a8761e97d41b8c1544e599872f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 2 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/LensFlare.cs b/Assets/LensFlare/LensFlare.cs new file mode 100644 index 0000000..768c1ec --- /dev/null +++ b/Assets/LensFlare/LensFlare.cs @@ -0,0 +1,242 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[ExecuteInEditMode]
+[RequireComponent(typeof(MeshRenderer))]
+[RequireComponent(typeof(MeshFilter))]
+public class LensFlare : MonoBehaviour
+{
+ [SerializeField, HideInInspector]
+ MeshRenderer m_MeshRenderer;
+ [SerializeField, HideInInspector]
+ MeshFilter m_MeshFilter;
+ [SerializeField]
+ Light m_Light;
+
+ [Header("Global Settings")]
+ public float OcclusionRadius = 1.0f;
+ public float NearFadeStartDistance = 1.0f;
+ public float NearFadeEndDistance = 3.0f;
+ public float FarFadeStartDistance = 10.0f;
+ public float FarFadeEndDistance = 50.0f;
+
+ [Header("Flare Element Settings")]
+ [SerializeField]
+ public List<FlareSettings> Flares;
+
+ void Awake()
+ {
+ if (m_MeshFilter == null)
+ m_MeshFilter = GetComponent<MeshFilter>();
+ if (m_MeshRenderer == null)
+ m_MeshRenderer = GetComponent<MeshRenderer>();
+
+ m_Light = GetComponent<Light>();
+
+ m_MeshFilter.hideFlags = HideFlags.None;
+ m_MeshRenderer.hideFlags = HideFlags.None;
+
+ if (Flares == null)
+ Flares = new List<FlareSettings>();
+
+ m_MeshFilter.mesh = InitMesh();
+ }
+
+ void OnEnable()
+ {
+ UpdateGeometry();
+ }
+
+
+ // Use this for initialization
+ void Start()
+ {
+ m_Light = GetComponent<Light>();
+ }
+
+ void OnValidate()
+ {
+ UpdateGeometry();
+ UpdateMaterials();
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ // Lazy!
+ UpdateVaryingAttributes();
+ }
+
+ Mesh InitMesh()
+ {
+ Mesh m = new Mesh();
+ m.MarkDynamic();
+ return m;
+ }
+
+ void UpdateMaterials()
+ {
+ Material[] mats = new Material[Flares.Count];
+
+ int i = 0;
+ foreach (FlareSettings f in Flares)
+ {
+ mats[i] = f.Material;
+ i++;
+ }
+ m_MeshRenderer.sharedMaterials = mats;
+ }
+
+ void UpdateGeometry()
+ {
+ Mesh m = m_MeshFilter.sharedMesh;
+
+ // Positions
+ List<Vector3> vertices = new List<Vector3>();
+ foreach (FlareSettings s in Flares)
+ {
+ vertices.Add(new Vector3(-1, -1, 0));
+ vertices.Add(new Vector3(1, -1, 0));
+ vertices.Add(new Vector3(1, 1, 0));
+ vertices.Add(new Vector3(-1, 1, 0));
+ }
+ m.SetVertices(vertices);
+
+ // UVs
+ List<Vector2> uvs = new List<Vector2>();
+ foreach (FlareSettings s in Flares)
+ {
+ uvs.Add(new Vector2(0, 1));
+ uvs.Add(new Vector2(1, 1));
+ uvs.Add(new Vector2(1, 0));
+ uvs.Add(new Vector2(0, 0));
+ }
+ m.SetUVs(0, uvs);
+
+ // Variable Data
+ m.SetColors(GetLensFlareColor());
+ m.SetUVs(1, GetLensFlareData());
+ m.SetUVs(2, GetWorldPositionAndRadius());
+ m.SetUVs(3, GetDistanceFadeData());
+
+ m.subMeshCount = Flares.Count;
+
+ // Tris
+ for (int i = 0; i < Flares.Count; i++)
+ {
+ int[] tris = new int[6];
+ tris[0] = (i * 4) + 0;
+ tris[1] = (i * 4) + 1;
+ tris[2] = (i * 4) + 2;
+ tris[3] = (i * 4) + 2;
+ tris[4] = (i * 4) + 3;
+ tris[5] = (i * 4) + 0;
+ m.SetTriangles(tris, i);
+ }
+
+ Bounds b = m.bounds;
+ b.extents = new Vector3(OcclusionRadius, OcclusionRadius, OcclusionRadius);
+ m.bounds = b;
+ m.UploadMeshData(false);
+ }
+
+ void UpdateVaryingAttributes()
+ {
+ Mesh m = m_MeshFilter.sharedMesh;
+
+ m.SetColors(GetLensFlareColor());
+ m.SetUVs(1, GetLensFlareData());
+ m.SetUVs(2, GetWorldPositionAndRadius());
+ m.SetUVs(3, GetDistanceFadeData());
+
+ Bounds b = m.bounds;
+ b.extents = new Vector3(OcclusionRadius, OcclusionRadius, OcclusionRadius);
+ m.bounds = b;
+ m.name = "LensFlare (" + gameObject.name + ")";
+ }
+
+ List<Color> GetLensFlareColor()
+ {
+ List<Color> colors = new List<Color>();
+ foreach (FlareSettings s in Flares)
+ {
+ Color c = (s.MultiplyByLightColor && m_Light != null) ? s.Color * m_Light.color * m_Light.intensity : s.Color;
+
+ colors.Add(c);
+ colors.Add(c);
+ colors.Add(c);
+ colors.Add(c);
+ }
+ return colors;
+ }
+
+ List<Vector4> GetLensFlareData()
+ {
+ List<Vector4> lfData = new List<Vector4>();
+
+ foreach (FlareSettings s in Flares)
+ {
+ Vector4 data = new Vector4(s.RayPosition, s.AutoRotate ? -1 : Mathf.Abs(s.Rotation), s.Size.x, s.Size.y);
+ lfData.Add(data); lfData.Add(data); lfData.Add(data); lfData.Add(data);
+ }
+ return lfData;
+ }
+ List<Vector4> GetDistanceFadeData()
+ {
+ List<Vector4> fadeData = new List<Vector4>();
+
+ foreach (FlareSettings s in Flares)
+ {
+ Vector4 data = new Vector4(NearFadeStartDistance, NearFadeEndDistance, FarFadeStartDistance, FarFadeEndDistance);
+ fadeData.Add(data); fadeData.Add(data); fadeData.Add(data); fadeData.Add(data);
+ }
+ return fadeData;
+ }
+
+
+ List<Vector4> GetWorldPositionAndRadius()
+ {
+ List<Vector4> worldPos = new List<Vector4>();
+ Vector3 pos = transform.position;
+ Vector4 value = new Vector4(pos.x, pos.y, pos.z, OcclusionRadius);
+ foreach (FlareSettings s in Flares)
+ {
+ worldPos.Add(value); worldPos.Add(value); worldPos.Add(value); worldPos.Add(value);
+ }
+
+ return worldPos;
+ }
+
+ void OnDrawGizmosSelected()
+ {
+ return;
+ Gizmos.color = new Color(1, 0, 0, 0.3f);
+ Gizmos.DrawSphere(transform.position, OcclusionRadius);
+ Gizmos.color = Color.red;
+ Gizmos.DrawWireSphere(transform.position, OcclusionRadius);
+ }
+
+ [System.Serializable]
+ public class FlareSettings
+ {
+ public float RayPosition;
+ public Material Material;
+ [ColorUsage(true, true)]
+ public Color Color;
+ public bool MultiplyByLightColor;
+ public Vector2 Size;
+ public float Rotation;
+ public bool AutoRotate;
+
+ public FlareSettings()
+ {
+ RayPosition = 0.0f;
+ Color = Color.white;
+ MultiplyByLightColor = true;
+ Size = new Vector2(0.3f, 0.3f);
+ Rotation = 0.0f;
+ AutoRotate = false;
+ }
+ }
+}
diff --git a/Assets/LensFlare/LensFlare.cs.meta b/Assets/LensFlare/LensFlare.cs.meta new file mode 100644 index 0000000..bca22a9 --- /dev/null +++ b/Assets/LensFlare/LensFlare.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf420f1fcf2c7745b6f448d60827c0d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/LensFlare.mat b/Assets/LensFlare/LensFlare.mat new file mode 100644 index 0000000..bb57f4e --- /dev/null +++ b/Assets/LensFlare/LensFlare.mat @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LensFlare + m_Shader: {fileID: 4800000, guid: 3fe20b33ee6fc224c905c4db6180eff6, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: b96ae14a5fa164cbda52e52ab1694f94, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OccludedSizeScale: 1 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &8424519465874014809 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 2 diff --git a/Assets/LensFlare/LensFlare.mat.meta b/Assets/LensFlare/LensFlare.mat.meta new file mode 100644 index 0000000..236ef41 --- /dev/null +++ b/Assets/LensFlare/LensFlare.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2538de606c59c04f9b9a86fe0869e48 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/LensFlare.unity b/Assets/LensFlare/LensFlare.unity new file mode 100644 index 0000000..e648119 --- /dev/null +++ b/Assets/LensFlare/LensFlare.unity @@ -0,0 +1,1071 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &378154549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 378154551} + - component: {fileID: 378154550} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &378154550 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378154549} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &378154551 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 378154549} + m_LocalRotation: {x: 0.46999806, y: -0, z: -0, w: 0.88266754} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1303527991} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 56.068, y: 0, z: 0} +--- !u!1 &449180655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 449180656} + m_Layer: 0 + m_Name: _CameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &449180656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 449180655} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1197693694} + - {fileID: 1225276825} + - {fileID: 1915971034} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &969672461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 969672462} + - component: {fileID: 969672463} + m_Layer: 0 + m_Name: CameraRigX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &969672462 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 969672461} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1700281658} + m_Father: {fileID: 1915971034} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &969672463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 969672461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caeefc16a0ffc48dd8f63c1c92e16f99, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1197693694} +--- !u!1 &986942383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 986942384} + - component: {fileID: 986942387} + - component: {fileID: 986942386} + - component: {fileID: 986942385} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &986942384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986942383} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1303527991} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &986942385 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986942383} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &986942386 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986942383} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &986942387 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986942383} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1096093578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1096093579} + - component: {fileID: 1096093580} + m_Layer: 0 + m_Name: FlareSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1096093579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096093578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1303527991} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1096093580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096093578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bd20453260fa4ac4499d69fbf74e50bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_GameCamera: {fileID: 2134045979} + m_FlareCamera: {fileID: 1380528559} + Flares: + - Atlas: {fileID: 11400000, guid: 317e5903581b97148afb8a08854d474d, type: 2} + Index: 0 +--- !u!1 &1129909397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1129909398} + - component: {fileID: 1129909399} + m_Layer: 8 + m_Name: FlareBatch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1129909398 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129909397} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1380528560} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1129909399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129909397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ececf1f2f50645a45900ae50b074d97e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FlareCamera: {fileID: 1380528559} + m_SourceList: + - {fileID: 1096093580} + m_Materail: {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} +--- !u!1 &1170846966 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1170846967} + - component: {fileID: 1170846968} + m_Layer: 0 + m_Name: CameraZoom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1170846967 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170846966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2134045980} + m_Father: {fileID: 1700281658} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1170846968 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1170846966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7273bde5c1c224e26b0efa033fe287fd, type: 3} + m_Name: + m_EditorClassIdentifier: + current: 0 + prev: 0 + pos: 0 + dif: 0 + offset: 0 +--- !u!1 &1197693693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1197693694} + - component: {fileID: 1197693695} + m_Layer: 0 + m_Name: _X + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1197693694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197693693} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 449180656} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1197693695 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197693693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a921a8497aac47309e350980e0a7cf1, type: 3} + m_Name: + m_EditorClassIdentifier: + cropDist: 0 + ResponseTime: 0.2 + touchMode: 1 + X: 1 + Y: 0 +--- !u!1 &1225276824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1225276825} + - component: {fileID: 1225276826} + m_Layer: 0 + m_Name: _Y + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1225276825 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225276824} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 449180656} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225276826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225276824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a921a8497aac47309e350980e0a7cf1, type: 3} + m_Name: + m_EditorClassIdentifier: + cropDist: 0 + ResponseTime: 0.2 + touchMode: 1 + X: 0 + Y: 1 +--- !u!1 &1303527990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1303527991} + m_Layer: 0 + m_Name: Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1303527991 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1303527990} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.01427269, y: 3.43, z: 9.54} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 378154551} + - {fileID: 1096093579} + - {fileID: 986942384} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1380528556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1380528560} + - component: {fileID: 1380528559} + - component: {fileID: 1380528557} + m_Layer: 0 + m_Name: FlareCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1380528557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380528556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 1 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &1380528559 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380528556} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 2 + field of view: 60 + orthographic: 1 + orthographic size: 1 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 256 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1380528560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380528556} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.25, y: -0.38, z: -21.26} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1129909398} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1607455291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1607455295} + - component: {fileID: 1607455294} + - component: {fileID: 1607455293} + - component: {fileID: 1607455292} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1607455292 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607455291} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1607455293 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607455291} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1607455294 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607455291} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1607455295 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1607455291} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.44, z: 0} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1700281657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1700281658} + - component: {fileID: 1700281659} + m_Layer: 0 + m_Name: CameraRigY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1700281658 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1700281657} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1170846967} + m_Father: {fileID: 969672462} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1700281659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1700281657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caeefc16a0ffc48dd8f63c1c92e16f99, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1225276825} +--- !u!1 &1915971033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1915971034} + - component: {fileID: 1915971035} + m_Layer: 0 + m_Name: Spin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1915971034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915971033} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 969672462} + m_Father: {fileID: 449180656} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1915971035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915971033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d89303dd8d2742a8aef9c0ad9d88e57, type: 3} + m_Name: + m_EditorClassIdentifier: + Speed: {x: 0, y: 0, z: 0} +--- !u!1 &2134045977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2134045980} + - component: {fileID: 2134045979} + - component: {fileID: 2134045978} + - component: {fileID: 2134045981} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2134045978 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134045977} + m_Enabled: 1 +--- !u!20 &2134045979 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134045977} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2134045980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134045977} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.81, z: -6.03} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1170846967} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2134045981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134045977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: + - {fileID: 1380528559} + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 diff --git a/Assets/LensFlare/LensFlare.unity.meta b/Assets/LensFlare/LensFlare.unity.meta new file mode 100644 index 0000000..9472622 --- /dev/null +++ b/Assets/LensFlare/LensFlare.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 771070f96846d7249a61c096aed388fb +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/LensFlareAdditive.shader b/Assets/LensFlare/LensFlareAdditive.shader new file mode 100644 index 0000000..09e49ce --- /dev/null +++ b/Assets/LensFlare/LensFlareAdditive.shader @@ -0,0 +1,66 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +Shader "Flares/Textured Flare Shader" +{ + Properties + { + _MainTex ( "Texture", 2D ) = "white" {} + } + + SubShader + { + Tags { "Queue"="Transparent+100" "IgnoreProjector"="True" "RenderType"="Transparent" } + + Pass + { + ZWrite Off + ZTest Always + Blend One One + + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
+ + sampler2D _MainTex; + float4 _MainTex_ST; + + struct VertInput + { + half4 vertex : POSITION; + half2 texcoord : TEXCOORD0; + fixed4 color : COLOR; + }; + + struct Verts + { + half4 pos : SV_POSITION; + half2 uv : TEXCOORD0; + fixed4 _color : COLOR; + }; + + Verts vert ( VertInput vert ) + { + Verts v; + + v._color = vert.color*(vert.color.a*3); + v.pos = UnityObjectToClipPos ( vert.vertex ); + v.uv = TRANSFORM_TEX(vert.texcoord, _MainTex); + + return v; + } + + fixed4 frag ( Verts v ):COLOR + { + return tex2D ( _MainTex, v.uv ) * v._color; + } + + ENDCG + } + } +} + + diff --git a/Assets/LensFlare/LensFlareAdditive.shader.meta b/Assets/LensFlare/LensFlareAdditive.shader.meta new file mode 100644 index 0000000..8c47f2d --- /dev/null +++ b/Assets/LensFlare/LensFlareAdditive.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3fe20b33ee6fc224c905c4db6180eff6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/LensFlareCommon.hlsl b/Assets/LensFlare/LensFlareCommon.hlsl new file mode 100644 index 0000000..d5fd11f --- /dev/null +++ b/Assets/LensFlare/LensFlareCommon.hlsl @@ -0,0 +1,161 @@ +struct appdata
+{
+ float4 vertex : POSITION;
+ float2 uv : TEXCOORD0;
+ float4 color : COLOR;
+
+ // LensFlare Data :
+ // * X = RayPos
+ // * Y = Rotation (< 0 = Auto)
+ // * ZW = Size (Width, Height) in Screen Height Ratio
+ nointerpolation float4 lensflare_data : TEXCOORD1;
+ // World Position (XYZ) and Radius(W) :
+ nointerpolation float4 worldPosRadius : TEXCOORD2;
+ // LensFlare FadeData :
+ // * X = Near Start Distance
+ // * Y = Near End Distance
+ // * Z = Far Start Distance
+ // * W = Far End Distance
+ nointerpolation float4 lensflare_fadeData : TEXCOORD3;
+};
+
+struct v2f
+{
+ float2 uv : TEXCOORD0;
+ float4 vertex : SV_POSITION;
+ float4 color : COLOR;
+};
+
+TEXTURE2D(_MainTex);
+SAMPLER(sampler_MainTex);
+TEXTURE2D(_CameraDepthTexture);
+SAMPLER(sampler_CameraDepthTexture);
+float _OccludedSizeScale;
+
+// thanks, internets
+static const uint DEPTH_SAMPLE_COUNT = 32;
+static float2 samples[DEPTH_SAMPLE_COUNT] = {
+ float2(0.658752441406,-0.0977704077959),
+ float2(0.505380451679,-0.862896621227),
+ float2(-0.678673446178,0.120453640819),
+ float2(-0.429447203875,-0.501827657223),
+ float2(-0.239791020751,0.577527523041),
+ float2(-0.666824519634,-0.745214760303),
+ float2(0.147858589888,-0.304675519466),
+ float2(0.0334240831435,0.263438135386),
+ float2(-0.164710089564,-0.17076793313),
+ float2(0.289210408926,0.0226817727089),
+ float2(0.109557107091,-0.993980526924),
+ float2(-0.999996423721,-0.00266989553347),
+ float2(0.804284930229,0.594243884087),
+ float2(0.240315377712,-0.653567194939),
+ float2(-0.313934922218,0.94944447279),
+ float2(0.386928111315,0.480902403593),
+ float2(0.979771316051,-0.200120285153),
+ float2(0.505873680115,-0.407543361187),
+ float2(0.617167234421,0.247610524297),
+ float2(-0.672138273716,0.740425646305),
+ float2(-0.305256098509,-0.952270269394),
+ float2(0.493631094694,0.869671344757),
+ float2(0.0982239097357,0.995164275169),
+ float2(0.976404249668,0.21595069766),
+ float2(-0.308868765831,0.150203511119),
+ float2(-0.586166858673,-0.19671548903),
+ float2(-0.912466347218,-0.409151613712),
+ float2(0.0959918648005,0.666364192963),
+ float2(0.813257217407,-0.581904232502),
+ float2(-0.914829492569,0.403840065002),
+ float2(-0.542099535465,0.432246923447),
+ float2(-0.106764614582,-0.618209302425)
+};
+
+float GetOcclusion(float2 screenPos, float depth, float radius, float ratio)
+{
+ float contrib = 0.0f;
+ float sample_Contrib = 1.0 / DEPTH_SAMPLE_COUNT;
+ float2 ratioScale = float2(1 / ratio, 1.0);
+ for (uint i = 0; i < DEPTH_SAMPLE_COUNT; i++)
+ {
+ float2 pos = screenPos + (samples[i] * radius * ratioScale);
+ pos = pos * 0.5 + 0.5;
+ pos.y = 1 - pos.y;
+ if (pos.x >= 0 && pos.x <= 1 && pos.y >= 0 && pos.y <= 1)
+ {
+ float sampledDepth = LinearEyeDepth(SAMPLE_TEXTURE2D_LOD(_CameraDepthTexture, sampler_CameraDepthTexture, pos, 0).r, _ZBufferParams);
+ //float sampledDepth = LinearEyeDepth(SampleCameraDepth(pos), _ZBufferParams);
+
+ if (sampledDepth >= depth)
+ contrib += sample_Contrib;
+ }
+ }
+ return contrib;
+}
+
+v2f vert(appdata v)
+{
+ v2f o;
+
+
+ float4 clip = TransformWorldToHClip(GetCameraRelativePositionWS(v.worldPosRadius.xyz));
+ float depth = clip.w; // wʵϵռµzֵҲռ¾ľ롣Ϊռ䵽ռľûŲľȼռ¾ľ롣
+
+ float3 cameraUp = normalize(mul(UNITY_MATRIX_V, float4(0, 1, 0, 0))).xyz;
+
+ float4 extent = TransformWorldToHClip(GetCameraRelativePositionWS(v.worldPosRadius.xyz + cameraUp * v.worldPosRadius.w));
+
+ // ǵõ̫Ļlensflareĵ
+ float2 screenPos = clip.xy / clip.w; // γõ[-1,1]
+ // lensflareϱԵĵ
+ float2 extentPos = extent.xy / extent.w; // γõ[-1,1]
+
+ float radius = distance(screenPos, extentPos);
+
+ // Ļ w/h
+ float ratio = _ScreenParams.x / _ScreenParams.y; // screenWidth/screenHeight
+ // ֱ
+ float occlusion = GetOcclusion(screenPos, depth - v.worldPosRadius.w, radius, ratio);
+
+ // õľ룬뵭ͷ
+ float4 d = v.lensflare_fadeData;
+ float distanceFade = saturate((depth - d.x) / (d.y - d.x));
+ distanceFade *= 1.0f - saturate((depth - d.z) / (d.w - d.z));
+
+ // position and rotate
+ float angle = v.lensflare_data.y;
+ if (angle < 0) // Automatic
+ {
+ float2 dir = normalize(screenPos);
+ angle = atan2(dir.y, dir.x) + 1.57079632675; // arbitrary, we need V to face the source, not U;
+ }
+
+ // ֱõƬСյƬС
+ float2 quad_size = lerp(_OccludedSizeScale, 1.0f, occlusion) * v.lensflare_data.zw;
+ if (distanceFade * occlusion == 0.0f) // if either one or other is zeroed
+ quad_size = float2(0, 0); // clip
+
+ float2 local = v.vertex.xy * quad_size;
+
+// תƬ
+// ʵfloat2x2 תR
+// {
+// cos(),-sin()
+// sin(),cos()
+// }
+// ϶Ļռ
+ local = float2(
+ local.x * cos(angle) + local.y * (-sin(angle)),
+ local.x * sin(angle) + local.y * cos(angle));
+
+ // adjust to correct ratio
+ local.x /= ratio; // ӦöӦĻţᱻ
+
+ float2 rayOffset = -screenPos * v.lensflare_data.x;
+ o.vertex.w = v.vertex.w;
+ o.vertex.xy = screenPos + local + rayOffset;
+
+ o.vertex.z = 1;
+ o.uv = v.uv;
+
+ o.color = v.color * occlusion * distanceFade * saturate(length(screenPos * 2));
+ return o;
+}
diff --git a/Assets/LensFlare/LensFlareCommon.hlsl.meta b/Assets/LensFlare/LensFlareCommon.hlsl.meta new file mode 100644 index 0000000..32d1110 --- /dev/null +++ b/Assets/LensFlare/LensFlareCommon.hlsl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d7717cafce4ea67418b9d06f74de457a +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LensFlare/New Scene.unity b/Assets/LensFlare/New Scene.unity new file mode 100644 index 0000000..d82a634 --- /dev/null +++ b/Assets/LensFlare/New Scene.unity @@ -0,0 +1,612 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!43 &349238463 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LensFlare (Directional Light) + serializedVersion: 10 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 6 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 4 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 1, z: 0} + - serializedVersion: 2 + firstByte: 12 + indexCount: 6 + topology: 0 + baseVertex: 0 + firstVertex: 4 + vertexCount: 4 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 1, z: 0} + - serializedVersion: 2 + firstByte: 24 + indexCount: 6 + topology: 0 + baseVertex: 0 + firstVertex: 8 + vertexCount: 4 + localAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 1, z: 0} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: [] + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 000001000200020003000000040005000600060007000400080009000a000a000b000800 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 12 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 12 + format: 0 + dimension: 4 + - stream: 0 + offset: 28 + format: 0 + dimension: 2 + - stream: 0 + offset: 36 + format: 0 + dimension: 4 + - stream: 0 + offset: 52 + format: 0 + dimension: 4 + - stream: 0 + offset: 68 + format: 0 + dimension: 4 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 1008 + _typelessdata: 000080bf000080bf000000000000803f0000803f0000803f00000000000000000000803f00000000000000000000803f0000803f0000000000004040000000000000803f0000803f0000404000002041000048420000803f000080bf000000000000803f0000803f0000803f000000000000803f0000803f00000000000000000000803f0000803f0000000000004040000000000000803f0000803f0000404000002041000048420000803f0000803f000000000000803f0000803f0000803f000000000000803f0000000000000000000000000000803f0000803f0000000000004040000000000000803f0000803f000040400000204100004842000080bf0000803f000000000000803f0000803f0000803f00000000000000000000000000000000000000000000803f0000803f0000000000004040000000000000803f0000803f000040400000204100004842000080bf000080bf000000000000803f0000803f0000803f00000000000000000000803f000000000000000000000040000000400000000000004040000000000000803f0000803f0000404000002041000048420000803f000080bf000000000000803f0000803f0000803f000000000000803f0000803f000000000000000000000040000000400000000000004040000000000000803f0000803f0000404000002041000048420000803f0000803f000000000000803f0000803f0000803f000000000000803f00000000000000000000000000000040000000400000000000004040000000000000803f0000803f000040400000204100004842000080bf0000803f000000000000803f0000803f0000803f000000000000000000000000000000000000000000000040000000400000000000004040000000000000803f0000803f000040400000204100004842000080bf000080bf000000000000803f0000803f0000803f00000000000000000000803f000000000000000000004040000040400000000000004040000000000000803f0000803f0000404000002041000048420000803f000080bf000000000000803f0000803f0000803f000000000000803f0000803f000000000000000000004040000040400000000000004040000000000000803f0000803f0000404000002041000048420000803f0000803f000000000000803f0000803f0000803f000000000000803f00000000000000000000000000004040000040400000000000004040000000000000803f0000803f000040400000204100004842000080bf0000803f000000000000803f0000803f0000803f000000000000000000000000000000000000000000004040000040400000000000004040000000000000803f0000803f000040400000204100004842 + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 1, y: 1, z: 1} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshMetrics[0]: 1 + m_MeshMetrics[1]: 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: +--- !u!1 &1426046382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1426046384} + - component: {fileID: 1426046383} + - component: {fileID: 1426046387} + - component: {fileID: 1426046386} + - component: {fileID: 1426046385} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!108 &1426046383 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426046382} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1426046384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426046382} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &1426046385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426046382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3cf420f1fcf2c7745b6f448d60827c0d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MeshRenderer: {fileID: 1426046386} + m_MeshFilter: {fileID: 1426046387} + m_Light: {fileID: 1426046383} + OcclusionRadius: 1 + NearFadeStartDistance: 1 + NearFadeEndDistance: 3 + FarFadeStartDistance: 10 + FarFadeEndDistance: 50 + Flares: + - RayPosition: 0 + Material: {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + Color: {r: 1, g: 1, b: 1, a: 0} + MultiplyByLightColor: 0 + Size: {x: 1, y: 1} + Rotation: 0 + AutoRotate: 0 + - RayPosition: 0 + Material: {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + Color: {r: 1, g: 1, b: 1, a: 0} + MultiplyByLightColor: 0 + Size: {x: 2, y: 2} + Rotation: 0 + AutoRotate: 0 + - RayPosition: 0 + Material: {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + Color: {r: 1, g: 1, b: 1, a: 0} + MultiplyByLightColor: 0 + Size: {x: 3, y: 3} + Rotation: 0 + AutoRotate: 0 +--- !u!23 &1426046386 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426046382} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + - {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + - {fileID: 2100000, guid: a2538de606c59c04f9b9a86fe0869e48, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1426046387 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426046382} + m_Mesh: {fileID: 349238463} +--- !u!1 &1662339406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1662339409} + - component: {fileID: 1662339408} + - component: {fileID: 1662339407} + - component: {fileID: 1662339410} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1662339407 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662339406} + m_Enabled: 1 +--- !u!20 &1662339408 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662339406} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1662339409 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662339406} + m_LocalRotation: {x: -0.050297532, y: 0.94344944, z: 0.2807056, w: 0.16904962} + m_LocalPosition: {x: -3.2475343, y: -3.2678928, z: 5.378398} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1662339410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1662339406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 diff --git a/Assets/LensFlare/New Scene.unity.meta b/Assets/LensFlare/New Scene.unity.meta new file mode 100644 index 0000000..bd14c01 --- /dev/null +++ b/Assets/LensFlare/New Scene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 10c4f70bad111ce40893bc4810bed116 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: |