From 22891bf59032ba88262824255a706d652031384b Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 10 Mar 2022 14:07:40 +0800 Subject: * move folder --- Assets/Scripts/Unit/LensEffect/LensEffectBase.cs | 111 --------------------- .../Scripts/Unit/LensEffect/LensEffectBase.cs.meta | 11 -- .../Scripts/Unit/LensEffect/LensEffect_BlurRim.cs | 86 ---------------- .../Unit/LensEffect/LensEffect_BlurRim.cs.meta | 11 -- Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs | 41 -------- .../Unit/LensEffect/LensEffect_Buzz.cs.meta | 11 -- Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs | 94 ----------------- .../Unit/LensEffect/LensEffect_Dash.cs.meta | 11 -- .../Scripts/Unit/LensEffect/LensEffect_Glitch.cs | 18 ---- .../Unit/LensEffect/LensEffect_Glitch.cs.meta | 11 -- .../Unit/LensEffect/LensEffect_MotionBlur.cs | 69 ------------- .../Unit/LensEffect/LensEffect_MotionBlur.cs.meta | 11 -- Assets/Scripts/Unit/LensEffect/RendererProxy.cs | 33 ------ .../Scripts/Unit/LensEffect/RendererProxy.cs.meta | 11 -- 14 files changed, 529 deletions(-) delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffectBase.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/RendererProxy.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/RendererProxy.cs.meta (limited to 'Assets/Scripts/Unit/LensEffect') diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs deleted file mode 100644 index 94e5f6a7..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -public class MaterialEntry -{ - public string shader; - public Material material; -} - -// unit 镜头效果,和image effect的区别在于不光是后处理 -public abstract class LensEffectBase -{ - public enum EStage - { - BeforeIterate, // 迭代之前 - Iterate, // 迭代renderer - AfterIterate, // 迭代之后 - FinishRender, // 渲染角色之后(所有lens effect结束) - } - - public abstract ERenderingEvent renderingEvents { get; } - - protected static Dictionary> m_MaterailPool = new Dictionary>(); - - private List m_InUseMaterials = new List(); - - #region upvalues - public BodyPartRenderer curBodypartRenderer; - public UnitController owner; - #endregion - - private static MaterialEntry ClaimMaterial(string shader) - { - List mats; - if (m_MaterailPool.TryGetValue(shader, out mats) && mats.Count > 0) - { - MaterialEntry me = mats[mats.Count - 1]; - mats.RemoveAt(mats.Count - 1); - return me; - } - Material mat = new Material(Shader.Find(shader)); - MaterialEntry entry = new MaterialEntry(); - entry.material = mat; - entry.shader = shader; - return entry; - } - - private static void ReleaseMaterial(MaterialEntry entry) - { - List mats; - if (!m_MaterailPool.TryGetValue(entry.shader, out mats)) - { - mats = new List(); - m_MaterailPool.Add(entry.shader, mats); - } - mats.Add(entry); - } - - protected MaterialEntry GetTempMaterial(string shader) - { - MaterialEntry entry = ClaimMaterial(shader); - m_InUseMaterials.Add(entry); - return entry; - } - - protected void ReleaseAllInUsedMaterials() - { - for(int i = 0; i < m_InUseMaterials.Count; ++i) - { - ReleaseMaterial(m_InUseMaterials[i]); - } - m_InUseMaterials.Clear(); - } - - public virtual void BeforeDepthTexture(EStage stage, CommandBuffer cb) { } - public virtual void AfterDepthTexture(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeDepthNormalsTexture(EStage stage, CommandBuffer cb) { } - public virtual void AfterDepthNormalsTexture(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeForwardOpaque(EStage stage, CommandBuffer cb) { } - public virtual void AfterForwardOpaque(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeImageEffectsOpaque(EStage stage, CommandBuffer cb) { } - public virtual void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeSkybox(EStage stage, CommandBuffer cb) { } - public virtual void AfterSkybox(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeForwardAlpha(EStage stage, CommandBuffer cb) { } - public virtual void AfterForwardAlpha(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeImageEffects(EStage stage, CommandBuffer cb) { } - public virtual void AfterImageEffects(EStage stage, CommandBuffer cb) { } - - public virtual void BeforeEverything(EStage stage, CommandBuffer cb) { } - public virtual void AfterEverything(EStage stage, CommandBuffer cb) { } - - public virtual bool CanDestroy() { return false; } - - public virtual void OnDestroy() { } - - // 角色渲染完毕 - public virtual void OnRenderFinish() - { - ReleaseAllInUsedMaterials(); - } - -} \ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta deleted file mode 100644 index d0d0d81b..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 548560041d20266478078df50edab4e9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs deleted file mode 100644 index db0c1956..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -public class LensEffect_BlurRim : LensEffectBase -{ - public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardOpaque; - - Color rimColor; - int tempID; - - public LensEffect_BlurRim(Color color) : base() - { - rimColor = color; - tempID = Shader.PropertyToID("_BlurRim_RT0"); - } - - public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) - { - if (stage == EStage.BeforeIterate) - { - Before(cb); - } - else if (stage == EStage.Iterate) - { - Iterate(cb); - } - else if (stage == EStage.AfterIterate) - { - After(cb); - } - else if (stage == EStage.FinishRender) - { - } - } - - void Before(CommandBuffer cb) - { - cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear); - cb.SetRenderTarget(tempID); - cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); - } - - void Iterate(CommandBuffer cb) - { - Matrix4x4 obj2Wod = Matrix4x4.identity; - int subMeshCount = 0; - if (curBodypartRenderer.renderer is SkinnedMeshRenderer) - { - SkinnedMeshRenderer smr = curBodypartRenderer.renderer as SkinnedMeshRenderer; - Vector3 pos = smr.rootBone.transform.position; - Quaternion rot = smr.rootBone.transform.rotation; - obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot); - obj2Wod = Matrix4x4.Translate(new Vector3(1, 0, 0)) * obj2Wod; - subMeshCount = smr.sharedMesh.subMeshCount; - } - else if (curBodypartRenderer.renderer is MeshRenderer) - { - obj2Wod = curBodypartRenderer.renderer.transform.localToWorldMatrix; - obj2Wod = Matrix4x4.Translate(new Vector3(1, 0, 0)) * obj2Wod; - subMeshCount = curBodypartRenderer.renderer.GetComponent().sharedMesh.subMeshCount; - } - - for (int i = 0; i < subMeshCount; ++i) - { - MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); - mat.material.SetColor("_Color", rimColor); - mat.material.SetMatrix("_ObjectToWorld", obj2Wod); - mat.material.SetTexture("_MainTex", curBodypartRenderer.renderer.sharedMaterial.GetTexture("_MainTex")); - cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i); - } - } - - void After(CommandBuffer cb) - { - MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.Blur].name); - - Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound); - blur.material.SetVector("_UnitTileOffset", tileOffset); - - cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material); - cb.ReleaseTemporaryRT(tempID); - } - -} \ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs.meta deleted file mode 100644 index 3a2e02ef..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_BlurRim.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f49dbf9002764be4aa6ca79b78052d7a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs deleted file mode 100644 index 252efc6e..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -// 蜂鸣 -public class LensEffect_Buzz : LensEffectBase -{ - public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardAlpha; - - public LensEffect_Buzz() : base() - { - - } - - public override void AfterForwardAlpha(EStage stage, CommandBuffer cb) - { - if (stage == EStage.BeforeIterate) - { - Before(cb); - } - else if (stage == EStage.AfterIterate) - { - After(cb); - } - } - - void Before(CommandBuffer cb) - { - MaterialEntry buzz = GetTempMaterial(StaticDefine.shaders[EShader.Buzz].name); - - cb.SetGlobalTexture("_UnitDepthTexture", owner.unitPreprocessing.unitDepthTexture); - cb.Blit(BuiltinRenderTextureType.CameraTarget, BuiltinRenderTextureType.CameraTarget, buzz.material); - } - - void After(CommandBuffer cb) - { - - } - -} \ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta deleted file mode 100644 index 24b527a2..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d76bd4e3298fc574e9f90efa626f6e17 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs deleted file mode 100644 index d5d368d0..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -public class LensEffect_Dash : LensEffectBase -{ - public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardOpaque; - - Color rimColor; - int tempID; - float lifeTime; - UnitSnapshot snapshot; - TRS trs; - float angle; - - float curTime = 0; - - public LensEffect_Dash(Color color, float lifeTime, float angle, UnitSnapshotInfo snapshot) : base() - { - rimColor = color; - tempID = Shader.PropertyToID("RT_Dash"); - this.lifeTime = lifeTime; - trs = snapshot.trs; - this.snapshot = UnitManager.Instance.ClaimSnapshotSolo(snapshot); - this.angle = angle; - } - - public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) - { - if (stage == EStage.BeforeIterate) - { - Before(cb); - } - else if (stage == EStage.AfterIterate) - { - After(cb); - } - else if (stage == EStage.FinishRender) - { - } - } - - void Before(CommandBuffer cb) - { - cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear); - cb.SetRenderTarget(tempID); - cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); - - // renderer - snapshot.transform.position = trs.position; - snapshot.transform.rotation = trs.rotation; - snapshot.transform.localScale = trs.scale; - - Matrix4x4 obj2Wod = Matrix4x4.identity; - SkinnedMeshRenderer smr = snapshot.renderers[0] as SkinnedMeshRenderer; - Vector3 pos = smr.rootBone.transform.position; - Quaternion rot = smr.rootBone.transform.rotation; - obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot); - - MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); - mat.material.SetColor("_Color", rimColor); - mat.material.SetMatrix("_ObjectToWorld", obj2Wod); - mat.material.SetTexture("_MainTex", snapshot.renderers[0].sharedMaterial.GetTexture("_MainTex")); - - cb.DrawRenderer(snapshot.renderers[0], mat.material); - } - - void After(CommandBuffer cb) - { - curTime += Time.deltaTime; - - MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.MotionBlur].name); - - Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, trs.position, 6); - blur.material.SetVector("_UnitTileOffset", tileOffset); - blur.material.SetFloat("_Angle", angle); - blur.material.SetFloat("_AlphaMultiplier", Mathf.Clamp(1 - curTime / lifeTime, 0, 1)); - - cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material); - cb.ReleaseTemporaryRT(tempID); - } - - public override bool CanDestroy() - { - return curTime > lifeTime; - } - - public override void OnDestroy() - { - UnitManager.Instance.ReleaseSnapshot(ref snapshot); - } - -} \ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta deleted file mode 100644 index f0c4f6ab..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3fac41ebc7706eb4abec04ae44602464 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs deleted file mode 100644 index 00763a37..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class LensEffect_Glitch : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta deleted file mode 100644 index 88e5b0de..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 48bd0d7bffad03a44a281ccb6f21f188 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs deleted file mode 100644 index 371186d0..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -public class LensEffect_MotionBlur : LensEffectBase -{ - int tempID; - - public LensEffect_MotionBlur() - { - } - - public override ERenderingEvent renderingEvents => ERenderingEvent.AfterImageEffectsOpaque; - - public override void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb) - { - if (stage == EStage.BeforeIterate) - { - tempID = Shader.PropertyToID("_Temp1"); - - cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear); - cb.SetRenderTarget(tempID); - cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); - } - else if(stage == EStage.Iterate) - { - Matrix4x4 obj2Wod = Matrix4x4.identity; - int subMeshCount = 0; - if (curBodypartRenderer.renderer is SkinnedMeshRenderer) - { - SkinnedMeshRenderer smr = curBodypartRenderer.renderer as SkinnedMeshRenderer; - Vector3 pos = smr.rootBone.transform.position; - Quaternion rot = smr.rootBone.transform.rotation; - obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot); - subMeshCount = smr.sharedMesh.subMeshCount; - } - else if (curBodypartRenderer.renderer is MeshRenderer) - { - obj2Wod = curBodypartRenderer.renderer.transform.localToWorldMatrix; - subMeshCount = curBodypartRenderer.renderer.GetComponent().sharedMesh.subMeshCount; - } - - for (int i = 0; i < subMeshCount; ++i) - { - MaterialEntry mat = GetTempMaterial(StaticDefine.shaders[EShader.SolidColor].name); - mat.material.SetColor("_Color", Color.red); - mat.material.SetMatrix("_ObjectToWorld", obj2Wod); - - cb.DrawRenderer(curBodypartRenderer.renderer, mat.material, i); - } - } - else if(stage == EStage.AfterIterate) - { - MaterialEntry blur = GetTempMaterial(StaticDefine.shaders[EShader.Blur].name); - - Vector4 tileOffset = RenderingUtility.GetTillingOffset(MainCamera.Instance.camera, owner.center, owner.unitDetail.snapshotBound); - blur.material.SetVector("_UnitTileOffset", tileOffset); - - cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material); - tempID = Shader.PropertyToID("_Temp1"); - cb.ReleaseTemporaryRT(tempID); - } - else if(stage == EStage.FinishRender) - { - } - } - -} \ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta deleted file mode 100644 index 364e3d30..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 499c4e25bc0f4d641b99f688e91c495f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/RendererProxy.cs b/Assets/Scripts/Unit/LensEffect/RendererProxy.cs deleted file mode 100644 index 17d8d611..00000000 --- a/Assets/Scripts/Unit/LensEffect/RendererProxy.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -[RequireComponent(typeof(Renderer))] -public class RendererProxy : MonoBehaviour -{ - public delegate void OnWillRenderObjectHandler(BodyPartRenderer renderer); - public OnWillRenderObjectHandler onWillRenderObject; - - public delegate void OnRenderObjectHandler(BodyPartRenderer renderer); - public OnRenderObjectHandler onRenderObject; - - BodyPartRenderer bodyPartRenderer; - - public void Initialize(BodyPartRenderer renderer) - { - bodyPartRenderer = renderer; - } - - void OnWillRenderObject() - { - if(onWillRenderObject != null) - onWillRenderObject(bodyPartRenderer); - } - - void OnRenderObject() - { - if(onRenderObject != null) - onRenderObject(bodyPartRenderer); - } - -} diff --git a/Assets/Scripts/Unit/LensEffect/RendererProxy.cs.meta b/Assets/Scripts/Unit/LensEffect/RendererProxy.cs.meta deleted file mode 100644 index 5f8c904e..00000000 --- a/Assets/Scripts/Unit/LensEffect/RendererProxy.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 81836ced17364c94d8130f6eeb2bf115 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -- cgit v1.1-26-g67d0