játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5441
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]
Asylum - Törzstag | 5441 hsz       Online status #211434   2017.06.02 21:19 GMT+1 óra  
Na akkor tanulmányozd mélységeiben az első cikket.

Belépszintű megoldás az, ami le van írva (POM-al együtt számolt árnyék). Persze te nem ezt szeretnéd, na de.

Ha ki tudtál számolni egy depth-et a POM-hoz általában, akkor egy shadow map-hez is ki tudod számolni. Kérdés, hogy szükséges-e...

Szerintem általában nem...amikor a POM renderinget végzed, akkor a shadow map rendelkezésre állhat...akkor viszont megintcsak megfelelő módon tudsz árnyalni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
racz16 - Tag | 4 hsz       Online status #211430   2017.06.02 16:01 GMT+1 óra  
Hát én ezt nem egészen értem. POM-hoz kiszámolok egy magasságot, amit ha a normál vektor irányában levonok a fragment position-ből, akkor megkapom az új, POM-os pozíciót. De ehhez nem hasonlíthatom a shadow map-et, mert a shadow mapbe még az eredeti felület mélysége van, nem a POM-os. A POM-os számításokat meg nem akarom a shadow map meg a scene lerenderelésekor is kiszámolni, ha nem muszáj.
De még ha ezt meg is tenném, akkor se lenne jó, nem? Mert pont az a lényeg, hogy nem az adott pozícióhoz tartozó mélység kell, hanem annak a pontnak a mélysége, ami abban a pontban látszik, ez a POM lényege. Szóval a shadow map textura koordinátáihoz kéne még valami offset is, nem?

   
Asylum - Törzstag | 5441 hsz       Online status #211423   2017.06.01 21:28 GMT+1 óra  
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch36_relief.html
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch43_shadowmaps.html

Egyébként baromi egyszerű: a shadow mappinghez mi kell? Egy depth érték, amihez hasonlítasz. De hát azt a POM-ban amúgyis kiszámoltad... Akkor meg mi a probléma?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
racz16 - Tag | 4 hsz       Online status #211421   2017.06.01 18:40 GMT+1 óra  
Sziasztok, valaki tud megoldást arra, hogy hogyan lehetne parallax occlusion mapping-et és shadow mapping-et együtt használni? Külön-külön működnek rendesen, de ha egy modell árnyékot vet egy olyan modellre, ami POM-ot használ, akkor árnyék az eredeti felületen jelenik meg, nem a benyomott felületen, tehát kb. a benyomott felület felett lebeg. Hogyan lehetne az árnyékot a megfelelő helyre igazítani?

   
Lord_Crusare - Törzstag | 1287 hsz       Online status #211187   2017.04.13 10:28 GMT+1 óra  
Ja oké, valamiért nem jutott eszembe jobbra görgetni

   
Asylum - Törzstag | 5441 hsz       Online status #211186   2017.04.13 10:24 GMT+1 óra  
Idézet
Lord_Crusare :
A cikk végén a két kép a randomizálás/rekonstrukcióról nálam ugyanarra az egy képre mutat.



Ami két kép egymás mellett (könnyebb összehasonlítani).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Lord_Crusare - Törzstag | 1287 hsz       Online status #211185   2017.04.13 09:46 GMT+1 óra  
Idézet
Asylum :
Kiraktam a GTAO cikket:

http://darthasylum.blog.hu/2017/04/12/ambient_occlusion



