Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - h45h

Strony: [1] 2 3
1
OpenGL / Odp: ARB normalizacja
« dnia: Wrzesień 02, 2009, 22:26:51 »
DP3 r0.w,r0,r0;
RSQ r0.w,r0.w;
MUL r0.xyz,r0,r0.w;

To standardowy sposób ;) Szybciej się nie da zrobić. Każdą składową wektora mnożysz przez odwrotność długości wektora.

2
OpenGL / Odp: Multisampling + depth renderbuffer
« dnia: Wrzesień 01, 2009, 21:20:24 »
Heh, w takim razie zostaje mi odkryć jak na ATI samplować depth render-buffer przed skopiowaniem go do tekstury... OpenGL to ciężki kawał chleba i prawdziwy mistrz pod względem ilości rozszerzeń, a wśród nich garstka tych na prawdę pożytecznych. Niestety, w tym roku RiverWash mnie ominie, ale mam nadzieję, że na przyszłą edycję się już wybiorę ;)

3
OpenGL / Multisampling + depth renderbuffer
« dnia: Sierpień 31, 2009, 12:42:44 »
Witam, ostatnio postanowiłem zawalczyć o multisampling z użyciem FBO w moim silniku. Posłużyło mi do tego celu rozszerzenie GL_EXT_framebuffer_multisample (wcielone już później w core OpenGL), za pomocą którego stworzyłem sobie dwa renderbuffery, które podpiąłem do framebuffera, w którym rysuję scenę:

glGenRenderbuffers...
glBindRenderbuffer...
glRenderbufferStorageMultisample(GL_RENDERBUFFER,0,GL_RGBA16F,bufferSizeX,bufferSizeY);

glGenRenderbuffers...
glBindRenderbuffer...
glRenderbufferStorageMultisample(GL_RENDERBUFFER,0,GL_DEPTH_COMPONENT24,bufferSizeX,bufferSizeY);

...

glGenFramebuffers...
glBindFramebuffer...
glFramebufferRenderbuffer(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_RENDERBUFFER,bufferMultiRenderID);
glFramebufferRenderbuffer(GL_FRAMEBUFFER,GL_DEPTH_ATTACHMENT,GL_RENDERBUFFER,bufferMultiDepthID);

Posiadam też inny framebuffer, do którego zawartość jest kopiowana po narysowaniu wszystkiego właśnie z bufora powyżej. Potrzebny jest on mi do postprocessingu, ma on identyczne parametry, tylko, że zamiast renderbufferów, używam tekstur.

glGenTextures...
glBindTexture(GL_TEXTURE_RECTANGLE,bufferDepthID);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_RECTANGLE,0,GL_DEPTH_COMPONENT24,bufferSizeX,bufferSizeY,0,GL_DEPTH_COMPONENT,GL_UNSIGNED_BYTE,NULL);

glGenTextures...
glBindTexture(GL_TEXTURE_RECTANGLE,bufferColorID);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_RECTANGLE,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_RECTANGLE,0,GL_RGBA16F,bufferSizeX,bufferSizeY,0,GL_RGBA,GL_UNSIGNED_BYTE,NULL);

glGenFramebuffers...
glBindFramebuffer(GL_FRAMEBUFFER,bufferID);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_RECTANGLE,bufferColorID,0);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_DEPTH_ATTACHMENT,GL_TEXTURE_RECTANGLE,bufferDepthID,0);

Jak powiedziałem po narysowaniu sceny przerzucam sobie zawartość do bufora z teksturami:

glBindFramebuffer(GL_READ_FRAMEBUFFER,...);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER,...);
glBlitFramebuffer(0,0,bufferSizeX,bufferSizeY,0,0,bufferSizeX,bufferSizeY,GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT,GL_NEAREST);
glBindFramebuffer(GL_FRAMEBUFFER,bufferID[0]);

