In de snelle tip van vandaag bespreekt de nieuwe auteur Ankash Kallyat het optimaliseren van texturen in Unreal Development Kit en enkele van de belangrijkste dingen om te onthouden bij het importeren van texturen in UDK. We zullen een paar manieren bekijken om geheugen te besparen door Specular maps uit Diffuse maps te extraheren, en door te werken met LOD-instellingen om het spel te optimaliseren.
Opnieuw gepubliceerde zelfstudieOm de paar weken bekijken we enkele van onze favoriete lezers uit de geschiedenis van de site. Deze tutorial werd voor het eerst gepubliceerd in december 2011.
Voordat we beginnen, wil ik een opsomming geven van de indelingen die door UDK worden ondersteund. De volgende structuurindelingen worden ondersteund:
Ik geef meestal de voorkeur aan TGA omdat het nu wordt ondersteund door de meeste softwarepakketten, plus je kunt de alpha aanpassen. Ik bewaar vaak texturen in TGA-formaat, maar soms worden TGA-bestanden opgeslagen in 32 bit en soms met een duidelijke alpha, hoewel ze eigenlijk geen alpha-informatie bevatten.
Dit is erg slecht omdat UDK TGA-bestanden importeert en probeert ze te comprimeren met de ingebouwde compressor die bekend staat als DXTC. De alpha is echter niet volledig gecomprimeerd of soms helemaal niet door Unreal Engine 3. Dus het is beter om het bestand op te slaan zonder een alfa, als je echt geen alfainformatie nodig hebt in de Unreal Engine. Zorg er ook voor dat het bestand wordt opgeslagen met 8 bits per kanaal RGB / RGBA-formaat om complicaties bij het importeren te voorkomen.
Hier begin ik met een eenvoudige looftextuur (het Banana Palm-blad).
Klik om te vergrotenWe hebben allemaal de neiging om bestanden op te slaan in drie verschillende formaten, d.w.z. Diffuse, Specular en Normale kaarten. Hoewel u niet echt een afzonderlijke spiegeltekaart hoeft op te slaan, omdat we deze uit de diffuse kaart kunnen halen.
Klik om te vergrotenZoals hierboven in de de Unreal Material Editor is weergegeven, heb ik de Rode en Groene informatie uit de Diffuse-kaart gehaald en vervolgens vermenigvuldigd. Ik vermenigvuldigde het opnieuw met een constante waarde van 18 gewoon om het resultaat op te krikken.
Je kunt het aanpassen aan je wensen of je zou een spiegelende kaart van 256 x 256 kunnen importeren in plaats van de constante parameter te gebruiken. Je zult zien dat de tweede vermenigvuldigde waarde een beetje gaat schijnen (wat precies was wat we wilden) sluit daarna het resultaat aan op het knooppunt "Specular".
U kunt ook de constante parameterwaarde aansluiten op het knooppunt "Specular Power", als u een mooi en glanzend spiegelsresultaat wilt. Dat is alles, we hebben zojuist een spiegelende kaart gemaakt van een diffuse kaart en hebben zo voldoende geheugen opgeslagen om er nog een te laden 1024 opnieuw in kaart brengen van de motor.
Telkens wanneer we een texture map proberen te laden of opslaan, missen we meestal en vergeten we de resolutie van de texture map te controleren. Controleer altijd de resolutie van de kaart omdat UDK alleen texturen invoert met een resolutie van 2 (x2.)
Bijvoorbeeld: 256 x 256, 512 x 512, 1024 x 1024, 2048 x 2048 enzovoort. Zorg er opnieuw voor dat het bestand wordt opgeslagen in 8 bits per kanaal RGB / RGBA-formaat, om complicaties tijdens het importeren te voorkomen. Open het bestand in Photoshop en Ga naar om dit te controleren Afbeelding -> Mode -> en daar zou je het moeten zien 8 bits / kanaal gekozen. Als dat niet het geval is, klik er dan gewoon op. Nadat u de textuur hebt geladen, controleert u of u de LOD-voorbaat hebt ingesteld.
Zoals te zien is in de bovenstaande textuureigenschappen, heb ik de bananenbladstructuur geïmporteerd met een resolutie van 1024 x 1024, maar ik heb de LOD-bias ingesteld op 1. Wat hier gebeurt is dat de resolutie afneemt met 1 stap (x2) wat 512 x 512 is, dus je hoeft photoshop daarvoor niet te laden.
De reden dat ik de belastingbias heb ingesteld 1 is omdat ons gaas eenvoudig gebladerte is en 1024 x 1024 veel geheugen gaat afvoeren. Hieronder staat het verschil tussen "With LOD Bias" en "Without LOD Bias".
Ga in UDK naar View en vervolgens naar het browservenster en selecteer Texture Stats om de statistieken van de texturen die in je scene zijn geladen te bekijken.
Zoals u in de bovenstaande afbeelding kunt zien, worden de structuren geladen in een afmeting van 1024 x 1024 zonder LOD-instelling. De texturen gebruiken elk ongeveer 1366 kb aan geheugen.
In de bovenstaande afbeelding worden de structuren geladen in 1024 x 1024 dimensies, maar met de LOD-bias ingesteld op 1. Elke Texture gebruikt ongeveer 342 kb geheugen.
CONCLUSIE
Voor objecten waar u veel detail nodig hebt, hoeft u het bovenstaande proces niet te doen. Maar voor eenvoudige statische objecten zoals gebladerte, gras, bladeren en andere dergelijke statische mazen, kunt u gaan voor het bovenstaande proces. Dit zal een hoop geheugen besparen en dus de gameplay optimaliseren.