A cikk végén a két kép a randomizálás/rekonstrukcióról nálam ugyanarra az egy képre mutat.

   
Asylum - Törzstag | 5441 hsz       Online status #211184   2017.04.12 21:59 GMT+1 óra  
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210939   2017.02.04 07:06 GMT+1 óra  
Én azért használom, mert elmászna a beállított dir fény. Abból is csak egyet. De pl ha az ambient mondjuk lilás, a diffuse meg fehér, akkor az átmeneten szépen látszik is, meg az ambient nem szól bele a diffuse-ba, mert ugye a max miatt csak addig érvényesülnek a színek (egyesével), míg a diffuse fölé nem megy. Ha hozzá adjuk, akkor mindig lilásra színezi, és nem a hátoldalra fisszapattanó fényt "szimulálja".
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210937   2017.02.03 22:51 GMT+1 óra  
Ez is leírja, hogy mivel lusta disznó tone mappelni inkább a [0, 1]-be skálázza. Egyébként jó nagy baromságot ír, szóval ha ez új cikk, akkor egyes.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210935   2017.02.03 19:16 GMT+1 óra  
Megkeresem, mert "új"abb shaderről van szó, nem annyira régiről.

Mivel ambient, a directional fényről van szó konkrétan.

http://www.lighthouse3d.com/tutorials/glsl-tutorial/directional-lights/

(bár pontfényhez is ezt írják)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210934   2017.02.03 19:12 GMT+1 óra  
Ezt _azért_ alkalmazták annakidején mert nem volt még hardveres sRGB support (a pow pedig baromi drága volt). De ez csak egy része a megoldásnak, mert amint additív blendinget használsz elkerülhetetlen a _tone mapping_ is.

De ilyen max sosem volt. Az ambient + ndotl*diff-et skálázták be a [0, 1] intervallumba.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210933   2017.02.03 19:07 GMT+1 óra  
Jó, én hagyományos fénykezelésben gondolkodtam, a gtao meg ezek szerint PBR-es. Az viszont, hogy a fény mindig additív, csak részben igaz, mert hagyományosban a "szebb" az az, amit már említettem.

teljesen kiírva
Kód:
finalcolor=max(ambient*color, diffuse*color+specular);


itt az ambient az ambientek összege, már ha több lenne vhogy, a diffuse meg a diffuse-ok összege és a specular a specularok összege. a color a textúra példa kedvéért.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210931   2017.02.03 18:34 GMT+1 óra  
Te abszolút nem vagy tisztában a PBR-el (olvasd el a cikkemet...). A fények _mindig_ additívek.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210929   2017.02.02 20:58 GMT+1 óra  
Az ambient color minimum color, nem additív a fényhez. ezért a kettő közül a max érvényesül. Legalábbis úgy a szebb, meg a szín tartomány túlzottan fel menne.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210923   2017.02.02 18:51 GMT+1 óra  
?????

Kód:
outColor = ambient * ao + color / pi * dot(n, l);
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210916   2017.02.02 13:32 GMT+1 óra  
Ja hogy ja. Akkor ezt
Kód:
max(AO*color, color*diffuse)

-nál kell használni? ... Meg úgy általában az ssao-t is?
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210914   2017.02.02 12:50 GMT+1 óra  
1) árnyékolt textúra a PBR óta TILOS
2) a lightmap az csak far field occlusion, a GTAO akkor is segít (vagy nem is kell)
3) direkt megvilágításba TILOS AO-t rakni (csakis az ambiens fénybe)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210911   2017.02.02 11:45 GMT+1 óra  
Igen, a közeli függönyökön szépen mutat, de jobb helyeken a függöny textúrája tartalmazná az árnyékot, vagy éppen hagyományos fényekkel és monokróm textúrákkal sem lenne ekkora különbség.
Általános jelenetekben árnyékolt textúrákat alkalmaznak és lightmapet.

De azért szépen működik.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210910   2017.02.02 11:12 GMT+1 óra  
Itt egy összehasonlító kép (GTAO). Annyit megjegyeznék, hogy a Sponza pont rossz ehhez, mert pre-bakelt AO-t tartalmaz sok helyen (pl. oroszlán).

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5441 hsz       Online status #210900   2017.02.01 20:22 GMT+1 óra  
...

A gauss blur szeparálható (külön x, külön y).
A képlet pedig ott van wikipédián (normal distribution).

De a blogomon is: http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch39_hdr.html
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210898   2017.02.01 20:14 GMT+1 óra  
Idézet
Asylum :
A point cloud hogy jön a bloomhoz?



