Gå til innhold

OpenGL 4.0 på banen


Anbefalte innlegg

Videoannonse
Annonse

Veldig gode nyheter! Jeg var ikke klar over at disse var på vei. OpenGL 3.2 er jo fortsatt sterk på både funksjonalitet og ytelse sammenlignet med DirectX 10 og det er jo ikke mye som støtter DirectX 11 ennå.

 

Det virker som Khronos er på virkelig hugget og baner vei for ny API-funksjonalitet og egenskaper. Det er godt å se at de ikke bare tenker på de nyeste grafikkortene (OpenGL 4.0), men også tar hensyn til de med eldre skjermkort og optimaliserer så godt som mulig for de (OpenGL 3.3). Særlig DP operasjoner og IO kommer til å få stor betydning for akselerasjon innen tallknusing.

Lenke til kommentar

OpenGL

 

1.0 1992 (januar)

1.1 1997 (januar)

1.2 1998 (mars)

1.2.1 1998 (oktober)

1.3 2001 (august)

1.4 2002 (juli)

1.5 2003 (juli)

2.0 2004 (september)

2.1 2006 (juli)

3.0 2008 (juli)

3.1 2009 (mai)

3.2 2009 (desember)

3.3 2010 (mars)

4.0 2010 (mars)

 

Det er ikke bare tallene som har begynt å rulle ut raskere. Ser man på versjonshistorikken så øker også funksjonaliteten mye raskere nå enn før. Det vitner altså om solid framdrift i OpenGL for tida.

Lenke til kommentar

Vel og bra er dette, men jeg savner fortsatt mye av funksjonaliteten som ble lovet i 3.0. Skulle ønske objektorientering ble prioritert høyere. Når man begynner å få en del kode slik som det er i dag blir koden veldig tung og uoversiktelig. Når det gjelder 3d-kvaliteten, -ytelsen og -effekter er det vel egentlig lite å utsette på det.

Lenke til kommentar

Sannsynligvis ikke.

Her er hva som er nytt

New features in OpenGL 4.0, including the extension or extensions if any on which

they were based, include:

Support for OpenGL Shading Language 4.00, including new fragment

shader texture functions (textureLOD) that return the results of automatic

level-of-detail computations that would be performed if a texture lookup

were performed (GL_ARB_texture_query_lod - this extension only affects

the shading language, not the API).

Ability to set individual blend equations and blend functions for each color

output (GL_ARB_draw_buffers_blend).

Mechanism for supplying the arguments to a DrawArraysInstanced or

DrawElementsInstancedBaseVertex drawing command from buffer object

memory (GL_ARB_draw_indirect).

Many new features in OpenGL Shading Language 4.00 and related APIs to

support capabilities of current generation GPUs (GL_ARB_gpu_shader5 -

see that extension specification for a detailed summary of the features).

Support for double-precision floating-point uniforms, including vectors and

matrices, as well as double-precision floating-point data types in shaders

(GL_ARB_gpu_shader_fp64).

Ability to explicitly request that an implementation use a minimum number

of unique set of fragment computation inputs when multisampling a pixel

(GL_ARB_sample_shading).

Support for “indirect subroutine calls”, where a single shader can include

many subroutines and dynamically select through the API which subroutine

is called from each call site (GL_ARB_shader_subroutine).

New tessellation stages and two new corresponding shader types, tessellation

control and tessellation evaluation shaders, operating on patches (fixed-sized

collections of vertices) (GL_ARB_tessellation_shader).

Support for three-component buffer texture formats RGB32F, RGB32I, and

RGB32UI (GL_ARB_texture_buffer_object_rgb32).

Cube map array textures, 2-dimensional array textures that may contain

many cube map layers. Each cube map layer is a unique cube map image set

(GL_ARB_texture_cube_map_array).

New texture functions (textureGather) that determine the 2x2 footprint

used for linear filtering in a texture lookup, and return a vector consisting of

the first component from each of the four texels in the footprint (GL_ARB_-

texture_gather).

Additional transform feedback functionality including

– transform feedback objects which encapsulate transform feedbackrelated

state;

– the ability to pause and resume transform feedback operations; and

– the ability to draw primitives captured in transform feedback mode

without querying the captured primitive count

(GL_ARB_transform_feedback2).

Additional transform feedback functionality including increased flexibility

in how vertex attributes can be written to buffer objects and new support for

multiple separate vertex streams (GL_ARB_transform_feedback3).

edit: hva har skjedd med "skjul" taggen?

edit2: En kjapp oppsummering er et nytt shader språk (fra 3.3 til 4.0), støtte for 64-bit flyttall og tesselation.

Endret av GeirGrusom
Lenke til kommentar

OpenGL 3.2 ligger mellom Direct3D 10 og 11 i funksjonalitet. De viktigste nyhetene i Direct3D 11 er directcompute og SM5 med tessellation. OpenGL kan samarbeide med OpenCL, og OpenCL er et minst like anvendelig api som directcompute. Og i OpenGL har det vært utvidelser for fixed pipeline tessellation (som veldig enkelt forklart er mindre fleksibelt enn shadere, men som fremdeles kan brukes til det meste) i over tre år, men "ingen" har utnyttet dette siden det er først nå skjermkortetene er i stand til å bruke det pga. ytelsen. OpenGL 3.2 + OpenCL 1.0 ligger altså rett bak DirectX 11 på dette området, og jeg har ennå ikke sett et eneste spill eller en eneste demo som drar nytte av funksjonalitet som OpenGL 3.2 ikke klarer. F.eks. demoen som viser hvordan DirectX 11 er i stand til å tegne et hav har nVidia også laget med OpenGL.

 

