Search in sources :

Example 1 with Light

use of io.xol.chunkstories.api.rendering.lightning.Light in project chunkstories-core by Hugobros3.

the class ParticleFireLight method getRenderer.

@Override
public ParticleTypeRenderer getRenderer(ParticlesRenderer particlesRenderer) {
    return new ParticleTypeRenderer(particlesRenderer) {

        @Override
        public void beginRenderingForType(RenderingInterface renderingContext) {
            super.beginRenderingForType(renderingContext);
            renderingContext.setBlendMode(BlendMode.PREMULT_ALPHA);
            renderingContext.getRenderTargetManager().setDepthMask(false);
            // renderingContext.setDepthTestMode(DepthTestMode.DISABLED);
            // System.out.println("k");
            String temp_scale = "./textures/particles/fire_temp_scale_expl.png";
            renderingContext.bindTexture2D("colorTempSampler", particlesRenderer.getContent().textures().getTexture(temp_scale));
            particlesRenderer.getContent().textures().getTexture(temp_scale).setLinearFiltering(true);
            particlesRenderer.getContent().textures().getTexture(temp_scale).setTextureWrapping(false);
            getAlbedoTexture().setMipMapping(true);
            getAlbedoTexture().setLinearFiltering(true);
            getAlbedoTexture().setTextureWrapping(false);
        }

        @Override
        public void forEach_Rendering(RenderingInterface renderingContext, ParticleData data) {
            ParticleFireData b = (ParticleFireData) data;
            renderingContext.getLightsRenderer().queueLight(new Light(new Vector3f(1.0f, 252f / 255f, 1 / 255f), new Vector3f((float) data.x(), (float) data.y(), (float) data.z()), 25f * Math2.clamp((float) (double) b.vel.x() * 5000, 0.0, 1.0)));
            // System.out.println("k");
            /*data.setY((float) (data.y() + (Math.random() - 0.1) * 0.0015));
				data.setX((float) (data.x() + (Math.random() - 0.5) * 0.0015));
				data.setZ((float) (data.z() + (Math.random() - 0.5) * 0.0015));
				*/
            ((ParticleFireData) data).timer--;
            if (((ParticleFireData) data).timer < 0)
                data.destroy();
        }

        @Override
        public void destroy() {
        }
    };
}
Also used : Light(io.xol.chunkstories.api.rendering.lightning.Light) Vector3f(org.joml.Vector3f) RenderingInterface(io.xol.chunkstories.api.rendering.RenderingInterface)

Example 2 with Light

use of io.xol.chunkstories.api.rendering.lightning.Light in project chunkstories-core by Hugobros3.

the class ParticleLightningStrike method getRenderer.

@Override
public ParticleTypeRenderer getRenderer(ParticlesRenderer particlesRenderer) {
    return new ParticleTypeRenderer(particlesRenderer) {

        @Override
        public void forEach_Rendering(RenderingInterface renderingContext, ParticleData data) {
            Content content = ParticleLightningStrike.this.getType().store().parent();
            if (content instanceof ClientContent) {
                ClientContent clientContent = (ClientContent) content;
                LocalPlayer player = clientContent.getContext().getPlayer();
                Entity entity = player.getControlledEntity();
                if (entity != null) {
                    Location loc = entity.getLocation();
                    data.set((float) (double) data.x(), (float) (double) loc.y() + 1024, (float) (double) data.z());
                }
            }
            renderingContext.getLightsRenderer().queueLight(new Light(new Vector3f(226 / 255f, 255 / 255f, 226 / 255f).mul((float) (1f + Math.random())), new Vector3f((float) data.x(), (float) data.y(), (float) data.z()), 102004f + (float) Math.random() * 5f));
        }

        @Override
        public void destroy() {
        }
    };
}
Also used : Entity(io.xol.chunkstories.api.entity.Entity) ClientContent(io.xol.chunkstories.api.client.ClientContent) Content(io.xol.chunkstories.api.content.Content) LocalPlayer(io.xol.chunkstories.api.client.LocalPlayer) Light(io.xol.chunkstories.api.rendering.lightning.Light) Vector3f(org.joml.Vector3f) RenderingInterface(io.xol.chunkstories.api.rendering.RenderingInterface) ClientContent(io.xol.chunkstories.api.client.ClientContent) Location(io.xol.chunkstories.api.Location)

Example 3 with Light

use of io.xol.chunkstories.api.rendering.lightning.Light in project chunkstories-api by Hugobros3.

the class VoxelItemRenderer method renderItemInWorld.