Csak valami vec2 array-t neveztem felhőnek, mivel véletlen pontokat kéne generálnom egy körön belül. kb 32-t. Na mindegy, megírom azt, ha nincs egy jó array.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210896   2017.02.01 20:09 GMT+1 óra  
Qrvára nem tűnik el (most nem tudok shotot csinálni, majd holnap).

A point cloud hogy jön a bloomhoz?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210895   2017.02.01 20:02 GMT+1 óra  
GL 3.3-am van.

Jól néz ki innen. Csak az a gond ezekkel, hogy színekkel már eltűnik az egész. Ezért is hanyagolom a sima ssao-t.

---
Van vmi tipp "pont felhőre" bloom shaderhez? ki akarom azt is javítani, mert most kicsit csúnya, amit rögtönöztem.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210893   2017.02.01 19:44 GMT+1 óra  
GLSL 150 kell csak (és GL 3.2).
A fő problémát amúgy sikerült megoldani, még egy apróság van amit ki kell tenyésztenem.

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210891   2017.02.01 15:47 GMT+1 óra  
Én ránéznék, attól függően, hogy milyen shader model kell hozzá. Asszem van glsl 330-am. De azt se teszteltem még.
Persze segíteni nem biztos, hogy tudok.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210877   2017.01.31 15:34 GMT+1 óra  
A GTAO-val kissé zsákutcában vagyok...ha nyitok neki egy projektet, akkor lenne kedvetek/időtök beszállni? (több szem többet lát alapon)

Az alapokhoz már megírtam a cikket, de jelenleg olyan pontatlanságokkal küzdök, ami gyak. lehetetlen hogy előálljon.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 532 hsz       Online status #210814   2017.01.18 12:42 GMT+1 óra  
Megpróbálhatnál simán kirajzolni egy fullscreen quadot egyetlen textúrával és egy nagyon egyszerű shaderrel. Ha az működik, akkor a shaderrel lesz a gond, ha nem, akkor működik, akkor pedig lehet tovább kutatni.

Amúgy ahogy Asylum is mondta, glEnable nem kell, ha shadert használsz.

   
Asylum - Törzstag | 5441 hsz       Online status #210812   2017.01.18 12:36 GMT+1 óra  
Kód:
GL.Enable(EnableCap.Texture2D);
GL.ActiveTexture(TextureUnit.Texture0);


Ez itt fordítva van (bár ugyanazt csinálja), de ha nincs shader, akkor minden stage-et külön kell engedélyezni (ha meg van shader, akkor nem kell glEnable)

Kód:
// ha NINCS shader
GL.ActiveTexture(TextureUnit.Texture0);
GL.Enable(EnableCap.Texture2D);

GL.ActiveTexture(TextureUnit.Texture1);
GL.Enable(EnableCap.Texture2D);

// stb.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
gopher - Törzstag | 496 hsz       Online status #210811   2017.01.18 12:05 GMT+1 óra  
Ha jol latom, itt ugyanez a problema: http://stackoverflow.com/questions/12936188/opentk-texture-showing-up-full-black

Probalj hibat kiiratni texture betoltes es kirajzolas utan is, hatha van valami (ezt javasoljak ott is) :
Kód:
#if DEBUG GLError error = glGetError(); if (error != GLError.NO_ERROR) { Console.WriteLine("Error {0} occured at {1}", error, "Location"); } #endif


De akar a shader-rel is lehet gond. Esetleg unsigned helyett signed, vagy float van atadva, ahol nem az kene, es linuxnal nem volt gond, itt igen.. Nem tudom, tippelgetek csak
   
