Administrator
Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125372
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator
    *Descriere:

    Au dat turcii mega release la sistemul de umbre dinamice (complet - usor de adaugat). :-o


    Edit: Testat personal de mine, merge perfect! :)
    [RELEASE] C++ Dynamic Shadows - Mesaj 1 - Imagine 1
    [RELEASE] C++ Dynamic Shadows - Mesaj 1 - Imagine 2

    Ce este de fapt "Dynamic Shadow"?
    - Ei bine, inloc sa fie "desenate" umbrele pe jos, acestea vor reprezenta cu adevarat umbre in timp real pe jos de la obiecte/NPC/mobi/copaci/frunze/etc.

    - Face atmosfera de pe joc sa fie mai dinamica, sa para totul mai "viu" :)

    - De asemenea, umbrele isi vor modifica dimensiunea si intesitatea in functie de timpul zilei (dimineata/pranz/seara) si pozitia caracterului pe harta.


    Va las si voua arhiva FULL + explicatii despre cum sa modificati / retusati setarile. Daca aveti erori vizuale cu umbrele trebuie sa va jucati cu setarile la umbre, deci cititi totul cu atentie. Am tradus fisierul in romana cu chatgpt.


    Acest sistem de umbre dinamice are si alte functii precum:
    - Sincronizare umbre in interfata UI (ex. poti adauga in rendertarget umbre in real time)
    - Optimizare prin cache bazat pe coordonate. (coordonate pre-calculate pentru umbre, astfel încât jocul să nu recalculeze aceleași umbre de mai multe ori.)
    - Poti sincroniza umbrele cu soarele din joc.

    Acest release este foarte important, deoarece va schimba in totalitate experienta Metin2. NU ESTE UPDATE DE GRAFICA, doar pe partea de umbre!

    Tutorialul este in Turca. (Link Internal) si Engleza (Link github). In caz ca nu este explicat ceva bine in varianta in engleza, verificati pe cea in turca - acolo cica ar fi explicat mai bine.

    Edit: Dupa ce ai facut tutorialul, fa si urmatoarele fixuri:
    1) Deschidem SphereLib/frustum.cpp si cautam:

    Cod: Selectaţi tot

    ViewState Frustum::ViewVolumeTest(const Vector3d &c_v3Center,const float c_fRadius) const
    Modificam asa:

    Cod: Selectaţi tot

    ViewState Frustum::ViewVolumeTest(const Vector3d &c_v3Center,const float c_fRadius) const
    {
    	const auto dynamicShadowExtend = 2.0f; // idk i think even 1.5 should do it
    	
    	if (m_bUsingSphere)
    	{
    		D3DXVECTOR3 v(
    				c_v3Center.x-m_v3Center.x,
    				c_v3Center.y-m_v3Center.y,
    				c_v3Center.z-m_v3Center.z);
    
    		if ((c_fRadius * dynamicShadowExtend + m_fRadius) * (c_fRadius * dynamicShadowExtend + m_fRadius) < D3DXVec3LengthSq(&v))
    		{
    			return VS_OUTSIDE;
    		}
    	}
    
    	const int count=6;
    
    	D3DXVECTOR3 center = c_v3Center;
    
    	int i;
    
    	float distance[count];
    	for(i=0;i<count;i++)
    	{
    		distance[i] = D3DXPlaneDotCoord(&m_plane[i],&center);
    		if (distance[i] <= -c_fRadius * dynamicShadowExtend)
    			return VS_OUTSIDE;
    	}
    
    	for(i=0;i<count;i++)
    	{
    		if (distance[i]<=c_fRadius)
    			return VS_PARTIAL;
    	}
    
    	return VS_INSIDE;
    }

    2) Daca nu aveti software tiling dezactivat: Deschidem GameLib/MapOutdoorRenderSTP.cpp si cautati:

    Cod: Selectaţi tot

    		if (isFogEnable)
    		{
    			STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, TRUE);
    			STATEMANAGER.SetRenderState(D3DRS_FOGCOLOR, 0xFFFFFFFF);
    			STATEMANAGER.SetTexture(0, pTerrain->GetShadowTexture());
    			STATEMANAGER.DrawIndexedPrimitive(ePrimitiveType, 0, m_iPatchTerrainVertexCount, 0, wPrimitiveCount);
    			STATEMANAGER.SetRenderState(D3DRS_FOGCOLOR, rkTPRS.m_dwFogColor);
    			STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, FALSE);
    		}
    		else
    		{
    			STATEMANAGER.SetTexture(0, pTerrain->GetShadowTexture());
    			STATEMANAGER.DrawIndexedPrimitive(ePrimitiveType, 0, m_iPatchTerrainVertexCount, 0, wPrimitiveCount);
    		}
    Modificati asa:

    Cod: Selectaţi tot

    		if (isFogEnable)
    		{
    			STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, TRUE);
    			STATEMANAGER.SetRenderState(D3DRS_FOGCOLOR, 0xFFFFFFFF);
    			STATEMANAGER.SetTexture(0, nullptr);
    			STATEMANAGER.DrawIndexedPrimitive(ePrimitiveType, 0, m_iPatchTerrainVertexCount, 0, wPrimitiveCount);
    			STATEMANAGER.SetRenderState(D3DRS_FOGCOLOR, rkTPRS.m_dwFogColor);
    			STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, FALSE);
    		}
    		else
    		{
    			STATEMANAGER.SetTexture(0, nullptr);
    			STATEMANAGER.DrawIndexedPrimitive(ePrimitiveType, 0, m_iPatchTerrainVertexCount, 0, wPrimitiveCount);
    		}
    Cautati:

    Cod: Selectaţi tot

    void CMapOutdoor::__SoftwareTransformPatch_ApplyStaticShadowRenderState()
    {
    	STATEMANAGER.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
    	STATEMANAGER.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
    	
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_MODULATE);
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_ALPHAOP,   D3DTOP_SELECTARG1);
    	STATEMANAGER.SetSamplerState(0, D3DSAMP_ADDRESSU,	D3DTADDRESS_CLAMP);
    	STATEMANAGER.SetSamplerState(0, D3DSAMP_ADDRESSV,	D3DTADDRESS_CLAMP);
    }
    Modificati asa:

    Cod: Selectaţi tot

    void CMapOutdoor::__SoftwareTransformPatch_ApplyStaticShadowRenderState()
    {
    	STATEMANAGER.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
    	STATEMANAGER.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
    
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
    	STATEMANAGER.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
    }

    3) Faceti urmatorul tutorial pentru a avea umbre mai calitative + render distance mai mare:
    increase-dynamic-shadow-render-distance-t4566.html


    *Poze / Video:

    Cu umbre normale (clasice):
    [RELEASE] C++ Dynamic Shadows - Mesaj 1 - Imagine 3

    Cu umbre dinamice:
    [RELEASE] C++ Dynamic Shadows - Mesaj 1 - Imagine 4

    *Link download / Code:

    Va las github (recomand sa folositi acest link, deaorece e posibil sa se mai faca update-uri)
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Link backup:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    See full signature
    Membru Avansat
    Membru Avansat
  • Mesaje: 57
    Membru din: 03 Oct 2024, 09:59
  • Reacții: 704
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • [ID Discord]
  • Medalii

    Avatar utilizator - qPastarnac
    Membru Avansat
    Membru Avansat

    Mesaj

    Multumim de resursa! Dupa ce testez las o poza,sper sa nu trebuiasca sa modific nimic
    Administrator
    Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125372
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator

    Mesaj

    qPastarnac scrie: ↑ Multumim de resursa! Dupa ce testez las o poza,sper sa nu trebuiasca sa modific nimic
    Am adaugat 3 fix-uri noi in topicul original. :)
    See full signature
    Premium
    Premium
  • Mesaje: 26
    Membru din: 31 Oct 2024, 10:31
  • Reacții: 442
  • Mesaje utile: 1
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator - ShadowsPR0
    Premium
    Premium

    Mesaj

    Vreo idee cum as putea sa rezolv podurile ? Cand stai pe ele se fac foarte intunecate si cand te dai jos arata normal din nou.
    [RELEASE] C++ Dynamic Shadows - Mesaj 4 - Imagine 1
    [RELEASE] C++ Dynamic Shadows - Mesaj 4 - Imagine 2
    Administrator
    Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125372
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator

    Mesaj

    ShadowsPR0 scrie: ↑ Vreo idee cum as putea sa rezolv podurile ? Cand stai pe ele se fac foarte intunecate si cand te dai jos arata normal din nou.
    [RELEASE] C++ Dynamic Shadows - Mesaj 5 - Imagine 1
    [RELEASE] C++ Dynamic Shadows - Mesaj 5 - Imagine 2
    Fa fixurile din topic + citeste fisierul de setaril
    See full signature
    Premium
    Premium
  • Mesaje: 26
    Membru din: 31 Oct 2024, 10:31
  • Reacții: 442
  • Mesaje utile: 1
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator - ShadowsPR0
    Premium
    Premium

    Mesaj

    Poftim fix exclusiv metin2.forum

    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.
    Administrator
    Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125372
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator

    Mesaj

    Merge perfect! :x :x
    See full signature
    Premium
    Premium
  • Mesaje: 10
    Membru din: 30 Ian 2025, 00:12
  • Reacții: 6
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • Medalii

    Avatar utilizator - metin2devtest
    Premium
    Premium

    Mesaj

    I followed the guide entirely, but it seems that the problem with the bridge, for example, remains.
    Premium
    Premium
  • Mesaje: 26
    Membru din: 31 Oct 2024, 10:31
  • Reacții: 442
  • Mesaje utile: 1
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator - ShadowsPR0
    Premium
    Premium

    Mesaj

    metin2devtest scrie: ↑ I followed the guide entirely, but it seems that the problem with the bridge, for example, remains.
    Add the fix i provided.
    Avatar utilizator - Anonymous
    Utilizator șters 438
  • Reacții: 0
  • Mesaje utile: 0
  • Avatar utilizator - Anonymous
    Utilizator șters 438

    Mesaj

    The only issue, that ShadowsPR0 provided a workaround for it, remains that shadow glitch when the character is above on a height object collision (bridge, custom object, etc)

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: _cv4_, freziop și 1 vizitator

    Discord ID copiat: