Search in sources :

Example 51 with com.jme3.opencl

use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.

the class TerrainPatch method cloneFields.

/**
     *  Called internally by com.jme3.util.clone.Cloner.  Do not call directly.
     */
@Override
public void cloneFields(Cloner cloner, Object original) {
    super.cloneFields(cloner, original);
    this.stepScale = cloner.clone(stepScale);
    this.offset = cloner.clone(offset);
    this.leftNeighbour = null;
    this.topNeighbour = null;
    this.rightNeighbour = null;
    this.bottomNeighbour = null;
    // Don't feel like making geomap cloneable tonight
    // so I'll copy the old logic.
    this.geomap = new LODGeomap(size, geomap.getHeightArray());
    Mesh m = geomap.createMesh(stepScale, Vector2f.UNIT_XY, offset, offsetAmount, totalSize, false);
    this.setMesh(m);
    // In this case, we always clone material even if the cloner is setup
    // not to clone it.  Terrain uses mutable textures and stuff so it's important
    // to clone it.  (At least that's my understanding and is evidenced by the old
    // clone code specifically cloning material.)  -pspeed
    this.material = material.clone();
}
Also used : Mesh(com.jme3.scene.Mesh)

Example 52 with com.jme3.opencl

use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.

the class VRApplication method start.

/**
     * Starts the application.
     * Creating a rendering context and executing the main loop in a separate thread.
     * @param contextType the {@link com.jme3.system.JmeContext.Type type} of the context to create.
     * @param waitFor if <code>true</code>, the method will wait until the application is started.
     * @throws IllegalArgumentException if the context type is not supported.
     */
public void start(JmeContext.Type contextType, boolean waitFor) {
    if (context != null && context.isCreated()) {
        logger.warning("start() called when application already created!");
        return;
    }
    if (settings == null) {
        settings = new AppSettings(true);
    }
    logger.log(Level.FINE, "Starting application: {0}", getClass().getName());
    // Create VR decicated context
    if (contextType == Type.Display) {
        context = new LwjglDisplayVR();
        context.setSettings(settings);
    } else if (contextType == Type.OffscreenSurface) {
        context = new LwjglOffscreenBufferVR();
        context.setSettings(settings);
    } else {
        logger.severe("Unsupported context type \"" + contextType + "\". Supported are \"Display\" and \"OffscreenSurface\"");
        throw new IllegalArgumentException("Unsupported context type \"" + contextType + "\". Supported are \"Display\" and \"OffscreenSurface\"");
    }
    context.setSystemListener(this);
    context.create(waitFor);
}
Also used : AppSettings(com.jme3.system.AppSettings) LwjglOffscreenBufferVR(com.jme3.system.lwjgl.LwjglOffscreenBufferVR) LwjglDisplayVR(com.jme3.system.lwjgl.LwjglDisplayVR)

Example 53 with com.jme3.opencl

use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.

the class VRApplication method start.

