diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y
index 1ba929b54605554d43572ab9233c28c4837176e8..ab0b3f65b80f5f2ff2e11805b83bc012d20e7cb2 100644
--- a/libs/vkd3d-shader/hlsl.y
+++ b/libs/vkd3d-shader/hlsl.y
@@ -3331,16 +3331,13 @@ static bool intrinsic_tex(struct hlsl_ctx *ctx, const struct parse_initializer *
                     name, ctx->builtin_types.sampler[dim]->name, string->buffer);
         hlsl_release_string_buffer(ctx, string);
     }
-    else
-    {
-        load_params.resource = params->args[0];
-    }
 
     if (!(coords = add_implicit_conversion(ctx, params->instrs, params->args[1],
             hlsl_get_vector_type(ctx, HLSL_TYPE_FLOAT, hlsl_sampler_dim_count(dim)), loc)))
         coords = params->args[1];
 
     load_params.coords = coords;
+    load_params.resource = params->args[0];
     load_params.format = hlsl_get_vector_type(ctx, HLSL_TYPE_FLOAT, 4);
 
     if (!(load = hlsl_new_resource_load(ctx, &load_params, loc)))
diff --git a/tests/sampler.shader_test b/tests/sampler.shader_test
index 2cb70a0b3938ddc298c4ebef185e9ed250b2bbd3..23741a3526d8afd21aa42a96c4995cc0e32dea90 100644
--- a/tests/sampler.shader_test
+++ b/tests/sampler.shader_test
@@ -45,3 +45,12 @@ float4 main() : sv_target
 [test]
 draw quad
 probe all rgba (0.25, 0, 0.25, 0)
+
+
+[pixel shader fail]
+sampler2D s;
+
+float4 main() : sv_target
+{
+    return tex3D(s, float3(0.0, 0.0, 0.0));
+}