[GLSL]Dlaczego takie wartości? / Co to ma oznaczać? Kilka pytań
Ostatnio zmodyfikowano 2015-09-17 11:01
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. ( 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. 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. 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/ |
|
pekfos |
» 2015-09-17 11:01:33 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 |
|
« 1 » |