После долгих поисков я обнаружил, что tex2D
больше не поддерживается с ps_4_0
и выше.Ну, 4_0
будет работать в унаследованном режиме, но он не работает 5_0
, что я и использую.
Модель шейдера: Поддерживается
Shader Model 4: да (только пиксельный шейдер), но вы должны использовать устаревшую опцию компиляции при компиляции.
Shader Model 3 (DirectX HLSL): да (только пиксельный шейдер)
Shader Model 2 (DirectX HLSL): yes (пиксель)только шейдер)
модель шейдера 1 (DirectX HLSL): да (только пиксельный шейдер)
Это было заменено на Texture2D
; документация доступна для него.Ниже приведен пример из упомянутой документации:
// Object Declarations
Texture2D g_MeshTexture;
SamplerState MeshTextureSampler
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Diffuse : COLOR0;
float2 TextureUV : TEXCOORD0;
};
VS_OUTPUT In;
// Shader body calling the intrinsic function
Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) * In.Diffuse;
Чтобы заменить tex2D
вызов в моем коде:
result += Texture0.Sample(Sampler, float2(uv.x + offsets[x], uv.y)) * weights[x];
Также обратите внимание, что код в этом посте предназначен длягоризонтальный проход гауссова размытия.