HLSL ошибка / d3d11 error в C#
Как исправить ошибку в этой строчке?
half4 sampleCol = SAMPLE_TEXTURE2D(_MainTex, sampler(_MainTex), sampleUV);
Сама ошибка:
Shader error in 'Custom/Blur': constructors only defined for numeric base types at line 64 (on d3d11) Compiling Vertex program Platform defines: UNITY_NO_DXT5nm UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING
Код шейдера:
Shader "Custom/BlurShader"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_BlurRadius("Blur Radius", Float) = 1.0
_SampleCount("Sample Count", Int) = 5
}
SubShader
{
Tags { "RenderType"="Transparent" "Queue"="Transparent" }
LOD 100
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
CBUFFER_START(UnityPerMaterial)
sampler2D _MainTex;
float4 _MainTex_ST;
float _BlurRadius;
int _SampleCount;
CBUFFER_END
struct Attributes
{
float4 position : POSITION;
float2 uv : TEXCOORD0;
};
struct Varyings
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
};
Varyings vert(Attributes input)
{
Varyings output;
output.position = TransformObjectToHClip(input.position.xyz);
output.uv = TRANSFORM_TEX(input.uv, _MainTex);
return output;
}
half4 frag(Varyings input) : SV_Target
{
float2 blurDir = float2(1, 0);
half4 col = 0;
// Сэмплирование текстуры в нескольких точках
for (int i = -_SampleCount / 2; i <= _SampleCount / 2; i++)
{
float2 offset = blurDir * i * _BlurRadius;
float2 sampleUV = input.uv + offset;
// Проверка границ текстуры
if (sampleUV.x >= 0 && sampleUV.x <= 1 && sampleUV.y >= 0 && sampleUV.y <= 1)
{
half4 sampleCol = SAMPLE_TEXTURE2D(_MainTex, sampler(_MainTex), sampleUV);
col.rgb += sampleCol.rgb;
col.a += sampleCol.a;
}
}
// Нормализация цвета и прозрачности
col.rgb /= _SampleCount;
col.a /= _SampleCount;
return col;
}
ENDHLSL
}
}
}