Bukta - Tag | 308 hsz       Online status #210809   2017.01.18 10:02 GMT+1 óra  
Tuti, de most odáig jutottam, hogy a textura engedélyezéssel/tiltással van a baj. Van Shaderem is multitexturával, 5 db texturával, amit terrain előtt betöltök aztán render után unbindelek mindent és utánna renderelem a modelleket. Megint bindelek render, unbind. Na és itt van valami baj a bind/unbind-nél. Van hogy látszanak a modellek legalábbis ha nem unbindelem a terrain texturáit.
Ezek a fv-ek vannak (A Terrainbol vettem ki, de bind,unbind a modelleknél is igy néz ki):
Kód:
public void BindBuffers() {
   GL.BindBuffer(BufferTarget.ArrayBuffer, VBOid[0]);
   GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 0);
   GL.VertexAttribPointer(1, 3, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 3 * sizeof(float));
   GL.VertexAttribPointer(2, 2, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 6 * sizeof(float));
   GL.BindBuffer(BufferTarget.ElementArrayBuffer, VBOid[1]);
}
public void BindTextures() {
   GL.Enable(EnableCap.Texture2D);
   GL.ActiveTexture(TextureUnit.Texture0);
   GL.BindTexture(TextureTarget.Texture2D, DirtTexture);
   GL.ActiveTexture(TextureUnit.Texture1);
   GL.BindTexture(TextureTarget.Texture2D, GrassTexture);
   GL.ActiveTexture(TextureUnit.Texture2);
   GL.BindTexture(TextureTarget.Texture2D, SandTexture);
   GL.ActiveTexture(TextureUnit.Texture3);
   GL.BindTexture(TextureTarget.Texture2D, StoneTexture);
   GL.ActiveTexture(TextureUnit.Texture4);
   GL.BindTexture(TextureTarget.Texture2D, BlendMap);
}
public void UnBindTextures() {
   GL.BindTexture(TextureTarget.Texture2D, 0);
   GL.Disable(EnableCap.Texture2D);
}
public void UnBindBuffers() {
   GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
   GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}


Kód:
terrain.BindBuffers();
terrain.BindTextures();
GL.DrawElements(PrimitiveType.Triangles, localizator.Area.TriangleCount, DrawElementsType.UnsignedInt, IntPtr.Zero);
terrain.UnBindTextures();
terrain.UnBindBuffers();
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
gopher - Törzstag | 496 hsz       Online status #210806   2017.01.18 08:35 GMT+1 óra  
@Bukta: a Bitmap-ban tuti betoltodik az adat, nem lehet hogy path problema van? Video driver rendben van?
   
Bukta - Tag | 308 hsz       Online status #210805   2017.01.18 07:44 GMT+1 óra  
Hali!

Elővettem az OpenGL-es projektemet - amit közbe-közbe szoktam fejlesztgetni. Eddig Ubuntu alatt csináltam, de most átjöttem win-re a VS2012 miatt. Na most olyan problémám van, hogy win-en nem jelenik meg az 1x16-os Bitmap-ból krehált textúra -ami egy ProgressBar-é. Meg a *.obj fájlokat se rajzolja ki, pedig ott már nagyobb mint 64x64-es textura van (mondjuk az 5x16os textura már megjelenik a ProgressBaron). Magában a kódban nincs logikai hiba, mert egérrel működik a kijelölés szóval ott vannak a modellek csak épp nem látni őket. Viszont a terrain faxán megjelenik, meg úgy a Controlok is csak ez az 1x16os textura nem. Mi lehet a baj? Van valami win speckó dolog amit be kell állítani? Vagy valamit elcsesztem, nem állítottam be és az ubuntu cseszett rá a win meg azt mondja h "megállj van!"?

Itt a textúra betöltő:
Kód:
public static Texture2D CreateTexture2D(Bitmap bmp) {
   int id = GL.GenTexture();
   GL.BindTexture(TextureTarget.Texture2D, id);
   BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
   GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
   bmp.UnlockBits(data);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

   return new Texture2D(id, bmp.Width, bmp.Height);
}


Ja igen C# mert OpenTK ami OpenGL wrapper, de mindig opengl-t írok be google-ba, ugyanaz a megoldás még ha c++-os a kód akkor is, már ha van valami gond. És általában OpenGLből nem tudok valamit és azért rossz. (Ami c#-ba GL.GenBuffer az ogl-be glGenBuffer ennyi a különbség.

