DX10 Skybox Shader - PullRequest
       75

DX10 Skybox Shader

0 голосов
/ 03 февраля 2011

Я пытаюсь написать шейдер скайбокса в DX10, используя следующий код HLSL:

//////////////////////////////////////////////////////////////////////////
// world matrix for each rendered object
float4x4 g_mWorld;

// single cubemap texture
Texture2D g_tCubeMap;

// basic mirror texture sampler
SamplerState g_sSamplerMirror
{
    Filter = MIN_MAG_MIP_POINT;
    AddressU = MIRROR;
    AddressV = MIRROR;
};

//////////////////////////////////////////////////////////////////////////
// pre-defined vertex formats for vertex input layouts
struct VS_INPUT
{
    float3 Position     : POSITION;
};

struct PS_INPUT
{
    float4 SPosition    : SV_POSITION;
    float3 UV           : TEXCOORD;
};

//////////////////////////////////////////////////////////////////////////
PS_INPUT VS_Default( VS_INPUT Input )
{
    PS_INPUT Output = (PS_INPUT)0;

    Output.SPosition = float4(Input.Position,1.0f);
    Output.UV = normalize( mul( Output.SPosition, g_mWorld ) ).xyz;

    return Output;
}

//////////////////////////////////////////////////////////////////////////
float4 PS_Default( PS_INPUT Input ) : SV_TARGET0
{
    return float4( texCUBE( g_sSamplerMirror, Input.UV ) );
}

//////////////////////////////////////////////////////////////////////////
technique10 TECH_Default
{
    pass
    {
        SetVertexShader( CompileShader( vs_4_0, VS_Default() ) );
        SetPixelShader( CompileShader( ps_4_0, PS_Default() ) );
        SetGeometryShader( 0 );
    }
}

Что выдает ошибку «Встроенные функции стиля DX-9 отключены, когда не в режиме совместимости с dx9». по строке 46:

return float4( texCUBE( g_sSamplerMirror, Input.UV ) );

Есть ли альтернатива texCUBE? Как это исправить, не включив режим совместимости с dx9?

1 Ответ

1 голос
/ 03 февраля 2011

Поскольку вы используете Shader Model 4 , вы сможете создать a TextureCube объект , а затем вызвать метод Sample .

...