Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[GLSL]Dlaczego takie wartości? / Co to ma oznaczać? Kilka pytań

Ostatnio zmodyfikowano 2015-09-17 11:01
Autor Wiadomość
txter
Temat założony przez niniejszego użytkownika
[GLSL]Dlaczego takie wartości? / Co to ma oznaczać? Kilka pytań
» 2015-09-16 14:07:09
1.
C/C++
( clamp( vertex.xy, - 1.3, 1.3 ) + 1 ) *( screen_size * 0.5 );
Powyższy fragment ma za zadanie obliczyć przestrzeń z wektorowej do przestrzeni urządzenia (chyba tak to się nazywa).

Dlaczego tak to się liczy, co to ma znaczyć? <-1.3,1.3> dlaczego - nie powinno być <-1,1>? Dlaczego potem dodaje się 1 i mnoży się przez połowę rozmiaru ekranu renderowania - nie powinno się dodawać?

2.
C/C++
any(
lessThan( vertex.xy, vec2( - 1.7 ) ) ||
greaterThan( vertex.xy, vec2( 1.7 ) )
);
Powyższy fragment wylicza, czy wierzchołek jest poza widocznością przestrzeni renderowania.
Dlaczego wartość wynosi <-1.7,1.7> nie powinna być wartość <-0.5,0.5>?

3.
C/C++
float level( vec2 v0, vec2 v1 ) {
    return clamp( distance( v0, v1 ) / lod_factor, 1, 64 );
}
...

float e0 = level( ss1, ss2 );
float e1 = level( ss0, ss1 );
float e2 = level( ss3, ss0 );
float e3 = level( ss2, ss3 );

gl_TessLevelInner[ 0 ] = mix( e1, e2, 0.5 );
gl_TessLevelInner[ 1 ] = mix( e0, e3, 0.5 );
Tu nie powinna być obliczana odległość od 'eye' ? Dlaczego odległość wierzchołków?
Powyżej funkcja mix po prostu oblicza średnią arytmetyczną obu wartości? (dopiero uczę się GLSL)

Cały kod pochodzi ze strony: http://codeflow.org/entries/2010/nov/07/opengl-4-tessellation/
P-137565
pekfos
» 2015-09-17 11:01:33
dopiero uczę się GLSL
Więc najwyraźniej nie robisz tego najlepiej. Nie nauczysz się programowania patrząc na gotowe kody. Zadajesz tylko głupie pytania 'dlaczego ktoś zrobił to tak'. Odpowiedź jest uniwersalna i można na niej zbyć wszystkie twoje pytania z tego tematu: Bo ktoś chciał uzyskać konkretny efekt w konkretnym przypadku - stąd odpowiednio dobrane stałe i wzory oraz ich odpowiednia implementacja. Ktoś znał się na swojej robocie, napisał kod w ten sposób i nie uznał za potrzebne opisywać wszystkie niuanse, które trzeba było wziąć pod uwagę przy projektowaniu tego kodu. Potrafiłbyś w ogóle odpowiedzieć na pytanie, dlaczego miałaby tam stać twoja liczba, a nie ta z kodu..?

mnoży się przez połowę rozmiaru ekranu renderowania - nie powinno się dodawać?
To ma zmienić jednostki, a nie przesunąć cały układ wielkości kilku pikseli w inne miejsce ekranu.

Powyżej funkcja mix po prostu oblicza średnią arytmetyczną obu wartości?
https://www.opengl.org/sdk​/docs/man/html/mix.xhtml
P-137584
« 1 »
  Strona 1 z 1