GithubHelp home page GithubHelp logo

bourgesl / marlin-fx Goto Github PK

View Code? Open in Web Editor NEW
48.0 8.0 2.0 1.11 MB

MarlinFX is the JavaFX port of the Marlin renderer (scanline rasterizer)

License: GNU General Public License v2.0

Java 99.33% Shell 0.23% HTML 0.44%
javafx openjdk rasterizer shape graphics

marlin-fx's Introduction

MarlinFX renderer

MarlinFX is the JavaFX port of the Marlin-renderer (scanline rasterizer only) aimed to be faster than Open/Native Pisces.

Release history

Latest release: https://github.com/bourgesl/marlin-fx/releases/latest

JDK Default renderer Available MarlinFX release
Open JDK 9 MarlinFX 0.7.5 MarlinFX 0.9.3.1 for JDK9+
Open JDK 10 MarlinFX 0.8.2 MarlinFX 0.9.3.1 for JDK9+
Open JFX 11 MarlinFX 0.9.2 MarlinFX 0.9.4.5 for JFX11+
Open JFX 12 MarlinFX 0.9.3 MarlinFX 0.9.4.5 for JFX11+
Open JFX 13 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+
Open JFX 14 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+
Open JFX 15 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+
Open JFX 16 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+
Open JFX 17 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+
Open JFX 18 MarlinFX 0.9.3.1 MarlinFX 0.9.4.5 for JFX11+

License

As marlin is a fork from OpenJDK Pisces, its license is the OpenJDK's license = GPL2+CP:

GNU General Public License, version 2, with the Classpath Exception

The GNU General Public License (GPL)

Version 2, June 1991

See License.md

Build

Needs Maven + Oracle or Open JDK 1.8 (with JavaFX)

The MarlinFX build produces a (big) JavaFX jar file patched with MarlinFX classes (com.sun.marlin + hacked ShapeUtil using the MarlinRasterizer) to be placed in the boot classpath as JavaFX 8 lies in the extension classpath (and can not be patched easily). Of course, such (complete) JavaFX jar depends on your JDK version and your platform (win, mac, linux ...) so the MarlinFX jar can not be distributed (license issue) nor shared across platforms (binary incompatiblity).

Note: it does not modify the SW pipeline which still uses OpenPisces (for compatiblity issue).

First time, import your local jfxrt.jar (from ${java.home}/lib/ext/jfxrt.jar) to your local maven repository or when you get the error 'Could not find artifact javafx:jfxrt:jar:local in central (https://repo.maven.apache.org/maven2)' :

mvn process-resources

Then build MarlinFX:

mvn clean install

or

mvn -Dmaven.test.skip=true clean install (to skip running tests)

The MarlinFX jar is available in the target folder like:

target/marlinfx-0.x.y-Unsafe.jar

Usage

For testing purposes (only), MarlinFX can be used with any JavaFX application running on Oracle or Open JDK 8 (and derived JVMs).

Just put the marlinfx-x.y.jar file in the bootclasspath to let JavaFX use MarlinFX instead of OpenPisces (java rasterizer) and set the following system property prism.marlin=true/false (true by default):

java -Xbootclasspath/p:[absolute or relative path]/marlinfx-0.7.5-Unsafe.jar -Dprism.marlin=true ...

For example to launch the JavaFX8 Ensemble demo:

java -Xbootclasspath/p:/home/bourgesl/libs/marlin/branches/marlin-fx/target/marlinfx-0.7.5-Unsafe.jar -jar Ensemble8.jar

You should see MarlinFX in action and the following message will be present in the console:

Marlin-FX[marlinFX-0.7.5-Unsafe-OpenJDK] (double) enabled.
INFO: ===============================================================================
INFO: Marlin software rasterizer    = ENABLED
INFO: Version                       = [marlinFX-0.7.5-Unsafe-OpenJDK]
INFO: prism.marlin                  = com.sun.marlin.DRenderer
INFO: prism.marlin.useThreadLocal   = true
INFO: prism.marlin.useRef           = soft
INFO: prism.marlin.edges            = 4096
INFO: prism.marlin.pixelsize        = 2048
INFO: prism.marlin.subPixel_log2_X  = 3
INFO: prism.marlin.subPixel_log2_Y  = 3
INFO: prism.marlin.blockSize_log2   = 5
INFO: prism.marlin.forceRLE         = false
INFO: prism.marlin.forceNoRLE       = false
INFO: prism.marlin.useTileFlags     = true
INFO: prism.marlin.useTileFlags.useHeuristics = true
INFO: prism.marlin.rleMinWidth      = 64
INFO: prism.marlin.useSimplifier    = false
INFO: prism.marlin.doStats          = false
INFO: prism.marlin.doMonitors       = false
INFO: prism.marlin.doChecks         = true
INFO: prism.marlin.log              = true
INFO: prism.marlin.useLogger        = true
INFO: prism.marlin.logCreateContext = false
INFO: prism.marlin.logUnsafeMalloc  = false
INFO: Renderer settings:
INFO: CUB_COUNT_LG = 2
INFO: CUB_DEC_BND  = 8.0
INFO: CUB_INC_BND  = 3.2
INFO: QUAD_DEC_BND = 4.0
INFO: INITIAL_EDGES_CAPACITY        = 98304
INFO: INITIAL_CROSSING_COUNT        = 1024
INFO: ===============================================================================

Two pipelines are available based on Double (default) and Float numerical values. To select the MarlinFX pipeline, use the system property prism.marlin.double=true/false (true means Double, false means Float) and is indicated in the standard output.

Enjoy and send us your feedback !

Note: Marlin system properties have been renamed to use the prefix 'prism.marlin' like prism.marlin.log=true/false (true by default).

Getting in touch

Users and developers interested in the Marlin-renderer are kindly invited to join the marlin-renderer Google Group.

Related projects

Marlin-renderer is the main Marlin-renderer repository (java2D rendering engine). Mapbench provides benchmarking tools based on real world map painted by the GeoServer WMS server

marlin-fx's People

Contributors

bourgesl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

marlin-fx's Issues

Make MarlinFX + OpenJFX8 release

See with Chris Newland or Alexey Shipilev, how to publicly release an OpenJDK8+OpenJFX8 binary releases integrating lastest MarlinFX 0.9.3 (enabled by default)

marlin-fx for JDK 8

I am still working with JDK 8 as I am using Netbeans and cannot get Netbeans to work with JDK 9+.
I am sure I had a copy of marlin-fx compatible with JDK 8 but managed to loose this when my PC crashed.
Do you have a copy marlin-fx that is compatible with JDK 8 (win64) that could be released please?
Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.