@Override
public void start() {
    logger.config("Starting application...");
    // set some default settings in-case
    // settings dialog is not shown
    boolean loadSettings = false;
    if (settings == null) {
        setSettings(new AppSettings(true));
        loadSettings = true;
    }
    GraphicsDevice defDev = null;
    try {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        defDev = ge.getDefaultScreenDevice();
    } catch (Throwable e1) {
        logger.log(Level.SEVERE, "Cannot access default screen device: " + e1.getMessage(), e1);
    }
    if (isInVR() && !compositorAllowed()) {
        logger.warning("VR Composition is not allowed.");
        // "easy extended" mode
        // TO-DO: JFrame was removed in LWJGL 3, need to use new GLFW library to pick "monitor" display of VR device
        // first, find the VR device
        GraphicsDevice VRdev = null;
        GraphicsDevice[] devs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
        // pick the display that isn't the default one
        for (GraphicsDevice gd : devs) {
            if (gd != defDev) {
                VRdev = gd;
                break;
            }
        }
        // did we get the VR device?
        if (VRdev != null) {
            // set properties for VR acceleration
            try {
                java.awt.DisplayMode useDM = null;
                int max = 0;
                for (java.awt.DisplayMode dm : VRdev.getDisplayModes()) {
                    int check = dm.getHeight() + dm.getWidth() + dm.getRefreshRate() + dm.getBitDepth();
                    if (check > max) {
                        max = check;
                        useDM = dm;
                    }
                }
                // create a window for the VR device
                settings.setWidth(useDM.getWidth());
                settings.setHeight(useDM.getHeight());
                settings.setBitsPerPixel(useDM.getBitDepth());
                settings.setFrequency(useDM.getRefreshRate());
                settings.setSwapBuffers(true);
                // allow vsync on this display
                settings.setVSync(true);
                setSettings(settings);
                // make sure we are in the right display mode
                if (VRdev.getDisplayMode().equals(useDM) == false) {
                    VRdev.setDisplayMode(useDM);
                }
                // make a blank cursor to hide it
                //BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
                //Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, new Point(0, 0), "blank cursor");                    
                //VRwindow.setCursor(blankCursor);
                //jmeCanvas.getCanvas().setCursor(blankCursor);
                //VRwindow.pack();
                //VRwindow.setVisible(true);
                //startCanvas();
                logger.config("Starting application [SUCCESS]");
                return;
            } catch (Exception e) {
                logger.log(Level.SEVERE, "Error during application start: " + e.getMessage(), e);
            }
        }
    }
    if (!isInVR()) {
        logger.config("VR mode disabled.");
        // not in VR, show settings dialog
        if (Platform.get() != Platform.MACOSX) {
            if (!JmeSystem.showSettingsDialog(settings, loadSettings)) {
                logger.config("Starting application [SUCCESS]");
                return;
            }
        } else {
            // GLFW workaround on macs
            settings.setFrequency(defDev.getDisplayMode().getRefreshRate());
            settings.setDepthBits(24);
            settings.setVSync(true);
            // try and read resolution from file in local dir
            File resfile = new File("resolution.txt");
            if (resfile.exists()) {
                try {
                    BufferedReader br = new BufferedReader(new FileReader(resfile));
                    settings.setWidth(Integer.parseInt(br.readLine()));
                    settings.setHeight(Integer.parseInt(br.readLine()));
                    try {
                        settings.setFullscreen(br.readLine().toLowerCase(Locale.ENGLISH).contains("full"));
                    } catch (Exception e) {
                        settings.setFullscreen(false);
                    }
                    br.close();
                } catch (Exception e) {
                    settings.setWidth(1280);
                    settings.setHeight(720);
                }
            } else {
                settings.setWidth(1280);
                settings.setHeight(720);
                settings.setFullscreen(false);
            }
            settings.setResizable(false);
        }
        settings.setSwapBuffers(true);
    } else {
        logger.config("VR mode enabled.");
        // use basic mirroring window, skip settings window
        settings.setWidth(xWin);
        settings.setHeight(yWin);
        settings.setBitsPerPixel(24);
        // never sleep in main loop
        settings.setFrameRate(0);
        settings.setFrequency(VRhardware.getDisplayFrequency());
        settings.setFullscreen(false);
        // stop vsyncing on primary monitor!
        settings.setVSync(false);
        settings.setSwapBuffers(!disableSwapBuffers || VRhardware instanceof OSVR);
        settings.setTitle("Put Headset On Now: " + settings.getTitle());
        settings.setResizable(true);
    }
    if (forceDisableMSAA) {
        logger.config("Disabling multisampling.");
        // disable multisampling, which is more likely to break things than be useful
        settings.setSamples(1);
    }
    // set opengl mode
    if (tryOpenGL3) {
        logger.config("Using LWJGL OpenGL 3 renderer.");
        settings.setRenderer(AppSettings.LWJGL_OPENGL3);
    } else {
        logger.config("Using LWJGL OpenGL 2 renderer.");
        settings.setRenderer(AppSettings.LWJGL_OPENGL2);
    }
    setSettings(settings);
    start(JmeContext.Type.Display, false);
    // disable annoying warnings about GUI stuff being updated, which is normal behavior
    // for late GUI placement for VR purposes
    Logger.getLogger("com.jme3").setLevel(Level.SEVERE);
}
Also used : AppSettings(com.jme3.system.AppSettings) OSVR(com.jme3.input.vr.OSVR) GraphicsEnvironment(java.awt.GraphicsEnvironment) CullHint(com.jme3.scene.Spatial.CullHint) MalformedURLException(java.net.MalformedURLException) GraphicsDevice(java.awt.GraphicsDevice) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) File(java.io.File)