Ezt a hozzászólást Bukta módosította (2017.01.18 08:03 GMT+1 óra, 212 nap)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Asylum - Törzstag | 5441 hsz       Online status #210790   2017.01.13 19:13 GMT+1 óra  
Bár tudom h kód önmagában nem sokat segít, de bemásolom. Egyébként nem vagyok már annyira szigorú az enginemmel kapcsolatban, szóval tudok adni teljes forráskódot igény esetén (csak el kell magyaráznom a fordítást).

Kód:
void qWin32Application::AdjustWindow(quint32& width, quint32& height)
{
    RECT    realrect;
    RECT    sourcerect;
    RECT    targetrect;
    LONG    screenwidth     = workarea.right - workarea.left;
    LONG    screenheight    = workarea.bottom - workarea.top;
    float    ratio          = (float)width / (float)height;

    GetWindowRect(hwnd, &sourcerect);
    DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &realrect, sizeof(RECT));

    LONG windowwidth    = realrect.right - realrect.left;
    LONG windowheight   = realrect.bottom - realrect.top;
    LONG errorwidth     = windowwidth - (sourcerect.right - sourcerect.left);
    LONG errorheight    = windowheight - (sourcerect.bottom - sourcerect.top);

    if( windowwidth > screenwidth )
    {
        windowwidth = screenwidth;
        windowheight = (LONG)floor(windowwidth / ratio);
    }

    if( windowheight > screenheight )
    {
        windowheight = screenheight;
        windowwidth = (LONG)floor(windowheight * ratio);
    }

    // get back window bounds
    LONG targetwidth = windowwidth - errorwidth;
    LONG targetheight = windowheight - errorheight;

    targetrect.left     = (screenwidth - targetwidth) / 2;
    targetrect.top      = (screenheight - targetheight) / 2;
    targetrect.right    = (screenwidth + targetwidth) / 2;
    targetrect.bottom   = (screenheight + targetheight) / 2;

    MoveWindow(hwnd, targetrect.left, targetrect.top, targetwidth, targetheight, FALSE);
    GetClientRect(hwnd, &sourcerect);

    // update client area
    width = (quint32)(sourcerect.right - sourcerect.left);
    height = (quint32)(sourcerect.bottom - sourcerect.top);
}


Kód:
void qWin32Application::AdjustFrame(RECT& out, quint32 width, quint32 height, DWORD style)
{
    LONG screenwidth = workarea.right - workarea.left;
    LONG screenheight = workarea.bottom - workarea.top;

    out.left    = (qint32)(screenwidth - width) / 2;
    out.top     = (qint32)(screenheight - height) / 2;
    out.right   = (qint32)(screenwidth + width) / 2;
    out.bottom  = (qint32)(screenheight + height) / 2;

    AdjustWindowRectEx(&out, style, FALSE, 0);
}
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 532 hsz       Online status #210785   2017.01.10 17:42 GMT+1 óra  
Asylum: A lentebbi kódban az AdjustWindow mit csinál? Az AdjustFrame gondolom a rect-et állítja be a paraméterei alapján, utána pedig átméretezed az ablakot.

További apróság csak, hogy a fullscreen-re való állításkor csak az if (hrc) előtti rész különbözik, szóval elég annyit az if-else-be rakni gondolom.

   
proof88 - Törzstag | 528 hsz       Online status #210784   2017.01.10 15:35 GMT+1 óra  
Mivel egyébként is textúrába renderelem az egész jelenetet, így az ablak tényleges mérete nem számít, csak a textúráké.

De a képfelbontás az eredeti marad, tehát számít. Régebbi hardveren simán teljesitményt veszitesz vele. Bár nem tudom mi a célcsoport, de jobban jársz szerintem ha támogatod a rendes fullscreen-re váltást is.
   
Instalok - Tag | 532 hsz       Online status #210779   2017.01.09 13:19 GMT+1 óra  
Ja, nem a tiédre értettem, hanem amivel anno én próbálkoztam.
Köszi, megnézem majd!

   
Asylum - Törzstag | 5441 hsz       Online status #210778   2017.01.09 10:51 GMT+1 óra  
Akkor az egy régebbi verzió lehetett, mert a mostani tökéletesen működik. Kód (hosszú):

