HitboxDisplay lots of broken stuff
This commit is contained in:
1 parent
9203f269db
commit
f40a10912c
78 files changed
+12768
-309066
No files matched your search
@@ -0,0 +1,89 @@
|
||||
Shader "Custom/HitboxVisualizer"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
[HDR] _BaseColor ("Color", Color) = (1, 0, 0, 0.7)
|
||||
_BorderWidth ("Border Width", Range(0.005, 0.15)) = 0.035
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags
|
||||
{
|
||||
"RenderType" = "Transparent"
|
||||
"Queue" = "Transparent+200"
|
||||
"RenderPipeline" = "UniversalPipeline"
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "HitboxPass"
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
ZWrite Off
|
||||
Cull Off
|
||||
ZTest LEqual
|
||||
|
||||
HLSLPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma multi_compile_instancing
|
||||
|
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
||||
|
||||
struct Attributes
|
||||
{
|
||||
float4 positionOS : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
struct Varyings
|
||||
{
|
||||
float4 positionCS : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
CBUFFER_START(UnityPerMaterial)
|
||||
float _BorderWidth;
|
||||
CBUFFER_END
|
||||
|
||||
UNITY_INSTANCING_BUFFER_START(Props)
|
||||
UNITY_DEFINE_INSTANCED_PROP(float4, _BaseColor)
|
||||
UNITY_INSTANCING_BUFFER_END(Props)
|
||||
|
||||
Varyings vert(Attributes input)
|
||||
{
|
||||
Varyings output = (Varyings)0;
|
||||
UNITY_SETUP_INSTANCE_ID(input);
|
||||
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||
|
||||
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
|
||||
output.uv = input.uv;
|
||||
return output;
|
||||
}
|
||||
|
||||
half4 frag(Varyings input) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(input);
|
||||
half4 baseColor = UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor);
|
||||
|
||||
// Дистанция до края полигона (грани куба)
|
||||
float2 dist = min(input.uv, 1.0 - input.uv);
|
||||
float edgeDist = min(dist.x, dist.y);
|
||||
|
||||
// 1.0 если пиксель на краю грани, иначе 0.0
|
||||
float isEdge = step(edgeDist, _BorderWidth);
|
||||
|
||||
half4 finalColor = baseColor;
|
||||
// Внутри объема цвет прозрачный, на гранях — яркий и четкий
|
||||
finalColor.a = lerp(baseColor.a * 0.25, saturate(baseColor.a * 1.5), isEdge);
|
||||
finalColor.rgb = lerp(baseColor.rgb, baseColor.rgb * 1.3, isEdge);
|
||||
|
||||
return finalColor;
|
||||
}
|
||||
ENDHLSL
|
||||
}
|
||||
}
|
||||
FallBack Off
|
||||
}
|
||||
Reference in new issue
Block a user