/ModernUI

Modern desktop framework from low-level 3D graphics API to high-level view model, for development of 2D/3D rendering software or game engine, with internationalization support and many new technologies.

Primary LanguageJavaGNU Lesser General Public License v3.0LGPL-3.0

Modern UI

CurseForge CurseForge MavenCore Discord

Description

Modern UI (by Icyllis Milica) is a desktop application framework designed for standalone 2D and 3D rendering software development. It makes use of modern 3D graphical APIs and technologies to provide high real-time rendering performance. For good measure, Modern UI improves and optimizes a set of features used by Android and its own set of internationalization supporting text layout engine meeting Unicode specification.

There is also an official version that extends to Minecraft and Forge, it combines Modern UI with Minecraft and provides a number of additional features and modding APIs.

Main features: signed distance function, image post-processing effect, fast matrix and vector calculation, animation library, asynchronous event loop, text shaping, tessellation shader...

This project is still at a relatively early stage.
Releases for Minecraft Mod are available on CurseForge.
If you have any questions, feel free to join our Discord server.

License

  • Modern UI
    • Copyright (C) 2019-2022 BloCamLimb. All rights reserved.
    • License
    • Copyright (C) 2006 The Android Open Source Project
    • License
  • Modern UI Assets ─ UI layouts, textures, shaders, models, documents and so on
    • Copyright (C) 2019-2022 BloCamLimb et al.
    • License
  • Libraries
    • lwjgl licensed under the BSD-3-Clause
    • caffeine by Ben Manes, licensed under the Apache-2.0
    • flexmark-java by Atlassian Pty Ltd, Vladimir Schneider
    • fastutil by Vigna, licensed under the Apache-2.0
    • RxJava licensed under the Apache-2.0
    • log4j licensed under the Apache-2.0
    • icu4j by Unicode, Inc.

Documentation

(WIP)

Environment requirements

  • Windows 8 or above, Linux or macOS
  • JDK 17.0.1 or above
  • OpenGL 4.5 or above (see below for macOS)
  • Vulkan 1.1 or above (WIP)
  • (Optional) Forge 1.18.2-40.0.0

For macOS users (not tested yet, discuss on Discord):
To use OpenGL, install both MoltenVK and Mesa 22.1+, then use Gallium Zink for LWJGL. Add JVM arg -Dorg.lwjgl.opengl.libname=.../zink/lib/libGL.1.dylib. Expected: App -> Mesa -> Pipe -> Zink -> MoltenVK -> Metal

Gradle configuration

repositories {
    maven {
        name 'IzzelAliz Maven'
        url 'https://maven.izzel.io/releases/'
    }
}
dependencies {
    implementation "icyllis.modernui:ModernUI-Core:${modernui_version}"
    // apply appropriate LWJGL platform here
}
ForgeGradle 5 (for Minecraft Modding)
configurations {
    library
    implementation.extendsFrom library
}
minecraft.runs.all {
    lazyToken('minecraft_classpath') {
        configurations.library.copyRecursive().resolve().collect { it.absolutePath }.join(File.pathSeparator)
    }
}
dependencies {
    library "icyllis.modernui:ModernUI-Core:${modernui_version}"
    implementation fg.deobf("icyllis.modernui:ModernUI-Forge:${minecraft_version}-${modernui_version}")
}

Add these if you have not MixinGradle:

minecraft {
    runs {
        client {
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
        }
        server {
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
        }
        // apply to data if you have datagen
    }
}

You need to regenerate run configurations if you make any changes on this.

Screenshots

Navigation
new5
Texts
new4
Graphics
new3.gif
Audio visualization
new2
Out-of-date widgets
a b