За какво са всички различни типове HLSL семплер?

В момента работя с DX9/SM3 и документацията на MSDN за HLSL семплерите изглежда крайно липсва в обяснението как да се използват различните типове семплери. По-лошото е, че се опитват да покрият DX9 и DX10 в една статия, така че смесват всички ключови думи:

sampler Name = SamplerType { Texture = ‹texture_variable>; [име_на_състояние = стойност_на_състояние;] ... };

...

SamplerType

[in] Типът на семплера, който е един от следните: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

Разлики между Direct3D 9 и Direct3D 10:

Direct3D 10 поддържа един допълнителен тип семплер: SamplerComparisonState.

Имам чувството, че противно на това описание, SamplerState е само DX10. На практика целият код, който виждам, използва sampler_state за SamplerType. Бърз пример от BasicHLSL (DX9):

sampler MeshTextureSampler =
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Защо съществуват всички различни _SamplerType_s и кога бихте използвали, да речем, sampler или sampler2D вместо sampler_state? Трябва да сте изрични, когато извличате така или иначе, напр. tex2D, texCUBE, какво става тук?


person Community    schedule 19.08.2009    source източник


Отговори (2)


Прав си. Това е много странно.

Изглежда, че документацията за синтаксиса на DirectX 9 е грешна. В никакъв случай не съм експерт нито по HLSL, нито по DirectX, но винаги съм виждал само семплерите в DirectX 9 да се декларират така:

SamplerType Name = sampler_state{   Texture = <texture_variable>;   [state_name = state_value;]   ... }; 

Може да пропускам нещо, но за мен горният синтаксис има повече смисъл от този в документацията. Вие декларирате семплер с даден тип и указвате състоянието на семплера.

АКТУАЛИЗАЦИЯ: Явно Е грешно. Започнах нишка в официалните форуми и досега съм получи само потвърждение, че не е наред. Също така изпратих имейл директно до екипа на DirectX. Само за по-сигурно.

person Tchami    schedule 19.08.2009
comment
бъдете предупредени, [email protected] не се наблюдава активно. - person Goz; 20.08.2009
comment
Не го знаех, благодаря. Е, аз също оцених и предоставих обратна връзка за въпросната статия, така че може би това ще свърши работа. - person Tchami; 20.08.2009
comment
Благодаря, радвам се, че не съм го загубил. Успях да изровя моя стар DX9 CHM и имаше много по-чиста статия. DX9 дори поддържа семплерни масиви, но никога няма да разберете това от наскоро провалената страница на MSDN. - person ; 20.08.2009

име на семплера = SamplerType { Texture = ; [име_на_състояние = стойност_на_състояние;]};

Така е правилно! Декларацията важи само за ефекти.

РЕДАКТИРАНЕ: официалните форуми са в MSDN. Можете да публикувате предложение или грешка, като използвате „Добавки на общността“.

person Kostadin.Petkov    schedule 24.02.2014