Skip to main content

CrossGL: Revolutionizing Shader Development

Project description

CrossGL Translator

The CrossGL Translator is a core component of our platform, enabling the conversion of CrossGL shader code directly into various graphics APIs, such as DirectX, Metal, Vulkan, and OpenGL. This translator simplifies shader development by allowing a single, unified shader language to be used across multiple platforms.

🌟 CrossGL: Revolutionizing Shader Development

The Universal Shader Language

In the ever-evolving world of graphics programming, CrossGL emerges as a game-changing solution, bridging the gap between diverse graphics APIs.

🚀 Write Once, Run Everywhere

Imagine writing a shader once and deploying it across:

  • 🍎 Metal
  • 🎮 DirectX
  • 🖥️ OpenGL
  • 🖥️ Vulkan

...all without changing a single line of code!

💡 Key Benefits

  1. ⏱️ Time-Saving: Slash development time by eliminating the need for multiple shader versions.
  2. 🛠️ Consistency: Ensure uniform behavior across all platforms.
  3. 🧠 Simplified Learning Curve: Master one language instead of many.
  4. 🔍 Enhanced Debugging: Develop universal tools for shader analysis.
  5. 🔮 Future-Proof: Easily adapt to new graphics APIs as they emerge.

How It Works

The translator takes CrossGL shader code and processes it through several stages:

  1. Parsing: The code is parsed into an abstract syntax tree (AST).
  2. Intermediate Representation: The AST is converted into an intermediate representation (IR) for optimization.
  3. Code Generation: The IR is translated into the target backend code.
  4. Optimization: Various optimization passes are applied to ensure maximum performance.
  5. Source Output: The final output is produced and ready for use.

🔄 Two-Way Translation: From Platform-Specific to CrossGL

CrossGL doesn't just translate from a universal language to platform-specific shaders - it also works in reverse! This powerful feature allows developers to convert existing shaders from various platforms into CrossGL.

🌈 CrossGL Shader Example

shader main {
    vertex {
        input vec3 position;
        output vec2 vUV;

        void main() {
            vUV = position.xy * 10.0;
            gl_Position = vec4(position, 1.0);
        }
    }

    float perlinNoise(vec2 p) {
        return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);
    }

    fragment {
        input vec2 vUV;
        output vec4 fragColor;

        void main() {
            float noise = perlinNoise(vUV);
            float height = noise * 10.0;
            vec3 color = vec3(height / 10.0, 1.0 - height / 10.0, 0.0);
            fragColor = vec4(color, 1.0);
        }
    }
}

Getting Started

To get started with the CrossGL Translator, check out our Getting Started Notebook.

Supported Backends

  • Vulkan
  • Metal
  • DirectX
  • OpenGL

Examples

Explore example projects and demos showcasing the CrossGL Translator's capabilities: CrossGL Demos.

📚 Documentation

Comprehensive documentation is available to help you get started and master CrossGL:

Contribution Guidelines

We welcome contributions to the CrossGL Translator. To get started, please read our Contribution Guidelines.

Steps to Contribute:

  1. Fork the repository.
  2. Create a new branch for your feature or bugfix.
  3. Write your code and tests.
  4. Ensure all tests pass.
  5. Submit a pull request with a detailed description of your changes.

For more detailed information, visit the Contribution Guidelines.

License

The CrossGL Translator is open-source and licensed under the License.


Stay connected and follow our latest updates and announcements:


Thank you for using the CrossGL Translator!

The CrossGL Team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crosstl-0.0.1.1.tar.gz (38.8 kB view details)

Uploaded Source

File details

Details for the file crosstl-0.0.1.1.tar.gz.

File metadata

  • Download URL: crosstl-0.0.1.1.tar.gz
  • Upload date:
  • Size: 38.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for crosstl-0.0.1.1.tar.gz
Algorithm Hash digest
SHA256 d436b9eb18748e76f56bb5a98356e3b8965cc08ddf81ea67e9385a1d77543259
MD5 73b619499919eb13e8a28e000ace0812
BLAKE2b-256 93671bbbd7fa47e8f6ff328236746639d81c4e8e86b33cf0649585a52a5fcd8c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page