Kód:
void qWin32Application::Resize(quint32& width, quint32& height, bool fullscreen)
{
    RECT rect;
    DWORD style = WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;

    dimension.x = width;
    dimension.y = height;

    if( fullscreen )
        style |= WS_POPUP;
    else
        style |= WS_SYSMENU|WS_BORDER|WS_CAPTION|WS_MINIMIZEBOX; // |WS_MAXIMIZEBOX

    if( !fullscreen )
    {
        if( !windowed )
            ChangeDisplaySettings(NULL, 0);

        // w/fs -> w
        AdjustFrame(rect, width, height, style);

        SetWindowLong(hwnd, GWL_STYLE, style);
        SetWindowPos(hwnd, HWND_NOTOPMOST, rect.left, rect.top, rect.right - rect.left,
            rect.bottom - rect.top, SWP_FRAMECHANGED);

        AdjustWindow(width, height);
    }
    else
    {
        if( windowed )
        {
            SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, width, height, SWP_NOACTIVATE);
            SetWindowLong(hwnd, GWL_STYLE, style);
            SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED);

            // w -> fs
            if( hrc )
            {
                SetForegroundWindow(hwnd);
               
                devmode.dmSize = sizeof(DEVMODE);
                devmode.dmBitsPerPel = 32;
                devmode.dmPelsWidth = dimension.x;
                devmode.dmPelsHeight = dimension.y;
                devmode.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;

                if( DISP_CHANGE_SUCCESSFUL != ChangeDisplaySettings(&devmode, CDS_FULLSCREEN) )
                    Console().Error("qWin32Application::Resize(): Could not change display settings");
            }
        }
        else
        {
            // fs -> fs
            SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, width, height, 0);

            if( hrc )
            {
                SetForegroundWindow(hwnd);
               
                devmode.dmSize = sizeof(DEVMODE);
                devmode.dmBitsPerPel = 32;
                devmode.dmPelsWidth = dimension.x;
                devmode.dmPelsHeight = dimension.y;
                devmode.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;

                if( DISP_CHANGE_SUCCESSFUL != ChangeDisplaySettings(&devmode, CDS_FULLSCREEN) )
                    Console().Error("qWin32Application::Resize(): Could not change display settings");
            }
        }
    }

    windowed = !fullscreen;
}
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 532 hsz       Online status #210777   2017.01.09 10:15 GMT+1 óra  
Idézet
proof88 :
Ha fullscreen-t akar a user és nem desktop felbontást, akkor hogyan állítod át a képfelbontást?


Mivel egyébként is textúrába renderelem az egész jelenetet, így az ablak tényleges mérete nem számít, csak a textúráké.

Idézet
Asylum :
A korábbi demómban meg van csinálva rendesen;


Ja, anno én is próbálgattam, de voltak vele gondok: pl., ha egyszerre állítottam a fullscreen state-et meg a felbontást.

Idézet
Asylum :
Az ikonokat nem cseszi szét ha kilépés előtt visszaállítod az eredetit.


Pontosabban, ha visszaállítom akkor, amikor nem aktív az ablak (pl. alt-tab)

   
Asylum - Törzstag | 5441 hsz       Online status #210776   2017.01.09 08:59 GMT+1 óra  
Fullscreenben optimálisabban tud működni a grafikus api, cserébe ilyenekkel megküzdeni pl. dx9 alatt, hogy alt-tab esetén minden GPU erőforrás törlődik (device lost). A korábbi demómban meg van csinálva rendesen; ha beértem a munkahelyre mgenézem a kódot.