I tutaj właśnie pojawia się problem - multisampling działa poprawnie, bufor koloru się ładnie przerzuca, ale strasznie wygląda bufor głębi (http://asenses.untergrund.net/h45h/depth-ms.png). Przy wyłączonym multisamplingu jest z nim wszystko OK (http://asenses.untergrund.net/h45h/depth.png). Jest ktoś w stanie to wyjaśnić? Kod jest raczej poprawny, możliwe, że to wina sterowników/karty graficznej, ale nie jestem pewien.

4
OpenGL / Odp: Geometry shader a GL 3.1
« dnia: Sierpień 26, 2009, 16:28:52 »
for(int i = 0; i < gl_VerticesIn; [b]++i[/b]) Może to jest problemem? Daj tradycyjne i++ i powiedz, czy działa :)


----
EDIT:
sam sprawdziłem i to nie zmienia działania programu, ale z GLSL zawsze była rzeźnia :)

5
OpenGL / Odp: OpenGL + fixed point + NVidia
« dnia: Maj 30, 2007, 23:12:20 »
Problem niby prosty, bo mam w silniku VSM i float point 16 zrobił mi błoto z cieni :) Na ATI przy fixed-ach chodziło wszystko całkiem ładnie (także jeśli chodzi o filtrowanie). Póki co to rozwiązałem ten problem przenosząc część bitów do dwóch wolnych komponentów tekstury, jednak IMO jest to dość mało wygodne rozwiązanie. Dlatego jeśli ktoś wie coś o fixed na kartach NV to proszę o radę :)

6
OpenGL / Odp: OpenGL + fixed point + NVidia
« dnia: Maj 30, 2007, 14:54:56 »
to przeskaluj do floata, proste. z 0-1 na 0-iles i potem na 0-1

Proszę, abyś czytał uważnie, bo napisałem przecież wcześniej, że zależy mi na dokładności.

7
OpenGL / Odp: OpenGL + fixed point + NVidia
« dnia: Maj 30, 2007, 08:05:19 »
A mogę mieć takie szczęście będąc w posiadaniu GF 7300? :) Chciałbym też, aby działało to na większości kart z serii 6xxx. Wydaje mi się, że jak DX na to pozwala, to OpenGL też powinno, mimo tego, że jest już trochę zaniedbane. Nie muszą to być liczby z zakresu np. <0,65535>, mogę sobie skalować do przedziału <0,1>. Chodzi mi po prostu o to, aby używać pamięci jako fixed pointy. Aby jeszcze bardziej rozjaśnić (heh, ja to mam talent do mieszania ;)) to dam jako przykład format GL_RGBA16_EXT, który pięknie działa na kartach ATI, a na GF chodzi mi tylko floatowy jego odpowiednik. Z istotnych rzeczy to przyda mi się tylko filtrowanie, natomiast blending, mipmapy itp. mogą wogóle nie być wspierane.

8
OpenGL / OpenGL + fixed point + NVidia
« dnia: Maj 28, 2007, 23:41:21 »
Cześć,

mam nietypowy problem, otóż szukam 16 bitowych intowych formatów rendertargeta, które działałyby na kartach NVidii. Każdy, kto miał podobny problem proszony jest o natychmiastową odpowiedź ;) Z tego co wiem, to w DirectX-ie działa integerowe A16B16G16R16 i G16R16, jednak GLowskie odpowiedniki tychże formatów nie chodzą jak należy (a konkretnie wogóle nie chodzą). Zależy mi na intach, ponieważ float (16 bitowy) w moim przypadku ma znacznie za małą dokładność.

Greetz, h45h

9
OpenGL / Odp: ambient occlusion
« dnia: Maj 27, 2007, 23:27:46 »
AO nie generuje rzeczywistych cieni, tutaj ilość świateł nie gra roli, a co za tym idzie czas generacji jest zawsze taki sam. Jest to tylko algorytm oszukanego Global Illumination. Polega ono na tym, że w pewnych obszarach przyciemnia scenę (zależnie od odległości reszty polygonów od renderowanego pixela). Jeżeli chcesz mieć super realistyczną grafikę w Real Time to AO może być przydatne, niestety bez odpowiednich precalców się nie obejdzie ;) Ostatnio coraz więcej mówi się o PRT, a tutaj już na prawdą warto inwestować czas, jednak będzie znacznie więcej roboty (no i jest wymagana dobra znajomość matmy). Dynamiczne AO stosuje się do obiektów poruszających się (czyli dynamicznych ;)) tak więc nie widzę sensu implementować dynamiki do statycznej sceny bo to po prostu nic nie zmieni, a przy dobrych optymalizacjach AO potrafi być szybciutkie.

