initial commit

This commit is contained in:
cblech
2025-01-04 13:29:07 +01:00
commit 22f67f4347
124 changed files with 12157 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a6f99bf2d4ae49a4c82f5a916a642ee7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+42
View File
@@ -0,0 +1,42 @@
using UnityEditor;
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx.Editor
{
[CustomPropertyDrawer(typeof(Optional<>))]
public class OptionalDrawer : PropertyDrawer
{
private const float k_ToggleWidth = 18;
// =======================================================================
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
var valueProperty = property.FindPropertyRelative("value");
return EditorGUI.GetPropertyHeight(valueProperty);
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
var valueProperty = property.FindPropertyRelative("value");
var enabledProperty = property.FindPropertyRelative("enabled");
OnGui(position, label, enabledProperty, valueProperty);
}
public static void OnGui(Rect position, GUIContent label, SerializedProperty enabledProperty, SerializedProperty valueProperty)
{
position.width -= k_ToggleWidth;
using (new EditorGUI.DisabledGroupScope(!enabledProperty.boolValue))
EditorGUI.PropertyField(position, valueProperty, label, true);
int indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
var togglePos = new Rect(position.x + position.width + EditorGUIUtility.standardVerticalSpacing, position.y, k_ToggleWidth, EditorGUIUtility.singleLineHeight);
enabledProperty.boolValue = EditorGUI.Toggle(togglePos, GUIContent.none, enabledProperty.boolValue);
EditorGUI.indentLevel = indent;
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 7f5183bcac50faa4ca8eadb901bbd215
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Editor/OptionalDrawer.cs
uploadId: 678360
@@ -0,0 +1,18 @@
{
"name": "OutlineFx.Editor",
"rootNamespace": "",
"references": [
"GUID:bdbbf3324f8e871489bfc4305a67110a"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: cc8d4d28a11c62c439d34471170d3450
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Editor/OutlineFx.Editor.asmdef
uploadId: 678360
+48
View File
@@ -0,0 +1,48 @@
using UnityEditor;
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx.Editor
{
[CustomPropertyDrawer(typeof(OutlineFxFeature.SolidMask))]
public class SolidMaskDrawer : PropertyDrawer
{
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
var lines = 3;
if (property.isExpanded == false)
lines = 1;
return lines * EditorGUIUtility.singleLineHeight;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
var enabled = property.FindPropertyRelative(nameof(OutlineFxFeature.SolidMask._enabled));
var pattern = property.FindPropertyRelative(nameof(OutlineFxFeature.SolidMask._pattern));
var scale = property.FindPropertyRelative(nameof(OutlineFxFeature.SolidMask._scale));
var velocity = property.FindPropertyRelative(nameof(OutlineFxFeature.SolidMask._velocity));
var line = 0;
OptionalDrawer.OnGui(_fieldRect(line ++), label, enabled, pattern);
property.isExpanded = EditorGUI.Foldout(_fieldRect(line - 1), property.isExpanded, GUIContent.none, true);
if (property.isExpanded == false)
return;
EditorGUI.indentLevel ++;
using (new EditorGUI.DisabledGroupScope(!enabled.boolValue))
{
EditorGUI.PropertyField(_fieldRect(line ++), scale, true);
EditorGUI.PropertyField(_fieldRect(line ++), velocity, true);
}
EditorGUI.indentLevel --;
// -----------------------------------------------------------------------
Rect _fieldRect(int line)
{
return new Rect(position.x, position.y + line * EditorGUIUtility.singleLineHeight, position.width, EditorGUIUtility.singleLineHeight);
}
}
}
}
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 23f3aacd265c4e309d33c46d1253d4b9
timeCreated: 1694189677
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Editor/SolidMaskDrawer.cs
uploadId: 678360
+17
View File
@@ -0,0 +1,17 @@
{
"name": "OutlineFx",
"rootNamespace": "",
"references": [
"GUID:df380645f10b7bc4b97d4f5eb6303d95",
"GUID:15fc0a57446b3144c949da3e2b9737a9"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}
+14
View File
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: bdbbf3324f8e871489bfc4305a67110a
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/OutlineFx.asmdef
uploadId: 678360
Binary file not shown.
+14
View File
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 575eaab82c3c3ac469f6af1badd4e361
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Readme.pdf
uploadId: 678360
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 66a09bc715d6c8241bdb69d3b8dad04e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+60
View File
@@ -0,0 +1,60 @@
using System;
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
[Serializable]
public sealed class Optional<T>
{
[SerializeField]
internal bool enabled;
[SerializeField]
internal T value = default!;
public bool Enabled
{
get => enabled;
set => enabled = value;
}
public T Value
{
get => value;
set => this.value = value;
}
// =======================================================================
public Optional(bool enabled)
{
this.enabled = enabled;
}
public Optional(T value, bool enabled)
{
this.enabled = enabled;
this.value = value;
}
public T GetValue(T disabledValue)
{
return enabled ? value : disabledValue;
}
public T GetValueOrDefault()
{
return enabled ? value : default;
}
public static implicit operator bool(Optional<T> opt)
{
return opt.enabled;
}
public static implicit operator T(Optional<T> opt)
{
return opt.value;
}
}
}
+18
View File
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 718243a646830064cb47da777eb68934
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/Optional.cs
uploadId: 678360
+32
View File
@@ -0,0 +1,32 @@
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
[ExecuteAlways] [DisallowMultipleComponent]
public abstract class Outline : MonoBehaviour
{
internal Renderer _renderer;
public abstract Color Color {get; set; }
// =======================================================================
private void OnEnable()
{
_renderer = GetComponent<Renderer>();
}
private void OnWillRenderObject()
{
#if UNITY_EDITOR
if (Application.isEditor && Equals(_renderer, null) == false)
{
if (TryGetComponent<Renderer>(out _renderer) == false)
return;
}
#endif
OutlineFxFeature.Render(this);
}
}
}
+10
View File
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 46ca052234754909a86ce4897938622b
timeCreated: 1721240301
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/Outline.cs
uploadId: 678360
+20
View File
@@ -0,0 +1,20 @@
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
[DefaultExecutionOrder(10000)]
public class OutlineBlocker : Outline
{
private static Color s_color = new Color(0, 0, 0, 7f / 255f);
public override Color Color
{
get => new Color(0, 0, 0, 14f / 255f);
set
{
// pass
}
}
}
}
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: fe0edcb63acb478aadea1918b40e26b3
timeCreated: 1721238836
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/OutlineBlocker.cs
uploadId: 678360
+138
View File
@@ -0,0 +1,138 @@
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
public partial class OutlineFxFeature
{
private static readonly int s_Alpha = Shader.PropertyToID("_Alpha");
private static readonly int s_MainTex = Shader.PropertyToID("_MainTex");
private static readonly int s_Step = Shader.PropertyToID("_Step");
private static readonly int s_Color = Shader.PropertyToID("_Color");
private static readonly int s_Solid = Shader.PropertyToID("_Solid");
private static readonly int s_AlphaTex = Shader.PropertyToID("_AlphaTex");
private static readonly int s_AlphaTO = Shader.PropertyToID("_AlphaTO");
private class Pass : ScriptableRenderPass
{
public OutlineFxFeature _owner;
private FilteringSettings _filtering;
private RenderStateBlock _override;
private RenderTarget _buffer;
private RTHandle _output;
// =======================================================================
public void Init()
{
renderPassEvent = _owner._event;
_buffer = new RenderTarget().Allocate(nameof(_buffer));
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
// allocate resources
var cmd = CommandBufferPool.Get(nameof(OutlineFxFeature));
var desc = renderingData.cameraData.cameraTargetDescriptor;
desc.colorFormat = RenderTextureFormat.ARGB32;
_buffer.Get(cmd, desc);
if (_owner._outlineMat == null)
return;
_owner._outlineMat.SetFloat(s_Alpha, _owner._alphaCutout);
_owner._outlineMat.SetFloat(s_Solid, _owner._solid);
if (_owner._solidMask._enabled)
{
var sm = _owner._solidMask;
_owner._outlineMat.SetTexture(s_AlphaTex, sm._pattern);
var xPeriod = 1f / (sm._velocity.x / 1000f);
var yPeriod = 1f / (sm._velocity.y / 1000f);
var xOffset = sm._velocity.x == 0 ? 0 : (Time.unscaledTime % xPeriod) / xPeriod * sm._scale;
var yOffset = sm._velocity.y == 0 ? 0 : (Time.unscaledTime % yPeriod) / yPeriod * sm._scale;
var aspectTex = sm._pattern.width / (float)sm._pattern.height;
_owner._outlineMat.SetVector(s_AlphaTO, new Vector4(sm._scale * (Screen.width / (float)Screen.height) / aspectTex, sm._scale, xOffset, yOffset));
}
#if !UNITY_2022_1_OR_NEWER
if (_owner._output.Enabled == false)
_output = RTHandles.Alloc(renderingData.cameraData.renderer.cameraColorTarget);
#else
_output = renderingData.cameraData.renderer.cameraColorTargetHandle;
#endif
if (_owner._output.Enabled)
_output = _alloc(_owner._output.Value);
// render with layer mask
cmd.SetRenderTarget(_buffer.Handle.nameID);
cmd.ClearRenderTarget(false, true, Color.clear, 1f);
if (_owner._attachDepth)
{
#if !UNITY_2022_1_OR_NEWER
var depth = renderingData.cameraData.renderer.cameraDepthTarget == BuiltinRenderTextureType.CameraTarget
? renderingData.cameraData.renderer.cameraColorTarget
: renderingData.cameraData.renderer.cameraDepthTarget;
#else
var depth = renderingData.cameraData.renderer.cameraDepthTargetHandle;
#endif
cmd.SetRenderTarget(_buffer.Handle, depth);
}
else
{
cmd.SetRenderTarget(_buffer.Handle);
}
context.ExecuteCommandBuffer(cmd);
cmd.Clear();
foreach (var inst in _renderers)
{
if (inst == null)
continue;
cmd.SetGlobalTexture(s_MainTex, inst._renderer.sharedMaterial.mainTexture);
cmd.SetGlobalColor(s_Color, inst.Color);
cmd.DrawRenderer(inst._renderer, _owner._outlineMat, 0, 0);
}
_renderers.Clear();
cmd.SetGlobalVector(s_Step, _owner._step);
_blit(_buffer.Handle, _output, _owner._outlineMat, 1);
_execute();
// -----------------------------------------------------------------------
void _blit(RTHandle from, RTHandle to, Material mat, int pass = 0)
{
OutlineFxFeature._blit(cmd, from, to, mat, pass);
}
void _execute()
{
context.ExecuteCommandBuffer(cmd);
CommandBufferPool.Release(cmd);
}
}
public override void FrameCleanup(CommandBuffer cmd)
{
_buffer.Release(cmd);
#if !UNITY_2022_1_OR_NEWER
RTHandles.Release(_output);
#else
if (_owner._output.Enabled)
RTHandles.Release(_output);
#endif
}
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 7dd2cd9763dd1a1419cec5a4d92317ed
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/OutlineFx.Pass.cs
uploadId: 678360
+23
View File
@@ -0,0 +1,23 @@
using UnityEngine;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
[ExecuteAlways]
public class OutlineFx : Outline
{
public Color _color = Color.white;
public override Color Color
{
get => _color;
set => _color = value;
}
public float Alpha
{
get => _color.a;
set => _color.a = value;
}
}
}
+18
View File
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 4218d78ef2d54d0898b7514e121a781f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/OutlineFx.cs
uploadId: 678360
+301
View File
@@ -0,0 +1,301 @@
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
// OutlineFx © NullTale - https://x.com/NullTale/
namespace OutlineFx
{
public partial class OutlineFxFeature : ScriptableRendererFeature
{
private const string k_OutlineShader = "Hidden/OutlineFx/Main";
private static readonly int s_MainTexId = Shader.PropertyToID("_MainTex");
private static readonly int s_ColorId = Shader.PropertyToID("_Color");
private static List<ShaderTagId> k_ShaderTags;
private static Mesh k_ScreenMesh;
public static Mesh ScreenMesh => k_ScreenMesh;
public float Solid
{
get => _solid;
set => _solid = Mathf.Clamp01(value);
}
public float Thickness
{
get => _thickness;
set => _thickness = Mathf.Clamp01(value);
}
public bool Mask
{
get => _solidMask._enabled;
set
{
if (_solidMask._enabled == value)
return;
_solidMask._enabled = value;
if (_solidMask._enabled)
_outlineMat.EnableKeyword("ALPHA_MASK");
else
_outlineMat.DisableKeyword("ALPHA_MASK");
}
}
[SerializeField]
[Tooltip("When draw outline")]
private RenderPassEvent _event = RenderPassEvent.AfterRenderingPostProcessing;
[Range(0, 1)]
[SerializeField]
[Tooltip("Solid fill of outline")]
private float _solid;
[Range(0, 1f)]
[Tooltip("Outline thickness")]
public float _thickness = 0.001f;
[Range(0, 1)]
[SerializeField]
[Tooltip("Alpha cutout threshold for transparent objects")]
private float _alphaCutout = .5f;
[Tooltip("Edge filter")]
public Mode _mode = Mode.Hard;
[HideInInspector]
public Filter _filter = Filter.Box;
[HideInInspector]
public bool _attachDepth = true;
public Optional<string> _output = new Optional<string>("_globalTex", false);
public SolidMask _solidMask = new SolidMask();
[SerializeField] [HideInInspector]
public Shader _shader;
private Material _outlineMat;
private Vector4 _step;
private Pass _pass;
private static List<Outline> _renderers = new List<Outline>();
// =======================================================================
public class RenderTarget
{
public RTHandle Handle;
public int Id;
private bool _allocated;
// =======================================================================
public RenderTarget Allocate(RenderTexture rt, string name)
{
Handle = RTHandles.Alloc(rt, name);
Id = Shader.PropertyToID(name);
return this;
}
public RenderTarget Allocate(string name)
{
Handle = _alloc(name);
Id = Shader.PropertyToID(name);
return this;
}
public void Get(CommandBuffer cmd, in RenderTextureDescriptor desc)
{
_allocated = true;
cmd.GetTemporaryRT(Id, desc);
}
public void Release(CommandBuffer cmd)
{
if (_allocated == false)
return;
_allocated = false;
cmd.ReleaseTemporaryRT(Id);
}
}
[Serializable]
public class SolidMask
{
public bool _enabled;
public Texture2D _pattern;
public float _scale = 50f;
public Vector2 _velocity = new Vector2(0, 0);
}
public enum Mode
{
Hard,
Soft
}
public enum Filter
{
Cross,
Box
}
// =======================================================================
public override void Create()
{
_pass = new Pass() { _owner = this };
_pass.Init();
_renderers.Clear();
_validateContent();
_validateMaterial();
if (k_ScreenMesh == null)
{
// init triangle
k_ScreenMesh = new Mesh();
_initScreenMesh(k_ScreenMesh, Matrix4x4.identity);
}
if (k_ShaderTags == null)
{
k_ShaderTags = new List<ShaderTagId>(new[]
{
new ShaderTagId("SRPDefaultUnlit"),
new ShaderTagId("UniversalForward"),
new ShaderTagId("UniversalForwardOnly")
});
}
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
// in game or scene view only
if (renderingData.cameraData.cameraType != CameraType.Game && renderingData.cameraData.cameraType != CameraType.SceneView)
return;
if (_renderers.Count == 0)
return;
var aspect = Screen.width / (float)Screen.height;
_step.x = _thickness / aspect;
_step.y = _thickness;
_step *= 0.007f;
if (_mode == Mode.Soft)
_step *= 2f;
renderer.EnqueuePass(_pass);
}
public static void Render(Outline inst)
{
_renderers.Add(inst);
}
// =======================================================================
private void _validateMaterial()
{
_outlineMat = new Material(_shader);
switch (_mode)
{
case Mode.Soft:
_outlineMat.EnableKeyword("SOFT");
break;
case Mode.Hard:
_outlineMat.EnableKeyword("HARD");
break;
default:
throw new ArgumentOutOfRangeException();
}
switch (_filter)
{
case Filter.Cross:
_outlineMat.EnableKeyword("CROSS");
break;
case Filter.Box:
_outlineMat.EnableKeyword("BOX");
break;
default:
throw new ArgumentOutOfRangeException();
}
if (_solidMask._enabled)
{
_outlineMat.EnableKeyword("ALPHA_MASK");
}
}
private void _validateContent()
{
#if UNITY_EDITOR
if (_shader == null)
_shader = Shader.Find(k_OutlineShader);
if (_solidMask._pattern == null)
{
var dir = Path.GetDirectoryName(UnityEditor.AssetDatabase.GetAssetPath(_shader));
_solidMask._pattern = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>($"{dir}\\checker.png");
}
UnityEditor.EditorUtility.SetDirty(this);
#endif
}
private static void _initScreenMesh(Mesh mesh, Matrix4x4 mat)
{
mesh.vertices = _verts(0f);
mesh.uv = _texCoords();
mesh.triangles = new int[3] { 0, 1, 2 };
mesh.UploadMeshData(true);
// -----------------------------------------------------------------------
Vector3[] _verts(float z)
{
var r = new Vector3[3];
for (var i = 0; i < 3; i++)
{
var uv = new Vector2((i << 1) & 2, i & 2);
r[i] = mat.MultiplyPoint(new Vector3(uv.x * 2f - 1f, uv.y * 2f - 1f, z));
}
return r;
}
Vector2[] _texCoords()
{
var r = new Vector2[3];
for (var i = 0; i < 3; i++)
{
if (SystemInfo.graphicsUVStartsAtTop)
r[i] = new Vector2((i << 1) & 2, 1.0f - (i & 2));
else
r[i] = new Vector2((i << 1) & 2, i & 2);
}
return r;
}
}
private static void _blit(CommandBuffer cmd, RTHandle from, RTHandle to, Material mat, int pass = 0)
{
cmd.SetGlobalTexture(s_MainTexId, from.nameID);
cmd.SetRenderTarget(to.nameID);
cmd.DrawMesh(k_ScreenMesh, Matrix4x4.identity, mat, 0, pass);
}
private static RTHandle _alloc(string id)
{
return RTHandles.Alloc(id, name: id);
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 177ddeadd26a80641ad757c51fb7f5d1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/OutlineFxFeature.cs
uploadId: 678360
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6be9b4f584271394cb2119f347ca20ce
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

@@ -0,0 +1,196 @@
fileFormatVersion: 2
guid: 41acea03acbaebe4a9dc26dd8264449e
TextureImporter:
internalIDToNameTable:
- first:
213: 7482667652216324306
second: Square
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
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
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 4
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: 0
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 1
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
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: 2048
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: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Square
rect:
serializedVersion: 2
x: 0
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2d009a6b596c7d760800000000000000
internalID: 7482667652216324306
vertices: []
indices:
edges: []
weights: []
outline: []
physicsShape:
- - {x: -128, y: 128}
- {x: -128, y: -128}
- {x: 128, y: -128}
- {x: 128, y: 128}
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable:
Square: 7482667652216324306
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/Shaders/Checker.png
uploadId: 678360
+184
View File
@@ -0,0 +1,184 @@
Shader "Hidden/OutlineFx/Main"
{
SubShader
{
Pass // 0
{
name "Transparent"
Cull Off
ZWrite Off
ZTest LEqual
Blend SrcAlpha OneMinusSrcAlpha
HLSLPROGRAM
#include "Utils.hlsl"
#pragma vertex vert_mesh
#pragma fragment frag
sampler2D _MainTex;
float4 _Color;
float _Alpha;
// =======================================================================
float4 frag(fragIn i) : SV_Target
{
if (tex2D(_MainTex, i.uv).a < _Alpha)
discard;
return _Color;
}
ENDHLSL
}
Pass // 1
{
name "Outline"
Cull Off
ZWrite Off
ZTest Off
Blend SrcAlpha OneMinusSrcAlpha
HLSLPROGRAM
#include "Utils.hlsl"
#pragma vertex vert_screen
#pragma fragment frag
#pragma multi_compile_local BOX CROSS
#pragma multi_compile_local SOFT HARD
#pragma multi_compile_local _ ALPHA_MASK
#define BLUR_LENGTH 9
#define BLUR_LENGTH_HALF ((BLUR_LENGTH - 1) / 2)
static const float k_BlurWeights[BLUR_LENGTH] =
{
0.046995 * 2,
0.064759 * 2,
0.120985 * 2,
0.176033 * 2,
0.199471 * 2,
0.176033 * 2,
0.120985 * 2,
0.064759 * 2,
0.046995 * 2,
};
sampler2D _MainTex;
sampler2D _AlphaTex;
float4 _AlphaTO;
float2 _Step;
float _Solid;
// =======================================================================
float4 _sample_soft(float2 uv, in const float2 step)
{
float4 result = 0;
uv -= BLUR_LENGTH_HALF * step;
[unroll]
for (int n = 0; n < BLUR_LENGTH; n ++)
{
result += tex2D(_MainTex, uv) * k_BlurWeights[n];
uv += step;
}
return result;
}
float4 _sample_hard(float2 uv, in const float2 step)
{
float4 result = 0;
uv -= BLUR_LENGTH_HALF * step;
[unroll]
for (int n = 0; n < BLUR_LENGTH; n ++)
{
float4 sample = tex2D(_MainTex, uv);
result = max(sample, result);
uv += step;
}
return result;
}
float4 _sample(const float2 uv, in const float2 step)
{
#ifdef SOFT
return _sample_soft(uv, step);
#endif
#ifdef HARD
return _sample_hard(uv, step);
#endif
}
float4 frag(fragIn i) : SV_Target
{
float4 color = tex2D(_MainTex, i.uv);
if (color.a > .0)
{
#ifdef ALPHA_MASK
return float4(color.xyz, color.a * _Solid * tex2D(_AlphaTex, mad(i.uv, _AlphaTO.xy, _AlphaTO.zw)).a);
#endif
return float4(color.xyz, color.a * _Solid);
}
float4 result = 0;
#ifdef BOX
const float2 stepX = float2(_Step.x, 0);
const float2 stepY = float2(0, _Step.y);
float2 uv = i.uv - BLUR_LENGTH_HALF * stepX;
[unroll]
for (int n = 0; n < BLUR_LENGTH; n ++)
{
#ifdef SOFT
result += _sample(uv, stepY) * k_BlurWeights[n];
#endif
#ifdef HARD
result = max(result, _sample(uv, stepY));
#endif
uv += stepX;
}
#endif
#ifdef CROSS
result = (_sample(i.uv, _Step) + _sample(i.uv, float2(_Step.x, -_Step.y))) * .5f;
#endif
return result;
}
ENDHLSL
}
Pass // 2
{
name "Overlay"
Cull Off
ZWrite Off
ZTest Off
Blend SrcAlpha OneMinusSrcAlpha
HLSLPROGRAM
#include "Utils.hlsl"
#pragma vertex vert_screen
#pragma fragment frag
sampler2D _MainTex;
// =======================================================================
float4 frag(fragIn i) : SV_Target
{
return tex2D(_MainTex, i.uv);
}
ENDHLSL
}
}
}
@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 9a902e6d68fe8344890c5926c684e820
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/Shaders/Main.shader
uploadId: 678360
+41
View File
@@ -0,0 +1,41 @@
#ifndef OUTLINE_UTILS_INCLUDED
#define OUTLINE_UTILS_INCLUDED
#include "UnityCG.cginc"
struct vertIn
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct fragIn
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
};
fragIn vert_mesh(vertIn v)
{
fragIn o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fragIn vert_screen(vertIn v)
{
fragIn o;
o.vertex = v.vertex;
o.uv = v.uv;
return o;
}
float random(in const float2 uv)
{
return frac(sin(dot(uv, float2(12.9898, 78.233))) * 43758.5453123);
}
#endif
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 0cda35a27fcc461bb5a4ed317f358de3
ShaderIncludeImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Runtime/Shaders/Utils.hlsl
uploadId: 678360
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cb16a562405dc5d40bd31626f24027dd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b40f9589bc6576b4d945d28d6adefa58
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+93
View File
@@ -0,0 +1,93 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Cat
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -475568472, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.083333336
value: {fileID: 1413511790, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.16666667
value: {fileID: -2072969470, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.25
value: {fileID: -528985555, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.33333334
value: {fileID: -1901834471, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.41666666
value: {fileID: -216749617, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.5
value: {fileID: -126871508, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.5833333
value: {fileID: 1673119960, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 12
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -475568472, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1413511790, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -2072969470, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -528985555, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -1901834471, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -216749617, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -126871508, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1673119960, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.6666666
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 0afe78020b253344b9ba42360154b480
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Media/Cat.anim
uploadId: 678360
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,72 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1102 &-6278617404640227802
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Cat
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 0afe78020b253344b9ba42360154b480, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Cat_Runner
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 8353364410599467548}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1107 &8353364410599467548
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -6278617404640227802}
m_Position: {x: 260, y: 110, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -6278617404640227802}
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 03151cdf8dad67d4d85f579d9680b76b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Media/Cat_Runner.controller
uploadId: 678360
@@ -0,0 +1,72 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Cat_Watcher
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 3976029286537063673}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1102 &3133060529661563886
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: licking
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: d6fc75b7cb4c648449261dfdabb36852, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &3976029286537063673
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 3133060529661563886}
m_Position: {x: 230, y: 60, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 3133060529661563886}
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 2b68ddf758995ea4c96ac35ed9ca5d98
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Media/Cat_Watcher.controller
uploadId: 678360
+117
View File
@@ -0,0 +1,117 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: licking
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- serializedVersion: 2
curve:
- time: 0
value: {fileID: -1856009930, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.083333336
value: {fileID: 1569468314, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.16666667
value: {fileID: 1186422308, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.25
value: {fileID: 1983154614, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.33333334
value: {fileID: 1016943977, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.41666666
value: {fileID: 1724790039, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.5
value: {fileID: 54098592, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.5833333
value: {fileID: -1409216319, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.6666667
value: {fileID: -317030973, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.75
value: {fileID: -1280361783, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.8333333
value: {fileID: 2015265219, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 0.9166667
value: {fileID: 865666256, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 1
value: {fileID: -1289090441, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 1.0833334
value: {fileID: -383363482, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 1.1666666
value: {fileID: -1640822110, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- time: 1.25
value: {fileID: -79935080, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
flags: 2
m_SampleRate: 12
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping:
- {fileID: -1856009930, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1569468314, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1186422308, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1983154614, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1016943977, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 1724790039, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 54098592, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -1409216319, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -317030973, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -1280361783, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 2015265219, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: 865666256, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -1289090441, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -383363482, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -1640822110, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
- {fileID: -79935080, guid: 900a9e6e6260cc84e8e280b5eb4ef35b, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.3333334
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: d6fc75b7cb4c648449261dfdabb36852
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Media/licking.anim
uploadId: 678360
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: e9cb10643123927438b62cce54bd0ee2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/OutlineFx.unity
uploadId: 678360
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eee323dd5b9817840b7b2d5282546521
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+136
View File
@@ -0,0 +1,136 @@
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
m_Name: UrpOutline
m_EditorClassIdentifier:
k_AssetVersion: 12
k_AssetPreviousVersion: 12
m_RendererType: 1
m_RendererData: {fileID: 0}
m_RendererDataList:
- {fileID: 11400000, guid: 802a5f71fb0aca846b4f3768a143d477, type: 2}
m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0
m_RequireOpaqueTexture: 0
m_OpaqueDownsampling: 1
m_SupportsTerrainHoles: 1
m_SupportsHDR: 1
m_HDRColorBufferPrecision: 0
m_MSAA: 1
m_RenderScale: 1
m_UpscalingFilter: 0
m_FsrOverrideSharpness: 0
m_FsrSharpness: 0.92
m_EnableLODCrossFade: 1
m_LODCrossFadeDitheringType: 1
m_ShEvalMode: 0
m_LightProbeSystem: 0
m_ProbeVolumeMemoryBudget: 1024
m_ProbeVolumeBlendingMemoryBudget: 256
m_SupportProbeVolumeGPUStreaming: 0
m_SupportProbeVolumeDiskStreaming: 0
m_SupportProbeVolumeScenarios: 0
m_SupportProbeVolumeScenarioBlending: 0
m_ProbeVolumeSHBands: 1
m_MainLightRenderingMode: 1
m_MainLightShadowsSupported: 1
m_MainLightShadowmapResolution: 2048
m_AdditionalLightsRenderingMode: 1
m_AdditionalLightsPerObjectLimit: 4
m_AdditionalLightShadowsSupported: 0
m_AdditionalLightsShadowmapResolution: 2048
m_AdditionalLightsShadowResolutionTierLow: 256
m_AdditionalLightsShadowResolutionTierMedium: 512
m_AdditionalLightsShadowResolutionTierHigh: 1024
m_ReflectionProbeBlending: 0
m_ReflectionProbeBoxProjection: 0
m_ShadowDistance: 50
m_ShadowCascadeCount: 1
m_Cascade2Split: 0.25
m_Cascade3Split: {x: 0.1, y: 0.3}
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
m_CascadeBorder: 0.2
m_ShadowDepthBias: 1
m_ShadowNormalBias: 1
m_AnyShadowsSupported: 1
m_SoftShadowsSupported: 0
m_ConservativeEnclosingSphere: 1
m_NumIterationsEnclosingSphere: 64
m_SoftShadowQuality: 2
m_AdditionalLightsCookieResolution: 2048
m_AdditionalLightsCookieFormat: 3
m_UseSRPBatcher: 1
m_SupportsDynamicBatching: 0
m_MixedLightingSupported: 1
m_SupportsLightCookies: 1
m_SupportsLightLayers: 0
m_DebugLevel: 0
m_StoreActionsOptimization: 0
m_UseAdaptivePerformance: 1
m_ColorGradingMode: 0
m_ColorGradingLutSize: 32
m_AllowPostProcessAlphaOutput: 0
m_UseFastSRGBLinearConversion: 0
m_SupportDataDrivenLensFlare: 1
m_SupportScreenSpaceLensFlare: 1
m_GPUResidentDrawerMode: 0
m_SmallMeshScreenPercentage: 0
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
m_ShadowType: 1
m_LocalShadowsSupported: 0
m_LocalShadowsAtlasResolution: 256
m_MaxPixelLights: 0
m_ShadowAtlasResolution: 256
m_VolumeFrameworkUpdateMode: 0
m_VolumeProfile: {fileID: 0}
apvScenesData:
obsoleteSceneBounds:
m_Keys: []
m_Values: []
obsoleteHasProbeVolumes:
m_Keys: []
m_Values:
m_PrefilteringModeMainLightShadows: 1
m_PrefilteringModeAdditionalLight: 4
m_PrefilteringModeAdditionalLightShadows: 1
m_PrefilterXRKeywords: 0
m_PrefilteringModeForwardPlus: 1
m_PrefilteringModeDeferredRendering: 1
m_PrefilteringModeScreenSpaceOcclusion: 1
m_PrefilterDebugKeywords: 0
m_PrefilterWriteRenderingLayers: 0
m_PrefilterHDROutput: 0
m_PrefilterAlphaOutput: 0
m_PrefilterSSAODepthNormals: 0
m_PrefilterSSAOSourceDepthLow: 0
m_PrefilterSSAOSourceDepthMedium: 0
m_PrefilterSSAOSourceDepthHigh: 0
m_PrefilterSSAOInterleaved: 0
m_PrefilterSSAOBlueNoise: 0
m_PrefilterSSAOSampleCountLow: 0
m_PrefilterSSAOSampleCountMedium: 0
m_PrefilterSSAOSampleCountHigh: 0
m_PrefilterDBufferMRT1: 0
m_PrefilterDBufferMRT2: 0
m_PrefilterDBufferMRT3: 0
m_PrefilterSoftShadowsQualityLow: 0
m_PrefilterSoftShadowsQualityMedium: 0
m_PrefilterSoftShadowsQualityHigh: 0
m_PrefilterSoftShadows: 0
m_PrefilterScreenCoord: 0
m_PrefilterNativeRenderPass: 0
m_PrefilterUseLegacyLightmaps: 0
m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0
m_Textures:
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: cf2dc93a238bcc745a7352dccd8bb1d0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Urp/UrpOutline.asset
uploadId: 678360
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-5037661925718295535
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: 177ddeadd26a80641ad757c51fb7f5d1, type: 3}
m_Name: OutlineFx
m_EditorClassIdentifier:
m_Active: 1
_event: 600
_solid: 0
_thickness: 0.23439527
_alphaCutout: 0.5
_mode: 0
_filter: 1
_attachDepth: 1
_output:
enabled: 0
value: _globalTex
_solidMask:
_enabled: 1
_pattern: {fileID: 2800000, guid: 41acea03acbaebe4a9dc26dd8264449e, type: 3}
_scale: 50
_velocity: {x: 0, y: -50}
_shader: {fileID: 4800000, guid: 9a902e6d68fe8344890c5926c684e820, type: 3}
--- !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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
m_Name: UrpOutline_Renderer
m_EditorClassIdentifier:
debugShaders:
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3}
probeVolumeResources:
probeVolumeDebugShader: {fileID: 0}
probeVolumeFragmentationDebugShader: {fileID: 0}
probeVolumeOffsetDebugShader: {fileID: 0}
probeVolumeSamplingDebugShader: {fileID: 0}
probeSamplingDebugMesh: {fileID: 0}
probeSamplingDebugTexture: {fileID: 0}
probeVolumeBlendStatesCS: {fileID: 0}
m_RendererFeatures:
- {fileID: -5037661925718295535}
m_RendererFeatureMap: 11fc0c532ba116ba
m_UseNativeRenderPass: 0
xrSystemData: {fileID: 0}
postProcessData: {fileID: 0}
m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_TransparentLayerMask:
serializedVersion: 2
m_Bits: 4294967295
m_DefaultStencilState:
overrideStencilState: 0
stencilReference: 0
stencilCompareFunction: 8
passOperation: 2
failOperation: 0
zFailOperation: 0
m_ShadowTransparentReceive: 1
m_RenderingMode: 0
m_DepthPrimingMode: 0
m_CopyDepthMode: 1
m_DepthAttachmentFormat: 0
m_DepthTextureFormat: 0
m_AccurateGbufferNormals: 0
m_IntermediateTextureMode: 1
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 802a5f71fb0aca846b4f3768a143d477
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/Samples/Urp/UrpOutline_Renderer.asset
uploadId: 678360
+25
View File
@@ -0,0 +1,25 @@
{
"name": "www.nulltale.outlinefx",
"displayName": "OutlineFx",
"version": "1.1.0",
"unity": "2021.3",
"description": "Simplified Outline for Unity Urp",
"documentationUrl": "https://github.com/NullTale/OutlineFx",
"licensesUrl": "https://github.com/NullTale/OutlineFx/blob/master/LICENSE.md",
"author": {
"name": "NullTale",
"email": "nulltale@gmail.com",
"url": "https://github.com/NullTale"
},
"dependencies": {
"com.unity.render-pipelines.universal": "12.1.11"
},
"hideInEditor": false,
"samples": [
{
"displayName": "Samples",
"description": "Contains sample scene",
"path": "Samples~/"
}
]
}
+14
View File
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 9f654c428279ba14dab567269d85e523
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 290431
packageName: Outline 2D/3D
packageVersion: 1.0
assetPath: Assets/Outline/package.json
uploadId: 678360