Советуй, да не пересоветуй! (про "оптимизацию" HLSL кода)

Dec 25, 2007 15:41

Вот наткнулся на статейку:
http://www.gamedev.ru/articles/?id=10109&page=7

А именно на раздел по оптимизации. Есть, конечно, там дельные советы, но одно насторожило…

Цитата
2. Всячески избегайте привидения типов и пытайтесь всегда выбрать необходимый тип. Например:

Неоптимизированный код:

sampler smth;
float4 main(float2 coor: TEXCOORD2) : COLOR
{
float3 col=tex2D(smth, coor);
return float4(col,0);
}

на выходе:
ps_2_0
def c0, 0, 0, 0, 0
dcl t2.xy
dcl_2d s0
texld r0, t2, s0
mov r0.w, c0.x
mov oC0, r0

Оптимизированный код:

sampler smth;
float4 main(float2 coor: TEXCOORD2) : COLOR
{
float4 col=tex2D(smth, coor);
return col;
}

на выходе:

ps_2_0
dcl t2.xy
dcl_2d s0
texld r0, t2, s0
mov oC0, r0

Конец цитаты

Отличный на первый взгляд совет. Экономим целую инструкцию. Хороший, если бы не одно НО: эти два шейдера делают разные вещи! Поэтому называть второй шейдер "оптимизированным первым" мягко говоря, не корректно, а грубо говоря, вообще не правильно. Хотя не спорю, бывают случаи, когда так действительно можно сэкономить инструкцию. Однако то, что тут написано нельзя было так обобщать. И наличие тут дополнительной инструкции вовсе не следствие type casting.

Статьи читать, бесспорно, нужно. Однако будьте бдительны!

hlsl

Previous post Next post
Up