Improve UI

This commit is contained in:
Andras Schmelczer 2026-06-11 21:02:06 +01:00
commit 3848e460cd

View file

@ -14,6 +14,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
uniform float planetLengths[PLANET_COUNT];
uniform float planetRandoms[PLANET_COUNT];
uniform float planetColorMixQ[PLANET_COUNT];
uniform float planetRotations[PLANET_COUNT];
uniform sampler2D noiseTexture;
@ -52,12 +53,20 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
vec2 center = planetCenters[j];
float l = planetLengths[j];
float randomOffset = planetRandoms[j];
float rotation = planetRotations[j];
vec2 targetCenterDelta = target - center;
float targetDistance = length(targetCenterDelta);
vec2 targetTangent = targetCenterDelta / clamp(targetDistance, 0.01, 1000.0);
float cr = cos(rotation);
float sr = sin(rotation);
vec2 rotatedTangent = vec2(
cr * targetTangent.x - sr * targetTangent.y,
sr * targetTangent.x + cr * targetTangent.y
);
vec2 noisyTarget = target - (
targetTangent * planetTerrain(vec2(
l * abs(atan(targetTangent.y, targetTangent.x)),
l * abs(atan(rotatedTangent.y, rotatedTangent.x)),
randomOffset
)) / 12.0
);
@ -89,8 +98,8 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
if (dist < minDistance) {
minDistance = dist;
color = mix(${colorToString(settings.declaPlanetColor)}, ${colorToString(
settings.redPlanetColor,
)}, planetColorMixQ[j]);
settings.redPlanetColor,
)}, planetColorMixQ[j]);
}
}
@ -105,6 +114,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
center: 'planetCenters',
vertices: 'planetVertices',
colorMixQ: 'planetColorMixQ',
rotation: 'planetRotations',
},
uniformCountMacroName: `PLANET_COUNT`,
shaderCombinationSteps: [0, 1, 2, 3],
@ -112,6 +122,9 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
};
public randomOffset = 0;
// Radians the surface noise is rotated by; advanced over time by PlanetView so
// the planet's textured surface slowly spins.
public rotation = 0;
constructor(
public vertices: Array<vec2>,
@ -142,6 +155,7 @@ export class PlanetShape extends PolygonFactory(settings.planetEdgeCount, 0) {
length,
random: this.randomOffset,
colorMixQ: this.colorMixQ,
rotation: this.rotation,
};
}