Men det er nå glimrende at Khronos har fått ferdig OpenGL 3.3 og 4.0, og som jeg håpet på har forgrenet utviklingen til ulike typer gpuer, altså de nyeste skjermkortene skal ikke holdes tilbake av bakoverkompatiblitet i stor grad.

 

Jeg har bare rukket å lese raskt gjennom spesifikasjonene, men det burde ikke være tvil om at OpenGL 4.0 er det kraftigste apiet for grafikk, både spill og CAD. Forøvrig kan det nevnes at spillselskaper som iD, Blizzard, Epic Games og TransGaming har deltatt i utviklingen, Epic Games ble nylig med i Khronos.

 

Det som gjenstår nå er at både nVidia og AMD/ATI klarer å lage gode drivere som støtter de nye spesifikasjonene. Jeg tror at nVidias kommende 200-serie med drivere har dette med, men når AMD/ATI tenker å gjøre noe med saken vet jeg ikke. Med OpenGL 3.2 mente de at Catalyst 9.12 skulle ha det implementert, men både 9.12 og 10.1 hadde en delvis defekt glsl-kompilator. Jeg klarer ikke å fatte hvordan de kan finne på å gi ut drivere som ikke får kompilert glsl. ATI var forøvrig veldig sene med både 3.1 (9.08) og 3.0 (8.12).

(Notis: bare så det er sagt, jeg er på ingen måte fornøyd med nVidia sine drivere heller, men akkurat dette har nVidia kontroll på)

 

 

I tilfelle noen var i tvil, OpenGL 3.x kjører på samme maskinvare som DirectX 10, og OpenGL 4.x på samme maskinvare som DirectX 11.

Lenke til kommentar

Verdt å få med seg at Valve nå gir ut alt med OpenGL:

http://www.phoronix.com/scan.php?page=news_item&px=ODA1MA

 

Hyggelig å se at OpenGL nå tar ledelsen som API etter all kritikken som kom for et par år siden. Med spillmotorer som Unigine, er nå endelig nødvendig verdikjede også på plass for de som ønsker å lage høykvalitets spill plattformuavhengig.

 

Kan se ut som pendelen endelig har svingt, og Microsoft sitt ballegrep på markedet løsner. Grunnene for å holde seg til dx blir færre for hver dag.

Lenke til kommentar

Når bruker PC'ene våre OpenGL og når bruker de DirectX? Kanskje ett rart spørsmål, men jeg synes det er ett ganske godt spørsmål.

Det kommer an på utvikleren. For den gjengse bruker har det liten praktisk betydning. Det finnes spillmotorer som støtter begge deler (Unreal, og sannsynligvis Cryengine 3) men det er blitt langt mindre vanlig nå, ettersom en er langt mindre avhengig av fixed function som tidligere utgjorde en vesentlig større forskjell mellom API-ene. Quake2 støttet kun Software og OpenGL (og MiniGL for 3dfx eiere)

Unreal støttet OpenGL, Direct3D, Software og 3dfx Glide. Software og 3dfx glide er nok blitt droppet i nyere versjoner, men OpenGL og Direct3D støttes, ettersom Direct3D brukes i Windows og 360, mens GL brukes på alle andre systemer, som Linux, PS3 eller Mac OS.

 

Fordelen med OpenGL er helt klart kryssplattform som gjør at et program skrevet for OpenGL, så vil grafikkmotoren kunne relativt enkelt flyttes til andre systemer (som Mac OS eller Playstation 3)

 

Fordelen Direct3D har, er at det er ikke bakoverkompatibelt, som gjør at Direct3D har nær sagt droppet all fixed function for lenge siden som har en fordel på ytelse, ettersom det gjør det enklere for utviklere å skrive drivere for Direct3D.

 

Jeg er i kjernen en OpenGL person, men har blitt litt demotivert av Khronos sin oppførsel ved lanseringen av OpenGL 3.0.

 

Jeg skal ihvertfall prøve å sette meg inn i OpenGL igjen. Merker jeg trenger et nytt skjermkort som har Direct3D 11 støtte også.

Lenke til kommentar

Bør kanskje understreke at OpenGL kjører på alt, også windows. Så utvikler du med opengl kan det portes til alle plattformer.

 

Når det gjelder ytelsesfordel til d3d, så vil jeg like å se dokumentasjon. Dette er i beste fall kontroversielt.

 

At man dropper bakoverkompatibilitet i hver versjon er ikke nødvendigvis en fordel heller. Det er en ulempe for alle som ønsker å gjenbruke kode i nyere versjoner, det muliggjør derimot raskere utvikling av API, og et renere API. Uansett vil jeg tro de fleste hadde vært tjent med at Nvidia og ATI bruker tiden til å utvikle dx-driver til i stedet å gjøre opengl bedre.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...