/*
- * Sixth 3D engine. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 3 of the GNU Lesser General Public License
- * or later as published by the Free Software Foundation.
- *
+ * Sixth 3D engine. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
*/
-
package eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic;
import eu.svjatoslav.sixth.e3d.geometry.Point3D;
public class GlowingPoint extends ForwardOrientedTexture {
private static final int TEXTURE_RESOLUTION_PIXELS = 100;
+ /**
+ * A set of all existing glowing points.
+ * Used to reuse textures of glowing points of the same color.
+ */
private static final Set<GlowingPoint> glowingPoints = Collections.newSetFromMap(new WeakHashMap<>());
private final Color color;
}
}
+
private static double computeScale(double pointSize) {
return pointSize / ((double) (TEXTURE_RESOLUTION_PIXELS / 50f));
}
+ /**
+ * Returns a texture for a glowing point of the given color.
+ * The texture is a circle with a gradient from transparent to the given color.
+ */
private static Texture getTexture(final Color color) {
// attempt to reuse texture from existing glowing point of the same color
synchronized (glowingPoints) {
return createTexture(color);
}
+ /**
+ * Creates a texture for a glowing point of the given color.
+ * The texture is a circle with a gradient from transparent to the given color.
+ */
private static Texture createTexture(final Color color) {
final Texture texture = new Texture(TEXTURE_RESOLUTION_PIXELS, TEXTURE_RESOLUTION_PIXELS, 1);
int halfResolution = TEXTURE_RESOLUTION_PIXELS / 2;