mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-17 17:34:35 +08:00
stash
This commit is contained in:
parent
414ead5134
commit
76574124ca
@ -46,7 +46,7 @@ namespace DCFApixels
|
||||
#region Mesh //TODO потестить
|
||||
[IN(LINE)]
|
||||
public DrawHandler Mesh<TMat>(Mesh mesh, Vector3 position, Quaternion rotation, Vector3 size)
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
return Gizmo(new MeshGizmo<TMat>(mesh, position, rotation, size));
|
||||
}
|
||||
@ -81,7 +81,7 @@ namespace DCFApixels
|
||||
}
|
||||
}
|
||||
private readonly struct MeshGizmo<TMat> : IGizmo<MeshGizmo<TMat>>
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public readonly Mesh Mesh;
|
||||
public readonly Quaternion Rotation;
|
||||
@ -116,7 +116,7 @@ namespace DCFApixels
|
||||
[IN(LINE)]
|
||||
public DrawHandler Mesh<TMesh, TMat>(Vector3 position, Quaternion rotation, Vector3 size)
|
||||
where TMesh : struct, IStaticMesh
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
return Gizmo(new InstancingMeshGizmo<TMesh, TMat>(position, rotation, size));
|
||||
}
|
||||
@ -153,7 +153,7 @@ namespace DCFApixels
|
||||
}
|
||||
private readonly struct InstancingMeshGizmo<TMesh, TMat> : IGizmo<InstancingMeshGizmo<TMesh, TMat>>
|
||||
where TMesh : struct, IStaticMesh
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public readonly Quaternion Rotation;
|
||||
public readonly Vector3 Position;
|
||||
@ -184,17 +184,17 @@ namespace DCFApixels
|
||||
#region Line
|
||||
[IN(LINE)]
|
||||
public DrawHandler Line<TMat>(Vector3 start, Vector3 end)
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
return Gizmo(new WireLineGizmo<TMat>(start, end));
|
||||
}
|
||||
[IN(LINE)]
|
||||
public DrawHandler Line(Vector3 start, Vector3 end)
|
||||
{
|
||||
return Gizmo(new WireLineGizmo<LineMat>(start, end));
|
||||
return Gizmo(new WireLineGizmo<UnlitMat>(start, end));
|
||||
}
|
||||
private readonly struct WireLineGizmo<TMat> : IGizmo<WireLineGizmo<TMat>>
|
||||
where TMat : struct, IStaticMaterial
|
||||
where TMat : struct, IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public readonly Vector3 Start;
|
||||
public readonly Vector3 End;
|
||||
@ -256,7 +256,7 @@ namespace DCFApixels
|
||||
}
|
||||
}
|
||||
|
||||
private readonly IStaticMaterial _material;
|
||||
private readonly IStaticMaterial_InstancedProcedural _material;
|
||||
|
||||
private int _buffersLength = 0;
|
||||
private PinnedArray<Matrix4x4> _matrices;
|
||||
@ -271,7 +271,7 @@ namespace DCFApixels
|
||||
public virtual int ExecuteOrder => _material.GetExecuteOrder();
|
||||
public virtual bool IsStaticRender => true;
|
||||
|
||||
public MeshRendererBase(IStaticMaterial material)
|
||||
public MeshRendererBase(IStaticMaterial_InstancedProcedural material)
|
||||
{
|
||||
_materialPropertyBlock = new MaterialPropertyBlock();
|
||||
_material = material;
|
||||
@ -316,7 +316,7 @@ namespace DCFApixels
|
||||
}
|
||||
public void Render(CommandBuffer cb)
|
||||
{
|
||||
Material material = _material.GetMaterial_SupportCumputeShaders();
|
||||
Material material = _material.GetMaterial_InstancedProcedural();
|
||||
var items = new GizmosList<UnmanagedGizmoData>(_gizmos.Array, _prepareCount).As<GizmoData>().Items;
|
||||
_materialPropertyBlock.Clear();
|
||||
_jobHandle.Complete();
|
||||
@ -340,44 +340,46 @@ namespace DCFApixels
|
||||
public readonly Vector3 Position;
|
||||
public readonly Vector3 Size;
|
||||
}
|
||||
private struct DrawData
|
||||
{
|
||||
public Matrix4x4 Matrix;
|
||||
public Color Color;
|
||||
}
|
||||
private struct PrepareJob : IJobParallelFor
|
||||
{
|
||||
[NativeDisableUnsafePtrRestriction]
|
||||
public Gizmo<GizmoData>* Items;
|
||||
[NativeDisableUnsafePtrRestriction]
|
||||
public Matrix4x4* ResultMatrices;
|
||||
[NativeDisableUnsafePtrRestriction]
|
||||
public Vector4* ResultColors;
|
||||
public DrawData* ResultData;
|
||||
public void Execute(int index)
|
||||
{
|
||||
ref readonly var item = ref Items[index];
|
||||
//if (item.IsSwaped == 0) { return; }
|
||||
ResultMatrices[index] = Matrix4x4.TRS(item.Value.Position, item.Value.Rotation, item.Value.Size);
|
||||
ResultColors[index] = item.Color;
|
||||
(ResultData + index)->Matrix = Matrix4x4.TRS(item.Value.Position, item.Value.Rotation, item.Value.Size);
|
||||
(ResultData + index)->Color = item.Color;
|
||||
}
|
||||
}
|
||||
|
||||
private readonly IStaticMesh _mesh;
|
||||
private readonly IStaticMaterial _material;
|
||||
|
||||
private readonly IStaticMaterial_InstancedProcedural _material;
|
||||
private readonly MaterialPropertyBlock _materialPropertyBlock;
|
||||
private GraphicsBuffer _graphicsBuffer;
|
||||
|
||||
private int _buffersLength = 0;
|
||||
private PinnedArray<Matrix4x4> _matrices;
|
||||
private PinnedArray<Vector4> _colors;
|
||||
private PinnedArray<DrawData> _drawDatas;
|
||||
private PinnedArray<Gizmo<GizmoData>> _gizmos;
|
||||
|
||||
private JobHandle _jobHandle;
|
||||
private int _prepareCount = 0;
|
||||
|
||||
public InstancingMeshRendererBase(IStaticMesh mesh, IStaticMaterial material)
|
||||
private readonly bool _enableInstancing;
|
||||
|
||||
public InstancingMeshRendererBase(IStaticMesh mesh, IStaticMaterial_InstancedProcedural material)
|
||||
{
|
||||
_mesh = mesh;
|
||||
_material = material;
|
||||
_materialPropertyBlock = new MaterialPropertyBlock();
|
||||
|
||||
_matrices = PinnedArray<Matrix4x4>.Pin(DummyArray<Matrix4x4>.Get());
|
||||
_colors = PinnedArray<Vector4>.Pin(DummyArray<Vector4>.Get());
|
||||
_drawDatas = PinnedArray<DrawData>.Pin(DummyArray<DrawData>.Get());
|
||||
_enableInstancing = IsSupportsComputeShaders && _material.GetMaterial_InstancedProcedural().enableInstancing;
|
||||
}
|
||||
public virtual int ExecuteOrder => _material.GetExecuteOrder();
|
||||
public virtual bool IsStaticRender => true;
|
||||
@ -390,10 +392,10 @@ namespace DCFApixels
|
||||
|
||||
if (_buffersLength < count)
|
||||
{
|
||||
_matrices.Dispose();
|
||||
_colors.Dispose();
|
||||
_matrices = PinnedArray<Matrix4x4>.Pin(new Matrix4x4[DebugXUtility.NextPow2(count)]);
|
||||
_colors = PinnedArray<Vector4>.Pin(new Vector4[DebugXUtility.NextPow2(count)]);
|
||||
int capacity = DebugXUtility.NextPow2(count);
|
||||
_drawDatas.Dispose();
|
||||
_drawDatas = PinnedArray<DrawData>.Pin(new DrawData[capacity]);
|
||||
AllocateGraphicsBuffer(capacity);
|
||||
_buffersLength = count;
|
||||
}
|
||||
if (ReferenceEquals(_gizmos.Array, items) == false)
|
||||
@ -408,31 +410,39 @@ namespace DCFApixels
|
||||
var job = new PrepareJob
|
||||
{
|
||||
Items = _gizmos.Ptr,
|
||||
ResultMatrices = _matrices.Ptr,
|
||||
ResultColors = _colors.Ptr,
|
||||
ResultData = _drawDatas.Ptr,
|
||||
};
|
||||
_jobHandle = job.Schedule(count, 64);
|
||||
}
|
||||
protected void Render(CommandBuffer cb)
|
||||
{
|
||||
Material material = _material.GetMaterial_SupportCumputeShaders();
|
||||
Mesh mesh = _mesh.GetMesh();
|
||||
_materialPropertyBlock.Clear();
|
||||
_jobHandle.Complete();
|
||||
if (IsSupportsComputeShaders)
|
||||
if (_enableInstancing)
|
||||
{
|
||||
_materialPropertyBlock.SetVectorArray(ColorPropertyID, _colors.Array);
|
||||
cb.DrawMeshInstanced(mesh, 0, material, -1, _matrices.Array, _prepareCount, _materialPropertyBlock);
|
||||
Material material = _material.GetMaterial_InstancedProcedural();
|
||||
_jobHandle.Complete();
|
||||
_graphicsBuffer.SetData(_drawDatas.Array);
|
||||
cb.DrawMeshInstancedProcedural(mesh, 0, material, -1, _prepareCount, _materialPropertyBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
Material material = _material.GetMaterial();
|
||||
_jobHandle.Complete();
|
||||
for (int i = 0; i < _prepareCount; i++)
|
||||
{
|
||||
_materialPropertyBlock.SetColor(ColorPropertyID, _colors.Ptr[i]);
|
||||
cb.DrawMesh(mesh, _matrices.Ptr[i], material, 0, -1, _materialPropertyBlock);
|
||||
_materialPropertyBlock.SetColor(ColorPropertyID, _drawDatas.Ptr[i].Color);
|
||||
cb.DrawMesh(mesh, _drawDatas.Ptr[i].Matrix, material, 0, -1, _materialPropertyBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
private readonly static int _BufferPropertyID = Shader.PropertyToID("_DataBuffer");
|
||||
private void AllocateGraphicsBuffer(int capacity)
|
||||
{
|
||||
_graphicsBuffer?.Dispose();
|
||||
_materialPropertyBlock.Clear();
|
||||
_graphicsBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, capacity, Marshal.SizeOf<DrawData>());
|
||||
_materialPropertyBlock.SetBuffer(_BufferPropertyID, _graphicsBuffer);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -469,7 +479,7 @@ namespace DCFApixels
|
||||
}
|
||||
}
|
||||
private readonly IStaticMesh _mesh = default(WireLineMesh);
|
||||
private readonly IStaticMaterial _material;
|
||||
private readonly IStaticMaterial_InstancedProcedural _material;
|
||||
private readonly MaterialPropertyBlock _materialPropertyBlock;
|
||||
private GraphicsBuffer _graphicsBuffer;
|
||||
|
||||
@ -480,11 +490,14 @@ namespace DCFApixels
|
||||
private JobHandle _jobHandle;
|
||||
private int _prepareCount = 0;
|
||||
|
||||
public WireLineRendererBase(IStaticMaterial material)
|
||||
private readonly bool _enableInstancing;
|
||||
|
||||
public WireLineRendererBase(IStaticMaterial_InstancedProcedural material)
|
||||
{
|
||||
_material = material;
|
||||
_materialPropertyBlock = new MaterialPropertyBlock();
|
||||
_drawDatas = PinnedArray<DrawData>.Pin(DummyArray<DrawData>.Get());
|
||||
_enableInstancing = IsSupportsComputeShaders && _material.GetMaterial_InstancedProcedural().enableInstancing;
|
||||
}
|
||||
public virtual int ExecuteOrder => _material.GetExecuteOrder();
|
||||
public virtual bool IsStaticRender => true;
|
||||
@ -516,22 +529,19 @@ namespace DCFApixels
|
||||
};
|
||||
_jobHandle = job.Schedule(count, 64);
|
||||
}
|
||||
|
||||
|
||||
private readonly static int _BufferPropertyID = Shader.PropertyToID("_DataBuffer");
|
||||
public void Render(CommandBuffer cb)
|
||||
{
|
||||
Mesh mesh = _mesh.GetMesh();
|
||||
if (IsSupportsComputeShaders)
|
||||
if (_enableInstancing)
|
||||
{
|
||||
Material material = _material.GetMaterial_SupportCumputeShaders();
|
||||
Material material = _material.GetMaterial_InstancedProcedural();
|
||||
_jobHandle.Complete();
|
||||
_graphicsBuffer.SetData(_drawDatas.Array);
|
||||
cb.DrawMeshInstancedProcedural(mesh, 0, material, -1, _prepareCount, _materialPropertyBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
Material material = _material.GetMaterial_Default();
|
||||
Material material = _material.GetMaterial();
|
||||
_jobHandle.Complete();
|
||||
for (int i = 0; i < _prepareCount; i++)
|
||||
{
|
||||
@ -540,6 +550,7 @@ namespace DCFApixels
|
||||
}
|
||||
}
|
||||
}
|
||||
private readonly static int _BufferPropertyID = Shader.PropertyToID("_DataBuffer");
|
||||
private void AllocateGraphicsBuffer(int capacity)
|
||||
{
|
||||
_graphicsBuffer?.Dispose();
|
||||
|
@ -202,7 +202,7 @@ namespace DCFApixels
|
||||
public void Render(Camera camera, GizmosList<WidthLineGizmo> list, CommandBuffer cb)
|
||||
{
|
||||
if (camera == null) { return; }
|
||||
default(UnlitOverwriteMat).GetMaterial_SupportCumputeShaders().SetPass(0);
|
||||
default(UnlitOverwriteMat).GetMaterial_InstancedProcedural().SetPass(0);
|
||||
GL.Begin(GL.QUADS);
|
||||
Vector3 cameraPosition = camera.transform.position;
|
||||
foreach (ref readonly var item in list)
|
||||
@ -256,7 +256,7 @@ namespace DCFApixels
|
||||
public void Render(Camera camera, GizmosList<WidthOutLineGizmo> list, CommandBuffer cb)
|
||||
{
|
||||
if (camera == null) { return; }
|
||||
default(UnlitOverwriteMat).GetMaterial_SupportCumputeShaders().SetPass(0);
|
||||
default(UnlitOverwriteMat).GetMaterial_InstancedProcedural().SetPass(0);
|
||||
GL.Begin(GL.LINES);
|
||||
var cameraPosition = camera.transform.position;
|
||||
foreach (ref readonly var item in list)
|
||||
@ -318,7 +318,7 @@ namespace DCFApixels
|
||||
{
|
||||
if (camera == null) { return; }
|
||||
GL.PushMatrix();
|
||||
default(UnlitOverwriteMat).GetMaterial_SupportCumputeShaders().SetPass(0);
|
||||
default(UnlitOverwriteMat).GetMaterial_InstancedProcedural().SetPass(0);
|
||||
GL.Begin(GL.LINES);
|
||||
var cameraPosition = camera.transform.position;
|
||||
foreach (ref readonly var item in list)
|
||||
|
@ -8,13 +8,13 @@ Material:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Line
|
||||
m_Shader: {fileID: 4800000, guid: 4dc765b931552b54b957905b156bae66, type: 3}
|
||||
m_Shader: {fileID: 4800000, guid: 37036939f3d0a824c82a3f34093d4a42, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_EnableInstancingVariants: 1
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
@ -24,7 +24,10 @@ Material:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs: []
|
||||
m_Ints: []
|
||||
m_Floats: []
|
||||
m_Colors: []
|
||||
m_Floats:
|
||||
- _FakeLight: 0
|
||||
- _VertexColor: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
|
@ -24,7 +24,8 @@ Material:
|
||||
m_Shader: {fileID: 4800000, guid: 37036939f3d0a824c82a3f34093d4a42, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_ValidKeywords:
|
||||
- _VERTEXCOLOR_ON
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 1
|
||||
@ -110,6 +111,7 @@ Material:
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _FakeLight: 0
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
@ -124,6 +126,7 @@ Material:
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _VertexColor: 1
|
||||
- _WorkflowMode: 1
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
|
@ -1,135 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-8282512757102464268
|
||||
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: 9
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: UnlitOverwrite
|
||||
m_Shader: {fileID: 4800000, guid: 7bfe6625bfb0167438e98aa0d69e97e7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 1
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
m_LockedProperties:
|
||||
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}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
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: 0}
|
||||
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}
|
||||
- _ParallaxMap:
|
||||
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}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Cull: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.005
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 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: []
|
||||
m_AllowLocking: 1
|
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3db4ecf82b06ef4fa7fdb30e68362fa
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -199,7 +199,7 @@ Transform:
|
||||
m_GameObject: {fileID: 817216530089604692}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -5, y: 0, z: 0}
|
||||
m_LocalPosition: {x: -5, y: -2.5, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
|
@ -45,7 +45,6 @@ Shader "DCFApixels/DebugX/Handles Buillboard"
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
|
||||
|
||||
float4 worldOrigin = mul(UNITY_MATRIX_M, float4(0, 0, 0, 1));
|
||||
float4 viewOrigin = float4(UnityObjectToViewPos(float3(0, 0, 0)), 1);
|
||||
float4 worldPos = mul(UNITY_MATRIX_M, v.vertex);
|
||||
@ -56,7 +55,6 @@ Shader "DCFApixels/DebugX/Handles Buillboard"
|
||||
o.vertex = clipsPos;
|
||||
|
||||
|
||||
//o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.color = v.color * UNITY_ACCESS_INSTANCED_PROP(Props, _Color) * _DebugX_GlobalColor;
|
||||
return o;
|
||||
}
|
||||
|
@ -50,7 +50,6 @@ Shader "DCFApixels/DebugX/Handles Dot"
|
||||
distance = lerp(distance, 1, isOrthographic);
|
||||
|
||||
float fov = radians(UNITY_MATRIX_P[1][1] * 2.0);
|
||||
|
||||
float scale = distance * (1 / fov) * 0.015;
|
||||
|
||||
return scale * _DebugX_GlobalDotSize;
|
||||
@ -68,7 +67,6 @@ Shader "DCFApixels/DebugX/Handles Dot"
|
||||
M._m22 *= scaleMultiplier;
|
||||
|
||||
float4 worldOrigin = mul(M, float4(0, 0, 0, 1));
|
||||
|
||||
float4 viewOrigin = float4(UnityObjectToViewPos(float3(0, 0, 0)), 1);
|
||||
float4 worldPos = mul(M, v.vertex);
|
||||
|
||||
@ -77,9 +75,8 @@ Shader "DCFApixels/DebugX/Handles Dot"
|
||||
float4 clipsPos = mul(UNITY_MATRIX_P, viewPos);
|
||||
o.vertex = clipsPos;
|
||||
|
||||
//o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.color = v.color * UNITY_ACCESS_INSTANCED_PROP(Props, _Color) * _DebugX_GlobalColor;
|
||||
|
||||
o.color = v.color * UNITY_ACCESS_INSTANCED_PROP(Props, _Color) * _DebugX_GlobalColor;
|
||||
return o;
|
||||
}
|
||||
ENDCG
|
||||
|
@ -1,73 +0,0 @@
|
||||
Shader "DCFApixels/DebugX/Handles Line"
|
||||
{
|
||||
SubShader
|
||||
{
|
||||
Tags { "Queue"="Transparent" "RenderType"="Transparent" "IgnoreProjector"="True" "ForceNoShadowCasting"="True" }
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
ZWrite Off
|
||||
Fog { Mode Off }
|
||||
Lighting Off
|
||||
Offset -1, -1
|
||||
|
||||
ZTest On
|
||||
|
||||
CGINCLUDE
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma multi_compile_instancing
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct InstanceData
|
||||
{
|
||||
float4x4 m;
|
||||
float4 color;
|
||||
};
|
||||
|
||||
struct appdata_t
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float4 vertex : SV_POSITION;
|
||||
half4 color : COLOR;
|
||||
};
|
||||
|
||||
StructuredBuffer<InstanceData> _DataBuffer;
|
||||
float4 _DebugX_GlobalColor;
|
||||
|
||||
v2f vert (appdata_t v, uint instanceID : SV_InstanceID)
|
||||
{
|
||||
v2f o;
|
||||
InstanceData data = _DataBuffer[instanceID];
|
||||
|
||||
float4 pos = mul(data.m, v.vertex);
|
||||
o.vertex = UnityObjectToClipPos(pos);
|
||||
o.color = data.color * _DebugX_GlobalColor;
|
||||
return o;
|
||||
}
|
||||
ENDCG
|
||||
|
||||
Pass
|
||||
{
|
||||
ZTest LEqual
|
||||
CGPROGRAM
|
||||
half4 frag (v2f i) : SV_Target
|
||||
{
|
||||
return i.color;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
Pass
|
||||
{
|
||||
ZTest Greater
|
||||
CGPROGRAM
|
||||
half4 frag (v2f i) : SV_Target
|
||||
{
|
||||
return i.color * half4(1, 1, 1, 0.1);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4dc765b931552b54b957905b156bae66
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -3,6 +3,9 @@ Shader "DCFApixels/DebugX/Handles Unlit"
|
||||
Properties
|
||||
{
|
||||
_Color ("Color", Color) = (1,1,1,1)
|
||||
[Toggle] _VertexColor("Vertex Color", Float) = 0
|
||||
[Toggle] _FakeLight("Fake Light", Float) = 0
|
||||
[Toggle] _OnePass("One Pass", Float) = 0
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
@ -19,12 +22,57 @@ Shader "DCFApixels/DebugX/Handles Unlit"
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma multi_compile_instancing
|
||||
#pragma shader_feature_local _VERTEXCOLOR_ON
|
||||
#pragma shader_feature_local _FAKELIGHT_ON
|
||||
#pragma shader_feature_local _ONEPASS_ON
|
||||
#pragma instancing_options procedural:setup
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
#ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
|
||||
struct InstanceData
|
||||
{
|
||||
float4x4 m;
|
||||
float4 color;
|
||||
};
|
||||
StructuredBuffer<InstanceData> _DataBuffer;
|
||||
#endif
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
#ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
|
||||
InstanceData data = _DataBuffer[unity_InstanceID];
|
||||
float4x4 m = data.m;
|
||||
|
||||
float rotation = m.w * m.w * _Time.y * 0.5f;
|
||||
rotate2D(m.xz, rotation);
|
||||
|
||||
unity_ObjectToWorld._11_21_31_41 = float4(m.w, 0, 0, 0);
|
||||
unity_ObjectToWorld._12_22_32_42 = float4(0, m.w, 0, 0);
|
||||
unity_ObjectToWorld._13_23_33_43 = float4(0, 0, m.w, 0);
|
||||
unity_ObjectToWorld._14_24_34_44 = float4(m.xyz, 1);
|
||||
unity_WorldToObject = unity_ObjectToWorld;
|
||||
unity_WorldToObject._14_24_34 *= -1;
|
||||
unity_WorldToObject._11_22_33 = 1.0f / unity_WorldToObject._11_22_33;
|
||||
|
||||
_Color = data.color;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
struct appdata_t
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
#if _FAKELIGHT_ON
|
||||
float3 normal : NORMAL;
|
||||
#endif
|
||||
#if _VERTEXCOLOR_ON
|
||||
float4 color : COLOR;
|
||||
#endif
|
||||
uint instanceID : SV_InstanceID;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
@ -34,18 +82,28 @@ Shader "DCFApixels/DebugX/Handles Unlit"
|
||||
half4 color : COLOR;
|
||||
};
|
||||
|
||||
UNITY_INSTANCING_BUFFER_START(Props)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float4, _Color)
|
||||
UNITY_INSTANCING_BUFFER_END(Props)
|
||||
|
||||
float4 _Color;
|
||||
float4 _DebugX_GlobalColor;
|
||||
|
||||
v2f vert (appdata_t v)
|
||||
{
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
|
||||
#ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
|
||||
InstanceData data = _DataBuffer[v.instanceID];
|
||||
float4 pos = mul(data.m, v.vertex);
|
||||
o.vertex = UnityObjectToClipPos(pos);
|
||||
half4 color = data.color;
|
||||
#else
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.color = v.color * UNITY_ACCESS_INSTANCED_PROP(Props, _Color) * _DebugX_GlobalColor;
|
||||
half4 color = _Color;
|
||||
#endif
|
||||
|
||||
#if _VERTEXCOLOR_ON
|
||||
color *= v.color;
|
||||
#endif
|
||||
o.color = color * _DebugX_GlobalColor;
|
||||
|
||||
return o;
|
||||
}
|
||||
ENDCG
|
||||
@ -60,6 +118,7 @@ Shader "DCFApixels/DebugX/Handles Unlit"
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
ZTest Greater
|
||||
|
@ -43,12 +43,17 @@ namespace DCFApixels.DebugXCore
|
||||
public readonly struct MaterialsList
|
||||
{
|
||||
public readonly Material Lit;
|
||||
//public readonly Material Lit_InstancedProcedural;
|
||||
public readonly Material Unlit;
|
||||
public readonly Material Line;
|
||||
//public readonly Material Unlit_InstancedProcedural;
|
||||
public readonly Material UnlitOverwrite;
|
||||
//public readonly Material UnlitOverwrite_InstancedProcedural;
|
||||
public readonly Material Billboard;
|
||||
//public readonly Material Billboard_InstancedProcedural;
|
||||
public readonly Material Dot;
|
||||
//public readonly Material Dot_InstancedProcedural;
|
||||
public readonly Material Wire;
|
||||
//public readonly Material Wire_InstancedProcedural;
|
||||
|
||||
internal readonly Material TextBackground;
|
||||
}
|
||||
|
@ -5,8 +5,11 @@ namespace DCFApixels.DebugXCore
|
||||
public interface IStaticMaterial : IStaticData
|
||||
{
|
||||
int GetExecuteOrder();
|
||||
Material GetMaterial_SupportCumputeShaders();
|
||||
Material GetMaterial_Default();
|
||||
Material GetMaterial();
|
||||
}
|
||||
public interface IStaticMaterial_InstancedProcedural : IStaticMaterial
|
||||
{
|
||||
Material GetMaterial_InstancedProcedural();
|
||||
}
|
||||
public interface IStaticMesh : IStaticData
|
||||
{
|
||||
@ -16,53 +19,47 @@ namespace DCFApixels.DebugXCore
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public readonly struct LitMat : IStaticMaterial
|
||||
public readonly struct LitMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 0;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Lit;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Lit;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Lit;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Lit;
|
||||
}
|
||||
public readonly struct UnlitMat : IStaticMaterial
|
||||
public readonly struct UnlitMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 100_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Unlit;
|
||||
}
|
||||
public readonly struct LineMat : IStaticMaterial
|
||||
{
|
||||
public int GetExecuteOrder() => 100_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Line;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Unlit;
|
||||
}
|
||||
public readonly struct BillboardMat : IStaticMaterial
|
||||
public readonly struct BillboardMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 200_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Billboard;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Billboard;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Billboard;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Billboard;
|
||||
}
|
||||
public readonly struct DotMat : IStaticMaterial
|
||||
public readonly struct DotMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 300_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Dot;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Dot;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Dot;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Dot;
|
||||
}
|
||||
public readonly struct GeometryUnlitMat : IStaticMaterial
|
||||
public readonly struct GeometryUnlitMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 1_000_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Unlit;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Unlit;
|
||||
}
|
||||
public readonly struct UnlitOverwriteMat : IStaticMaterial
|
||||
public readonly struct UnlitOverwriteMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 1_000_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.UnlitOverwrite;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.UnlitOverwrite;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.UnlitOverwrite;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.UnlitOverwrite;
|
||||
}
|
||||
public readonly struct WireMat : IStaticMaterial
|
||||
public readonly struct WireMat : IStaticMaterial_InstancedProcedural
|
||||
{
|
||||
public int GetExecuteOrder() => 1_000_000;
|
||||
public Material GetMaterial_SupportCumputeShaders() => DebugXAssets.Materials.Wire;
|
||||
public Material GetMaterial_Default() => DebugXAssets.Materials.Wire;
|
||||
public Material GetMaterial_InstancedProcedural() => DebugXAssets.Materials.Wire;
|
||||
public Material GetMaterial() => DebugXAssets.Materials.Wire;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user