Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.x] Implement Octahedral Map Normal/Tangent Attribute Compression #46800

Merged
merged 1 commit into from
Jul 30, 2021

Commits on Jul 30, 2021

  1. Octahedral Normal/Tangent Compression

    Implement Octahedral Compression for normal/tangent vectors
    *Oct32 for uncompressed vectors
    *Oct16 for compressed vectors
    
    Reduces vertex size for each attribute by
    *Uncompressed: 12 bytes, vec4<float32> -> vec2<unorm16>
    *Compressed: 2 bytes, vec4<unorm8> -> vec2<unorm8>
    
    Binormal sign is encoded in the y coordinate of the encoded tangent
    
    Added conversion functions to go from octahedral mapping to cartesian
    for normal and tangent vectors
    
    sprite_3d and soft_body meshes write to their vertex buffer memory
    directly and need to convert their normals and tangents to the new oct
    format before writing
    
    Created a new mesh flag to specify whether a mesh is using octahedral
    compression or not
    Updated documentation to discuss new flag/defaults
    
    Created shader flags to specify whether octahedral or cartesian vectors
    are being used
    
    Updated importers to use octahedral representation as the default format
    for importing meshes
    
    Updated ShaderGLES2 to support 64 bit version codes as we hit the limit
    of the 32-bit integer that was previously used as a bitset to store
    enabled/disabled flags
    The-O-King committed Jul 30, 2021
    Configuration menu
    Copy the full SHA
    d274284 View commit details
    Browse the repository at this point in the history