Example 54 with com.jme3.opencl

use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.

the class OSVR method getHMDMatrixProjectionRightEye.

@Override
public Matrix4f getHMDMatrixProjectionRightEye(Camera cam) {
    if (eyeRightInfo == null)
        return cam.getProjectionMatrix();
    if (eyeMatrix[EYE_RIGHT] == null) {
        FloatBuffer tfb = FloatBuffer.allocate(16);
        com.jme3.system.osvr.osvrdisplay.OsvrDisplayLibrary.osvrClientGetViewerEyeSurfaceProjectionMatrixf(displayConfig, 0, (byte) EYE_RIGHT, 0, cam.getFrustumNear(), cam.getFrustumFar(), (short) 0, tfb);
        eyeMatrix[EYE_RIGHT] = new Matrix4f();
        eyeMatrix[EYE_RIGHT].set(tfb.get(0), tfb.get(4), tfb.get(8), tfb.get(12), tfb.get(1), tfb.get(5), tfb.get(9), tfb.get(13), tfb.get(2), tfb.get(6), tfb.get(10), tfb.get(14), tfb.get(3), tfb.get(7), tfb.get(11), tfb.get(15));
    }
    return eyeMatrix[EYE_RIGHT];
}
Also used : Matrix4f(com.jme3.math.Matrix4f) FloatBuffer(java.nio.FloatBuffer)

Example 55 with com.jme3.opencl

use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.

the class LwjglBuffer method mapAsync.

@Override
public com.jme3.opencl.Buffer.AsyncMapping mapAsync(CommandQueue queue, long size, long offset, MappingAccess access) {
    Utils.pointerBuffers[0].rewind();
    Utils.errorBuffer.rewind();
    long q = ((LwjglCommandQueue) queue).getQueue();
    long flags = Utils.getMappingAccessFlags(access);
    ByteBuffer buf = CL10.clEnqueueMapBuffer(q, buffer, CL10.CL_FALSE, flags, offset, size, null, Utils.pointerBuffers[0], Utils.errorBuffer, null);
    Utils.checkError(Utils.errorBuffer, "clEnqueueMapBuffer");
    long event = Utils.pointerBuffers[0].get(0);
    return new com.jme3.opencl.Buffer.AsyncMapping(new LwjglEvent(event), buf);
}
Also used : org.lwjgl.opencl(org.lwjgl.opencl) com.jme3.opencl(com.jme3.opencl) ByteBuffer(java.nio.ByteBuffer)

Aggregations

ByteBuffer (java.nio.ByteBuffer)8 Vector3f (com.jme3.math.Vector3f)7 ColorRGBA (com.jme3.math.ColorRGBA)6 Material (com.jme3.material.Material)5 com.jme3.opencl (com.jme3.opencl)5 Geometry (com.jme3.scene.Geometry)5 BitmapText (com.jme3.font.BitmapText)4 RendererException (com.jme3.renderer.RendererException)4 Texture (com.jme3.texture.Texture)4 ArrayList (java.util.ArrayList)4 BitmapFont (com.jme3.font.BitmapFont)3 Matrix4f (com.jme3.math.Matrix4f)3 DefaultPlatformChooser (com.jme3.opencl.DefaultPlatformChooser)3 Device (com.jme3.opencl.Device)3 PlatformChooser (com.jme3.opencl.PlatformChooser)3 AppSettings (com.jme3.system.AppSettings)3 Image (com.jme3.texture.Image)3 TextureCubeMap (com.jme3.texture.TextureCubeMap)3 CubeMapWrapper (com.jme3.environment.util.CubeMapWrapper)2 AmbientLight (com.jme3.light.AmbientLight)2