Az ikonokat nem cseszi szét ha kilépés előtt visszaállítod az eredetit.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Geri - Törzstag | 2186 hsz       Online status #210775   2017.01.08 23:45 GMT+1 óra  
régebben minden ezt használta, manapság viszont már nem szabad használni, csak ha az user a játék beállításaiban (ha van) KIFEJEZETTEN ezt kéri.

   
proof88 - Törzstag | 528 hsz       Online status #210774   2017.01.08 21:50 GMT+1 óra  
Ha fullscreen-t akar a user és nem desktop felbontást, akkor hogyan állítod át a képfelbontást? Szerintem kb az összes játék használja ezt a függvényt. Sőt még a frissítési frekvenciát is lehet vele állítani.
Azt nem tudom mit jelent hogy szétcseszi az ikonokat.
   
Instalok - Tag | 532 hsz       Online status #210773   2017.01.08 18:36 GMT+1 óra  
Nem nagyon találtam arról infót, hogy van-e értelme fullscreen módot használni. Itt van Windows-on a ChangeDisplaySettings amit mindenféle OGL tutorialban lehet látni. Van egyáltalán értelme használni? Általában csak szétcseszi az asztalon az ikonokat meg minden ilyesmi. Én személy szerint nem örülnék neki, ha a display device beállításait túrkálná egy játék.

Jelenleg csak annyit csinálok, hogyha fullscreent akar, hogy az ablakot átméretezem akkorára, amekkora a jelenlegi felbontása a monitornak, és beállítom, hogy ne legyen kerete. Van bármi előnye a másiknak ezzel szemben?

   
ddbwo - Tag | 1625 hsz       Online status #210767   2017.01.04 18:52 GMT+1 óra  
Éppen postprocessen dolgozom és lenne egy kérdésem. Hogy hasonlítom össze a depth texture mintáját az új adattal? A gl_Position z-je nem működik. De akkor mivel lehet összehasonlítani?

Jó, megtaláltam. gl_FragCoord.z.

Ezt a hozzászólást ddbwo módosította (2017.01.04 19:13 GMT+1 óra, 226 nap)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
ddbwo - Tag | 1625 hsz       Online status #210761   2017.01.02 18:26 GMT+1 óra  
Jól van, ma újra ránéztem és észre vettem, hogy létezik egy ilyen is:
Kód:
    float colour[4] = {1.0f, 1.0f, 1.0f, 1.0f};
    glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, colour);


azaz "a színe pedig fehér"...
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
ddbwo - Tag | 1625 hsz       Online status #210759   2017.01.01 18:17 GMT+1 óra  
biztos hogy clamp? mert a szélét kapja meg vele. csak az ifek segítenek.

Amúgy egy sima bf2-s árnyékon próbálkoztam orthoban a naptól nézve, ami elég ferde.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210758   2017.01.01 16:59 GMT+1 óra  
GL_CLAMP_TO_BORDER

http://darthasylum.blog.hu/2013/11/24/a_karbantartas_fontossaga

Idézet

Feltételezem mindenki eljutott odáig, hogy a shadowmap címzési módja GL_BORDER, a színe pedig fehér. Ennek ellenére a shadowmap körül fekete részek jelennek meg.

Kód:
float d = cpos.z / cpos.w;


Általában jó. Itt nem. Hiszen d simán a far plane mögé eshet, és akkor d <= sd nem teljesül, azaz árnyék keletkezik. A helyes megoldás:

Kód:
float d = saturate(cpos.z / cpos.w);


C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210757   2017.01.01 15:14 GMT+1 óra  
azt hogy oldom meg szépen, hogy az ST-n kívülről vett minta ne legyen árnyék? Feltételvizsgálattal megtudom shaderben, de van rá "normális" megoldás is?

(nem CSM-hez, csak sima shadow mappinghoz)

Ezt a hozzászólást ddbwo módosította (2017.01.01 15:48 GMT+1 óra, 229 nap)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5441 hsz       Online status #210752   2016.12.30 18:38 GMT+1 óra  
cascaded shadow maps
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1625 hsz       Online status #210750   2016.12.30 13:54 GMT+1 óra  
Találkozott valaki kültéri árnyékokkal? spot és pointlight megvan, de hogy rendereljek árnyékot egy hatalmas terepnek?
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]