@Override
public void renderItemInWorld(RenderingInterface renderer, ItemPile pile, World world, Location location, Matrix4f handTransformation) {
    /*if (((ItemVoxel) pile.getItem()).getVoxel() instanceof VoxelCustomIcon) {
			fallbackRenderer.renderItemInWorld(renderer, pile, world, location, handTransformation);
			return;
		}*/
    Voxel voxel = ((ItemVoxel) pile.getItem()).getVoxel();
    if (voxel == null)
        return;
    CellData fakeCell = new DummyCell(0, 0, 0, voxel, 0, 0, 0) {

        CellData air = new DummyCell(0, 1, 0, voxel.store().air(), 0, 0, 0);

        @Override
        public int getBlocklight() {
            return voxel.getEmittedLightLevel(this);
        }

        @Override
        public CellData getNeightbor(int side) {
            return air;
        }

        @Override
        public int getMetaData() {
            return ((ItemVoxel) pile.getItem()).getVoxelMeta();
        }
    };
    float s = 0.45f;
    handTransformation.scale(new Vector3f(s, s, s));
    handTransformation.translate(new Vector3f(-0.25f, -0.5f, -0.5f));
    renderer.setObjectMatrix(handTransformation);
    // Add a light only on the opaque pass
    if (fakeCell.getBlocklight() > 0 && renderer.getCurrentPass().name.contains("gBuffers")) {
        Vector4f lightposition = new Vector4f(0.0f, 0.0f, 0.0f, 1.0f);
        handTransformation.transform(lightposition);
        Light heldBlockLight = new Light(new Vector3f(0.6f, 0.50f, 0.4f).mul(0.5f), new Vector3f(lightposition.x(), lightposition.y(), lightposition.z()), 15f);
        renderer.getLightsRenderer().queueLight(heldBlockLight);
        // If we hold a light source, prepare the shader accordingly
        renderer.currentShader().setUniform2f("worldLightIn", Math.max(world.peekSafely(location).getBlocklight(), fakeCell.getBlocklight()), world.peekSafely(location).getSunlight());
    }
    Texture2D texture = content.voxels().textures().getDiffuseAtlasTexture();
    texture.setLinearFiltering(false);
    renderer.bindAlbedoTexture(texture);
    Texture2D normalTexture = content.voxels().textures().getNormalAtlasTexture();
    normalTexture.setLinearFiltering(false);
    renderer.bindNormalTexture(normalTexture);
    Texture2D materialTexture = content.voxels().textures().getMaterialAtlasTexture();
    materialTexture.setLinearFiltering(false);
    renderer.bindMaterialTexture(materialTexture);
    renderFakeVoxel(renderer, fakeCell);
}
Also used : ItemVoxel(io.xol.chunkstories.api.item.ItemVoxel) Texture2D(io.xol.chunkstories.api.rendering.textures.Texture2D) Vector4f(org.joml.Vector4f) ItemVoxel(io.xol.chunkstories.api.item.ItemVoxel) Voxel(io.xol.chunkstories.api.voxel.Voxel) Light(io.xol.chunkstories.api.rendering.lightning.Light) Vector3f(org.joml.Vector3f) CellData(io.xol.chunkstories.api.world.cell.CellData) DummyCell(io.xol.chunkstories.api.world.cell.DummyCell)

Example 4 with Light

use of io.xol.chunkstories.api.rendering.lightning.Light in project chunkstories-core by Hugobros3.

the class ParticleLight method getRenderer.

@Override
public ParticleTypeRenderer getRenderer(ParticlesRenderer particlesRenderer) {
    return new ParticleTypeRenderer(particlesRenderer) {

        @Override
        public void forEach_Rendering(RenderingInterface renderingContext, ParticleData data2) {
            ParticleLightData data = (ParticleLightData) data2;
            renderingContext.getLightsRenderer().queueLight(new Light(new Vector3f(1.0f, 181f / 255f, 79 / 255f), new Vector3f((float) data.c.x(), (float) data.c.y(), (float) data.c.z()), 15f + (float) Math.random() * 5f));
        }

        @Override
        public void destroy() {
        }
    };
}
Also used : Light(io.xol.chunkstories.api.rendering.lightning.Light) Vector3f(org.joml.Vector3f) RenderingInterface(io.xol.chunkstories.api.rendering.RenderingInterface)

Aggregations

Light (io.xol.chunkstories.api.rendering.lightning.Light)4 Vector3f (org.joml.Vector3f)4 RenderingInterface (io.xol.chunkstories.api.rendering.RenderingInterface)3 Location (io.xol.chunkstories.api.Location)1 ClientContent (io.xol.chunkstories.api.client.ClientContent)1 LocalPlayer (io.xol.chunkstories.api.client.LocalPlayer)1 Content (io.xol.chunkstories.api.content.Content)1 Entity (io.xol.chunkstories.api.entity.Entity)1 ItemVoxel (io.xol.chunkstories.api.item.ItemVoxel)1 Texture2D (io.xol.chunkstories.api.rendering.textures.Texture2D)1 Voxel (io.xol.chunkstories.api.voxel.Voxel)1 CellData (io.xol.chunkstories.api.world.cell.CellData)1 DummyCell (io.xol.chunkstories.api.world.cell.DummyCell)1 Vector4f (org.joml.Vector4f)1