r.flushGraphics(); double locationX = cam.getWidth(), locationY = cam.getHeight(); bQuad.resize(size, (cam.getHeight() / (double) cam.getWidth()) * size); if (bQuad.getLocalRenderState(RenderState.StateType.Texture) == null) { final TextureState ts = new TextureState(); bufTexture = new Texture2D(); ts.setTexture(bufTexture); bQuad.setRenderState(ts); bQuad.getMeshData().getTextureBuffer(0).put(4, width / (float) newWidth); bQuad.getMeshData().getTextureBuffer(0).put(6, width / (float) newWidth); width = newWidth; bQuad.getMeshData().getTextureBuffer(0).put(1, height / (float) newHeight); bQuad.getMeshData().getTextureBuffer(0).put(7, height / (float) newHeight); height = newHeight; bQuad.setWorldTranslation(locationX, locationY, 0); bQuad.updateGeometricState(0); bQuad.onDraw(r); r.flushGraphics();
_skyboxQuads[Face.North.ordinal()] = new Quad("north", _xExtent * 2, _yExtent * 2); _skyboxQuads[Face.North.ordinal()].setRotation(new Matrix3().fromAngles(0, Math.toRadians(180), 0)); _skyboxQuads[Face.North.ordinal()].setTranslation(new Vector3(0, 0, _zExtent)); _skyboxQuads[Face.South.ordinal()] = new Quad("south", _xExtent * 2, _yExtent * 2); _skyboxQuads[Face.South.ordinal()].setTranslation(new Vector3(0, 0, -_zExtent)); _skyboxQuads[Face.East.ordinal()] = new Quad("east", _zExtent * 2, _yExtent * 2); _skyboxQuads[Face.East.ordinal()].setRotation(new Matrix3().fromAngles(0, Math.toRadians(90), 0)); _skyboxQuads[Face.East.ordinal()].setTranslation(new Vector3(-_xExtent, 0, 0)); _skyboxQuads[Face.West.ordinal()] = new Quad("west", _zExtent * 2, _yExtent * 2); _skyboxQuads[Face.West.ordinal()].setRotation(new Matrix3().fromAngles(0, Math.toRadians(270), 0)); _skyboxQuads[Face.West.ordinal()].setTranslation(new Vector3(_xExtent, 0, 0)); _skyboxQuads[Face.Up.ordinal()] = new Quad("up", _xExtent * 2, _zExtent * 2); _skyboxQuads[Face.Up.ordinal()] .setRotation(new Matrix3().fromAngles(Math.toRadians(90), Math.toRadians(270), 0)); _skyboxQuads[Face.Up.ordinal()].setTranslation(new Vector3(0, _yExtent, 0)); _skyboxQuads[Face.Down.ordinal()] = new Quad("down", _xExtent * 2, _zExtent * 2); _skyboxQuads[Face.Down.ordinal()] .setRotation(new Matrix3().fromAngles(Math.toRadians(270), Math.toRadians(270), 0)); _skyboxQuads[Face.Down.ordinal()].setTranslation(new Vector3(0, -_yExtent, 0)); _skyboxQuads[i].getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); _skyboxQuads[i].getSceneHints().setLightCombineMode(LightCombineMode.Off); _skyboxQuads[i].getSceneHints().setCullHint(CullHint.Never); _skyboxQuads[i].getSceneHints().setRenderBucketType(RenderBucketType.PreBucket);
@Override public void draw(final Renderer r) { StatCollector.pause(); super.draw(r); StatCollector.resume(); } };
public static Quad newFullScreenQuad() { final Quad quad = new Quad("fsq", 2, 2); final SceneHints sceneHints = quad.getSceneHints(); sceneHints.setCullHint(CullHint.Never); sceneHints.setRenderBucketType(RenderBucketType.OrthoOrder); sceneHints.setLightCombineMode(LightCombineMode.Off); sceneHints.setTextureCombineMode(TextureCombineMode.Replace); return quad; } }
@MainThread public void init() { // tell our parent to lay us out so we have the right starting size. getParent().layout(); _quad = new Quad("fsq", 2, 2); _quad.setRenderMaterial("unlit/textured/fsq.yaml"); _quad.setModelBound(new BoundingBox()); _quad.getSceneHints().setLightCombineMode(LightCombineMode.Off); _quad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); _quad.getSceneHints().setRenderBucketType(RenderBucketType.Skip); checkRTT(); _canvasRenderer.getCamera().apply(_canvasRenderer.getRenderer()); _inited = true; }
quad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); quad.getSceneHints().setLightCombineMode(LightCombineMode.Off); quad.getSceneHints().setRenderBucketType(RenderBucketType.Ortho); quad.getSceneHints().setOrthoOrder(-1); final FloatBuffer tbuf = quad.getMeshData().getTextureCoords(0).getBuffer(); tbuf.clear(); tbuf.put(0).put(0); quad.setRenderState(texState); blend.setSourceFunction(SourceFunction.SourceAlpha); blend.setDestinationFunction(DestinationFunction.OneMinusSourceAlpha); quad.setRenderState(blend);
fullScreenQuad = new Quad("FullScreenQuad", cam.getWidth() / 4, cam.getHeight() / 4); fullScreenQuad.setTranslation(cam.getWidth() / 2, cam.getHeight() / 2, 0); fullScreenQuad.getSceneHints().setRenderBucketType(RenderBucketType.Ortho); fullScreenQuad.getSceneHints().setCullHint(CullHint.Never); fullScreenQuad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); fullScreenQuad.getSceneHints().setLightCombineMode(LightCombineMode.Off); fullScreenQuad.setRenderState(ts); as.setDestinationFunction(BlendState.DestinationFunction.One); as.setEnabled(true); fullScreenQuad.setRenderState(as); fullScreenQuad.updateGeometricState(0.0f, true);
fullScreenQuad = new Quad("FullScreenQuad", cam.getWidth() / 4, cam.getHeight() / 4); fullScreenQuad.setTranslation(cam.getWidth() / 2, cam.getHeight() / 2, 0); fullScreenQuad.getSceneHints().setRenderBucketType(RenderBucketType.Ortho); fullScreenQuad.getSceneHints().setCullHint(CullHint.Never); fullScreenQuad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); fullScreenQuad.getSceneHints().setLightCombineMode(LightCombineMode.Off); final TextureState ts = new TextureState(); ts.setTexture(textureReflect); fullScreenQuad.setRenderState(ts); fullScreenQuad.setRenderState(blurShaderVertical); fullScreenQuad.updateWorldRenderStates(false);
lastY -= maxY; _bgQuad.resize(texWidth, texHeight - lastY); _bgQuad.setRenderState(_defBlendState); _bgQuad.setTranslation(texWidth / 2f, texHeight - (texHeight - lastY) / 2f, 0); _bgQuad.updateGeometricState(0, true);
public QuadImposterNode(final String name, final int twidth, final int theight, final int depth, final int samples, final Timer timer) { super(name); _twidth = twidth; _theight = theight; _depth = depth; _samples = samples; _timer = timer; _texture = new Texture2D(); _imposterQuad = new Quad("ImposterQuad"); _imposterQuad.resize(1, 1); _imposterQuad.setModelBound(new BoundingBox()); _imposterQuad.getSceneHints().setTextureCombineMode(TextureCombineMode.Replace); _imposterQuad.getSceneHints().setLightCombineMode(LightCombineMode.Off); super.attachChild(_imposterQuad); getSceneHints().setRenderBucketType(RenderBucketType.Transparent); _targetScene = new Node(); super.attachChild(_targetScene); for (int i = 0; i < _corners.length; i++) { _corners[i] = new Vector3(); } if (timer != null) { _redrawRate = _elapsed = 0.05; // 20x per sec } else { setCameraAngleThreshold(10.0); setCameraDistanceThreshold(0.2); } _haveDrawn = false; }
screen.setEnabled(true); _quad.setRenderState(screen); _quad.updateGeometricState(0);
fullScreenQuad.setRenderState(ts); fullScreenQuad.updateWorldRenderStates(false); fullScreenQuad.setRenderMaterial("bloom/fsq_blur_vertical5_down.yaml");
/** * Set the texture to be displayed on the given side of the skybox. Only replaces the texture at the index specified * by textureUnit. * * @param face * the face to set * @param texture * The texture for that side to assume. * @param textureUnit * The texture unite of the given side's TextureState the texture will assume. */ public void setTexture(final Face face, final Texture texture, final int textureUnit) { // Validate if (face == null) { throw new IllegalArgumentException("Face can not be null."); } TextureState ts = (TextureState) _skyboxQuads[face.ordinal()] .getLocalRenderState(RenderState.StateType.Texture); if (ts == null) { ts = new TextureState(); } // Initialize the texture state ts.setTexture(texture, textureUnit); ts.setEnabled(true); texture.setWrap(WrapMode.EdgeClamp); // Set the texture to the quad _skyboxQuads[face.ordinal()].setRenderState(ts); return; }
final BlendState blend = (BlendState) fullScreenQuad.getWorldRenderState(RenderState.StateType.Blend); final TextureState ts = (TextureState) fullScreenQuad.getWorldRenderState(RenderState.StateType.Texture); extractionShader.setUniform("exposureCutoff", getExposureCutoff()); fullScreenQuad.setRenderState(extractionShader); fullScreenQuad.updateWorldRenderStates(false); fullScreenQuad.setRenderState(blurShader); fullScreenQuad.updateWorldRenderStates(false); fullScreenQuad.setRenderState(blurShaderHorizontal); fullScreenQuad.updateWorldRenderStates(false); fullScreenQuad.setRenderState(blurShaderVertical); fullScreenQuad.updateWorldRenderStates(false); fullScreenQuad.setRenderState(finalShader); fullScreenQuad.updateWorldRenderStates(false);
public TabledLabelGrapher(final int width, final int height, final Renderer renderer) { super(width, height, renderer); _defBlendState = new BlendState(); _defBlendState.setEnabled(true); _defBlendState.setBlendEnabled(true); _defBlendState.setSourceFunction(BlendState.SourceFunction.SourceAlpha); _defBlendState.setDestinationFunction(BlendState.DestinationFunction.OneMinusSourceAlpha); _graphRoot.setRenderState(_defBlendState); _bgQuad.getSceneHints().setRenderBucketType(RenderBucketType.OrthoOrder); _bgQuad.setDefaultColor(new ColorRGBA(ColorRGBA.BLACK)); _graphRoot.getSceneHints().setCullHint(CullHint.Never); }
@Override public void write(final OutputCapsule capsule) throws IOException { super.write(capsule); capsule.write(_texture, "texture", null); capsule.write(_targetScene, "targetScene", null); capsule.write(_imposterQuad, "standIn", new Quad("ImposterQuad")); capsule.write(_redrawRate, "redrawRate", 0.05f); capsule.write(_cameraAngleThreshold, "cameraThreshold", 0); capsule.write(_worldUpVector, "worldUpVector", new Vector3(Vector3.UNIT_Y)); }
public void update(final ReadOnlyTimer timer) { final double tpf = timer.getTimePerFrame(); // Execute update queue items GameTaskQueueManager.getManager(ParticleEditorFrame.GLOBAL_CONTEXT).getQueue(GameTaskQueue.UPDATE).execute(); _logicalLayer.checkTriggers(tpf); rootNode.updateGeometricState(tpf); if (Constants.stats) { final Camera cam = Camera.getCurrentCamera(); if (cam != null) { labGraph.setTranslation((cam.getWidth() - .5f * labGraph.getWidth()), (.5f * labGraph.getHeight()), 0); } statNode.updateGeometricState(tpf); } }
public void resetTexture() { _texture.setWrap(Texture.WrapMode.EdgeClamp); _texture.setMinificationFilter(Texture.MinificationFilter.BilinearNoMipMaps); _texture.setMagnificationFilter(Texture.MagnificationFilter.Bilinear); _texture.setTextureStoreFormat(TextureStoreFormat.RGBA8); _tRenderer.setupTexture(_texture); final TextureState ts = new TextureState(); ts.setEnabled(true); ts.setTexture(_texture, 0); _imposterQuad.setRenderState(ts); // Add a blending mode... This is so the background of the texture is // transparent. final BlendState as1 = new BlendState(); as1.setBlendEnabled(true); as1.setSourceFunction(BlendState.SourceFunction.SourceAlpha); as1.setDestinationFunction(BlendState.DestinationFunction.OneMinusSourceAlpha); as1.setTestEnabled(true); as1.setTestFunction(BlendState.TestFunction.GreaterThan); as1.setEnabled(true); _imposterQuad.setRenderState(as1); }
@Override protected void updateChildren(final double time) { _imposterQuad.updateGeometricState(time, false); if (_doUpdate && (!_haveDrawn || shouldDoUpdate(_cam))) { _targetScene.updateGeometricState(time, false); } }
_lastCamDir.normalizeLocal(); final FloatBuffer vertexBuffer = _imposterQuad.getMeshData().getVertexBuffer(); BufferUtils.setInBuffer(_corners[0], vertexBuffer, 3); BufferUtils.setInBuffer(_corners[1], vertexBuffer, 2); BufferUtils.setInBuffer(_corners[3], vertexBuffer, 0); _imposterQuad.updateModelBound();