bgolus:
Why are you using this macro?
Replace those lines with sampler2D _Tex1; and change all of the UNITY_SAMPLE_TEX2D to tex2D and everything will just work, including that no tile function.
The problem is the macros you’re using are generating Direct3D 11 style HLSL, which doesn’t use sampler2D for textures, but instead Texture2D and SamplerState. That macro is generating declarations for both of those, and both would need to be passed to the no tile function, and the UNITY_SAMPLE_TEX2D macro would need to be used. The later is an alias for _TexName.Sampler(sampler_TexName, uv), which is the D3D11 equivalent of tex2D(_TexName, uv).
Unity has macros for defining both the texture and sampler state in a function declaration, as well as for passing them to that function, but only for texture arrays and cubemaps, not for normal 2D textures. So if for some reason you wanted to keep using the original D3D11 style texture declaration and sampling, you’d probably want to define your own UNITY_ARGS_TEX2D and UNITY_PASS_TEX2D macros. See the file that defines the UNITY_ARGS_TEX2DARRAY here:
https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/CGIncludes/HLSLSupport.cginc
The reason why I am using macros is because I am using more than 16 textures
SubShader {
// ----------------------------------------------------
// --- STANDARD PASS ----------------------------------
// ----------------------------------------------------
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
// #define USING_6_TEXTURES
#pragma surface surf Standard fullforwardshadows vertex:vert
// #pragma surface surf Standard fullforwardshadows
#pragma target 3.0
#include "UnityStandardCore.cginc"
UNITY_DECLARE_TEX2D(_Tex1);
UNITY_DECLARE_TEX2D(_Tex2);
UNITY_DECLARE_TEX2D(_Tex3);
UNITY_DECLARE_TEX2D(_Tex4);
UNITY_DECLARE_TEX2D(_Tex5);
UNITY_DECLARE_TEX2D(_Tex6);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor1);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor2);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor3);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor4);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor5);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor6);
UNITY_DECLARE_TEX2D(_Tex1Fade);
UNITY_DECLARE_TEX2D(_Tex2Fade);
UNITY_DECLARE_TEX2D(_Tex3Fade);
UNITY_DECLARE_TEX2D(_Tex4Fade);
UNITY_DECLARE_TEX2D(_Tex5Fade);
UNITY_DECLARE_TEX2D(_Tex6Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor1Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor2Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor3Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor4Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor5Fade);
UNITY_DECLARE_TEX2D_NOSAMPLER(_Nor6Fade);
float _TexScale1;
float _TexScale2;
float _TexScale3;
float _TexScale4;
float _TexScale5;
float _TexScale6;
float _TexScale1Fade;
float _TexScale2Fade;
float _TexScale3Fade;
float _TexScale4Fade;
float _TexScale5Fade;
float _TexScale6Fade;
float _FadeRangeMin;
float _FadeRangeMax;
struct Input {
float2 uv_Tex1;
float2 uv4_Tex2;
float4 color: COLOR;
float4 screenPos;
half fade;
};
half _Glossiness1;
half _Metallic1;
half _NorPow1;
half _Brightness1;
fixed4 _Color1;
half _Glossiness2;
half _Metallic2;
half _NorPow2;
half _Brightness2;
fixed4 _Color2;
half _Glossiness3;
half _Metallic3;
half _NorPow3;
half _Brightness3;
fixed4 _Color3;
half _Glossiness4;
half _Metallic4;
half _NorPow4;
half _Brightness4;
fixed4 _Color4;
half _Glossiness5;
half _Metallic5;
half _NorPow5;
half _Brightness5;
fixed4 _Color5;
half _Glossiness6;
half _Metallic6;
half _NorPow6;
half _Brightness6;
fixed4 _Color6;
float _FractalDivergance;
fixed4 hash4(fixed2 p) {
return frac(sin(fixed4(1.0 + dot(p, fixed2(37.0, 17.0)),
2.0 + dot(p, fixed2(11.0, 47.0)),
3.0 + dot(p, fixed2(41.0, 29.0)),
4.0 + dot(p, fixed2(23.0, 31.0)))) * _FractalDivergance);
}
fixed4 tex2DNoTile(sampler2D samp, in fixed2 uv, fixed v)
{
fixed2 p = floor(uv);
fixed2 f = frac(uv);
// derivatives (for correct mipmapping)
fixed2 _ddx = ddx(uv);
fixed2 _ddy = ddy(uv);
fixed4 va = fixed4(0.0, 0.0, 0.0, 0.0);
fixed w1 = 0.0;
fixed w2 = 0.0;
[unroll(3)]
for (int j = -1; j <= 1; j++)
{
[unroll(3)]
for (int i = -1; i <= 1; i++)
{
fixed2 g = fixed2(fixed(i), fixed(j));
fixed4 o = hash4(p + g);
fixed2 r = g - f + o.xy;
fixed d = dot(r, r);
fixed w = exp(-5.0*d);
fixed4 c = tex2D(samp, uv + v * o.zw, _ddx, _ddy)* _Color1;
va += w * c;
w1 += w;
w2 += w * w;
}
}
// normal averaging --> lowers contrasts
//return va/w1;
// contrast preserving average
fixed mean = 0;// tex2DGrad( samp, uv, ddx*16.0, ddy*16.0 ).x;
fixed4 res = mean + (va - w1 * mean) / sqrt(w2);
return lerp(va / w1, res, v);
}
void vert (inout appdata_full v, out Input data) {
UNITY_INITIALIZE_OUTPUT(Input,data);
float pos = length(UnityObjectToViewPos(v.vertex).xyz);
float diff = _FadeRangeMax - _FadeRangeMin;
float invDiff = -1.0 / diff;
data.fade = clamp ((_FadeRangeMax - pos) * invDiff, 0.0, 1.0);
}
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c1 = lerp(tex2DNoTile(_Tex1, IN.uv_Tex1 * _TexScale1, 1), UNITY_SAMPLE_TEX2D(_Tex1Fade, IN.uv_Tex1 * _TexScale1Fade), IN.fade)* _Color1 * _Brightness1;
fixed4 c2 = lerp(tex2DNoTile(_Tex2, IN.uv_Tex1 * _TexScale2, 1), UNITY_SAMPLE_TEX2D(_Tex2Fade, IN.uv_Tex1 * _TexScale2Fade), IN.fade)* _Color2 * _Brightness2;
fixed4 c3 = lerp(tex2DNoTile(_Tex3, IN.uv_Tex1 * _TexScale3, 1), UNITY_SAMPLE_TEX2D(_Tex3Fade, IN.uv_Tex1 * _TexScale3Fade), IN.fade)* _Color3 * _Brightness3;
fixed4 c4 = lerp(tex2DNoTile(_Tex4, IN.uv_Tex1 * _TexScale4, 1), UNITY_SAMPLE_TEX2D(_Tex4Fade, IN.uv_Tex1 * _TexScale4Fade), IN.fade)* _Color4 * _Brightness4;
fixed4 c5 = lerp(tex2DNoTile(_Tex5, IN.uv_Tex1 * _TexScale5, 1), UNITY_SAMPLE_TEX2D(_Tex5Fade, IN.uv_Tex1 * _TexScale5Fade), IN.fade)* _Color5 * _Brightness5;
fixed4 c6 = lerp(tex2DNoTile(_Tex6, IN.uv_Tex1 * _TexScale6, 1), UNITY_SAMPLE_TEX2D(_Tex6Fade, IN.uv_Tex1 * _TexScale6Fade), IN.fade)* _Color6 * _Brightness6;
o.Albedo = IN.color.r * c1 + IN.color.g * c2 + IN.color.b * c3 + IN.color.a * c4 + IN.uv4_Tex2.x * c5 + IN.uv4_Tex2.y * c6;
o.Metallic = IN.color.r * _Metallic1 + IN.color.g * _Metallic2 + IN.color.b * _Metallic3 + IN.color.a * _Metallic4 + IN.uv4_Tex2.x * _Metallic5 + IN.uv4_Tex2.y * _Metallic6;
o.Smoothness = IN.color.r * _Glossiness1 + IN.color.g * _Glossiness2 + IN.color.b * _Glossiness3 + IN.color.a * _Glossiness4 + IN.uv4_Tex2.x * _Glossiness5 + IN.uv4_Tex2.y * _Glossiness6;
fixed3 n1 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor1, IN.uv_Tex1 * _TexScale1, 1), _NorPow1), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor1Fade, _Tex1Fade, IN.uv_Tex1 * _TexScale1Fade)), IN.fade);
fixed3 n2 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor2, IN.uv_Tex1 * _TexScale2, 1), _NorPow2), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor2Fade, _Tex2Fade, IN.uv_Tex1 * _TexScale2Fade)), IN.fade);
fixed3 n3 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor3, IN.uv_Tex1 * _TexScale3, 1), _NorPow3), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor3Fade, _Tex3Fade, IN.uv_Tex1 * _TexScale3Fade)), IN.fade);
fixed3 n4 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor4, IN.uv_Tex1 * _TexScale4, 1), _NorPow4), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor4Fade, _Tex4Fade, IN.uv_Tex1 * _TexScale4Fade)), IN.fade);
fixed3 n5 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor5, IN.uv_Tex1 * _TexScale5, 1), _NorPow5), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor5Fade, _Tex5Fade, IN.uv_Tex1 * _TexScale5Fade)), IN.fade);
fixed3 n6 = lerp(UnpackScaleNormal(tex2DNoTile(_Nor6, IN.uv_Tex1 * _TexScale6, 1), _NorPow6), UnpackNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_Nor6Fade, _Tex6Fade, IN.uv_Tex1 * _TexScale6Fade)), IN.fade);
o.Normal = IN.color.r * n1 + IN.color.g * n2 + IN.color.b * n3 + IN.color.a * n4 + IN.uv4_Tex2.x * n5 + IN.uv4_Tex2.y * n6;
}
ENDCG