Var lagras program i grafikkort, exem; PhysX, FXAA, m.fl. ( ? )

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Sep 2008

Var lagras program i grafikkort, exem; PhysX, FXAA, m.fl. ( ? )

Som Topic lyder så undrar jag, var exakt lagras såna här algoritmer/program som hanterar grafikkortets behandling av data..

För jag har undrat det ett tag nu, men jag kan inte lista ut om grafikkortet har ett inbyggt minne som hanterar detta, om det är något som "aktiverar" algoritmerna till GPU kärnan eller hur exakt det fungerar,
så om någon kunde upplysa mig så vore jag tacksam.

GPU kärnan skall det ju vara, inte CPU
Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Mar 2013

CPU'n har inget med det att göra. Det är GPU och GPU-minnet. Programmen består av kompilerade "shaders" (googla GLSL för OpenGL och HLSL för Direct3D), finns en del olika men dom mest vanliga är vertex shaders och fragment shaders. Modern OpenGL till exempel kör allting i dessa shaders (till skillnad mot äldre OpenGL, som kör mycket i "fixed pipeline"). Allting ifrån matris-uträkningar till häftiga effekter.

Fragmentshaders/Pixelshaders är program som körs för varje pixel i en buffer(läs bild), så till exempel "Bloom"-effekten gör detta: Kopierar hela framen som visas just nu, förminskar den ~4-8 ggr, förstorar upp den igen till originalstorlek, och "ritar" den bilden på framen med additiv blending (dvs använder den ändrade framen lite som ett "ljus" över framen).

Vertex-shaders är program som körs för varje vertex i en buffer(VBO/VAO), bra skit för "förvrängningar", eller för att simulera vågor i vatten. Som sagt så använder modern opengl Vertexshaders för att bara rita vertices nuförtiden(istället för fixed pipeline), men att simulera vattenvågor är ett bra exempel för att förklara vad det är.

EdIT: För att klargöra, dessa shaders skriver programmerare och sen laddar upp till GPU-minnet, där det körs på GPU'n. Ungefär som vanliga program som laddas in i RAM-minnet och sen körs på CPUn. PhysX är lite av en annan historia då det använder sig av CUDA-architekturen i GPUs bland annat. Google är din vän för såna invecklade grejer.

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Sep 2008
Skrivet av Haikarainen:

CPU'n har inget med det att göra. Det är GPU och GPU-minnet. Programmen består av kompilerade "shaders" (googla GLSL för OpenGL och HLSL för Direct3D), finns en del olika men dom mest vanliga är vertex shaders och fragment shaders. Modern OpenGL till exempel kör allting i dessa shaders (till skillnad mot äldre OpenGL, som kör mycket i "fixed pipeline"). Allting ifrån matris-uträkningar till häftiga effekter.

Fragmentshaders/Pixelshaders är program som körs för varje pixel i en buffer(läs bild), så till exempel "Bloom"-effekten gör detta: Kopierar hela framen som visas just nu, förminskar den ~4-8 ggr, förstorar upp den igen till originalstorlek, och "ritar" den bilden på framen med additiv blending (dvs använder den ändrade framen lite som ett "ljus" över framen).

Vertex-shaders är program som körs för varje vertex i en buffer(VBO/VAO), bra skit för "förvrängningar", eller för att simulera vågor i vatten. Som sagt så använder modern opengl Vertexshaders för att bara rita vertices nuförtiden(istället för fixed pipeline), men att simulera vattenvågor är ett bra exempel för att förklara vad det är.

EdIT: För att klargöra, dessa shaders skriver programmerare och sen laddar upp till GPU-minnet, där det körs på GPU'n. Ungefär som vanliga program som laddas in i RAM-minnet och sen körs på CPUn. PhysX är lite av en annan historia då det använder sig av CUDA-architekturen i GPUs bland annat. Google är din vän för såna invecklade grejer.

De GPU minnet, sitter utanför själva GPUn eller är det en integrerad del?

Tackar iallafall för en bra förklaring.

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Mar 2013
Skrivet av icelaw:

De GPU minnet, sitter utanför själva GPUn eller är det en integrerad del?

Tackar iallafall för en bra förklaring.

Det sitter på grafikkortet. Dom flesta nya grafikkort har typen GDDR5-minne.