10
OpenGL / Odp: rysowanie glBegintylko krawędzi
« dnia: Styczeń 28, 2007, 23:04:48 »
zamiast np.

glBegin(GL_TRIANGLES);

zrob

glBegin(GL_LINES);

najprostszy sposob :)

11
Szkółka / Odp: Jak zrobić gre 3D?
« dnia: Grudzień 21, 2006, 16:55:52 »
Skoro poruszono temat okularków 3D, to może w jakiś sposób dało by się zrobić taki efekt ?
Tak żeby na podstawie odległości rozmywał się obraz na czerwony i niebieski. Fajnie by było sobie w taką gre pograć :D
Macie jakiś pomysł ?
Możnaby na przykład renderować całą grafikę 3D dwa razy. Za każdym razem czyścić Z-bufor i od nowa rysować całą scenę, ale zapisując tylko składową czerwoną lub tylko niebieską koloru. Możnaby to zrobić używając pixel shadera lub nawet bez, używając flagi D3DRS_COLORWRITEENABLE.

Tak sie wlasnie robi. Rysuje sie scene dwa razy z tym, ze z malym przesunieciem: dla lewego i prawego oka z wlaczonym maskowaniem kolorow (np. lewe oko - rysowanie tylko czerwonego koloru, prawe - niebieskiego i zielonego). BTW wiekszosc kart NVidii pozwala w grach uzywac efektu stereoskopowego, tylko trzeba w ustawieniach karty pogrzebac.

12
Matematyka i fizyka / Odp: Tangent Space
« dnia: Grudzień 20, 2006, 20:39:58 »
To tak zwany iloczyn wektorowy :)
Mamy dwa wektory, mnożymy je przez siebie i otrzymujemy trzeci. Dlatego jeden z tangentów możemy otrzymać "w locie", nie marnując pamięci na trzy wektory opisujące osie układu współrzędnych i czasu na przeniesienie ich do pamięci karty. Iloczyn wektorowy wygląda tak:
Cx = AyBz-AzBy
Cy = AzBx-AxBz
Cz = AxBy-AyBx

Jak możesz zauważyć jest on zastosowany w Twoim kodzie, z tym że po małym przekształceniu.

Btw:
Tak dla jasności - nie ma czegoś takiego, jak binormal. Jest to forma niepoprawna, gdyż z tego co wiem, to jest tylko jeden wektor normalny i mogą być dwa styczne. Poprawnie powinno się nazywać go bitangentem :)

13
Matematyka i fizyka / Odp: Ray Tracing - punkt przecięcia z boxem
« dnia: Grudzień 20, 2006, 16:13:09 »
Już sobie poradziłem, BTW szukałem algorytmu na wyznaczenie punktu przecięcia, bo sprawdzenie, czy półprosta przecina kostkę jest wręcz banalne. W każdym razie dzięki za chęci i pomoc.

14
Matematyka i fizyka / Ray Tracing - punkt przecięcia z boxem
« dnia: Grudzień 19, 2006, 22:26:16 »
Myślę, że temat już wyczerpał moją wypowiedź, ale wyjaśnię dokładniej. Szukam jak najprostszego algorytmu znajdującego punkt przecięcia promienia z boxem, może być to nawet sześcian. Jeśli ktoś kiedyś miał podobny problem, to czekam na porady.

Pozdrawiam

15
Projekty rozpoczęte / Odp: Endless Theory - Intro 512b
« dnia: Listopad 19, 2006, 11:23:20 »
Kiedy Asenses zrobi jakies demko? ;p;p

Hm... Nie bede nic rozpowiadal na razie :)
Ale prace nad demem (a wlasciwie intrem) trwaja... byc moze w pierwszym kwartale 2007 roku cos wydamy.
Dodam jeszcze, ze niestety wymagania (glownie chodzi o karte graficzna) nie beda zbyt skape, ale postaramy sie je zanizyc , jak tylko bedzie to mozliwe.

Strony: [1] 2 3