Citra Texture Dumping and Custom Textures Guide

Citra offers the ability to extract in-game textures and apply custom texture packs. Extracted textures are saved as .png files, while custom texture packs can include files in .png, .dds, or .ktx formats. Supported compression techniques include BCn and various ASTC block styles.

How to Extract Textures

  1. Access the Settings:
    • Open Emulation > Configure… in the Citra menu.
    • Navigate to Graphics > Enhancements and activate Dump Textures, then click OK.
  2. Start Playing:
    • Launch a game and play. Textures used during gameplay will automatically save as .png files.
  3. Locate Dumped Textures:
    • Right-click the game in the library and select Open Texture Dump Location to find the saved textures.
  4. Template File:
    • Inside the dump folder, you’ll find a pack.json template file. Copy this file to the load folder for proper configuration.

How to Apply Custom Textures

  1. Open Texture Load Folder:
    • Right-click your game in the library and choose Open Custom Texture Location.
  2. Add Custom Textures:
    • Place your custom .png files in the folder.
  3. Enable Custom Textures:
    • In Emulation > Configure… > Graphics > Enhancements, activate Use Custom Textures and confirm with OK.
    • To preload custom textures into RAM for better performance, enable Preload Custom Textures. Keep in mind this will increase memory usage.

Texture Dumping Details

  • Dumping Process:
    • Textures are saved when accessed from the game’s VRAM and uploaded to host memory. Only textures with power-of-two dimensions are dumped, excluding host framebuffers.
  • Dumped File Information:
    • Texture filenames provide details such as dimensions, hash values, pixel format, and mipmap levels. For example, tex1_256x256_543624189C94B105_12_mip0.png describes:
      • Dimensions: 256x256
      • Hash: 543624189C94B105
      • Pixel Format: 12
      • Mipmap Level: mip0
  • Configuration File:
    • A pack.json file is automatically generated in the dump folder and must be placed in the load folder for proper texture pack usage.

Pack Configuration

  • JSON File:
    • Custom textures now use a JSON configuration file (pack.json) for metadata, including pack name, author, hash format, and options for mipmap generation or texture flipping.
    • Compressed formats do not support mipmap generation or flipping.
  • Hashing:
    • The newer hashing method is faster and more compatible across APIs, making it the preferred choice. However, older formats are still supported to ensure compatibility with existing packs.
  • Custom Filenames:
    • Hash mappings allow arbitrary filenames. For instance:jsonCopy code"textures": { "114BFC385ED72F15": "logo.png", "22B8C43233F640AE": "sky.png" }

Adding Custom Normal Maps

  • Purpose:
    • Normal maps add detailed textures to objects, enhancing visual quality beyond basic diffuse maps.
  • Filename Structure:
    • Normal maps use the same base filename as their diffuse counterpart, with .norm added before the extension. For example:
      • Diffuse Map: texture.png
      • Normal Map: texture.norm.png
  • Limitations:
    • Normal maps only function when fragment lighting is enabled in the scene. If lighting is absent, they will not display and an error will appear in the log.
[  24.086113] Render.OpenGL <Warning> video_core\renderer_opengl\gl_rasterizer.cpp:OpenGL::RasterizerOpenGL::BindMaterial:598: Custom normal map used but scene has no light enabled

By following this guide, you can effectively manage both texture dumping and custom texture implementation in Citra for a tailored gaming experience.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *