Datamaskingrafikk: Hva er forskjellen mellom toppunktskyggere og pikselskyere?


Svar 1:

Grafikkrørledning

Hodepunktskygger

  • Programmer utført en gang per toppunkt, tidlig i rørledningen. Kan ikke opprette eller ødelegge toppunkt. Vet ikke hvilken primitiv den tilhører.

Pixel shaders

  • Programmer utført en gang per fragment, sent i rørledningen. Kan ikke få tilgang til andre toppunkt eller piksler. Beregner opacitet, farge, z-verdi, teksturkoordinater.

Feng skyggelegging

Feng skyggelegging

per piksel;

Phong-refleksjonsmodell

  • Transformer posisjonen og det normale fra objektområdet til verdensrommet i hvert toppunkt. Ved hver piksel, interpolér og normaliser overflatenormalen og oppsummer de forskjellige belysningskomponentene (omgivelser + diffus + spekulær) for å beregne den endelige pikselfargen.

OpenGL tutorials

varierende vec3 N; varierende vec3 v; void main (void) {v = vec3 (gl_ModelViewMatrix * gl_Vertex); N = normalisere (gl_NormalMatrix * gl_Normal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }
varierende vec3 N; varierende vec3 v; void main (void) {vec3 L = normalisere (gl_LightSource [0] .position.xyz - v); vec3 E = normalisere (-v); vec3 R = normalisere (-refleksjon (L, N)); // ambient vec4 Iamb = gl_FrontLightProduct [0] .ambient; // diffus vec4 Idiff = gl_FrontLightProduct [0]. diffus * maks (prikk (N, L), 0,0); Idiff = klemme (Idiff, 0,0, 1,0); // specular vec4 Ispec = gl_FrontLightProduct [0] .specular * pow (maks (punkt (R, E), 0,0), 0,3 * gl_FrontMaterial.shininess); Ispec = klemme (Ispec, 0,0, 1,0); // total farge gl_FragColor = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec; }

Svar 2:

Hva er en Vertex Shader?

Vertex Shader

Husk at skyggelegger for Tessellasjon og geometri er valgfritt.

Vertex Shader-innganger

Attributter

uniformer

Read-Only

posisjoner, normaler og uv-koordinater

ALLE

Vertex Shader-utganger

gl_Position

Read-Only

varierende / out

Attributter

varierende / out

Uniform

Hva er en Fragment Shader (også kjent som Pixel Shader)?

Uniform

rasterenhet

Innspill til en Fragment Shader

Vertex

flislegging

Geometri-skyggelegger

flat

varierende / out

  • Teksturkoordinater: Brukes som en av parametrene i teksturfunksjonen () -funksjonen. Ver-vertex refleksjonsvektorer: Brukes i miljøkartlegging, terningkartlegging eller enhver operasjon som involverer refleksjon. .Geometriske koordinater i modell- eller visningskoordinater.Lysintensitet: Brukes i scener ved bruk av per-vertex belysning. Motstandsvektorer fra vertikater til lyskilder: Brukes til spotbelysning / Phong-skyggelegging.

Utganger fra en Fragment Shader

vec4

Graphics Shaders: Theory and Practice, Second Edition: Mike Bailey, Steve Cunningham: 9781568814346: Amazon.com: Books


Svar 3:

Hva er en Vertex Shader?

Vertex Shader

Husk at skyggelegger for Tessellasjon og geometri er valgfritt.

Vertex Shader-innganger

Attributter

uniformer

Read-Only

posisjoner, normaler og uv-koordinater

ALLE

Vertex Shader-utganger

gl_Position

Read-Only

varierende / out

Attributter

varierende / out

Uniform

Hva er en Fragment Shader (også kjent som Pixel Shader)?

Uniform

rasterenhet

Innspill til en Fragment Shader

Vertex

flislegging

Geometri-skyggelegger

flat

varierende / out

  • Teksturkoordinater: Brukes som en av parametrene i teksturfunksjonen () -funksjonen. Ver-vertex refleksjonsvektorer: Brukes i miljøkartlegging, terningkartlegging eller enhver operasjon som involverer refleksjon. .Geometriske koordinater i modell- eller visningskoordinater.Lysintensitet: Brukes i scener ved bruk av per-vertex belysning. Motstandsvektorer fra vertikater til lyskilder: Brukes til spotbelysning / Phong-skyggelegging.

Utganger fra en Fragment Shader

vec4

Graphics Shaders: Theory and Practice, Second Edition: Mike Bailey, Steve Cunningham: 9781568814346: Amazon.com: Books