Sky System¶
EverQuest’s sky system has five variants each with a pair of sky layer meshes and a collection of shared sky object meshes. Each sky layer pair has an uppermost opaque layer and a transparent layer below. While most meshes are shaped as a skydome (half of an oblate spheroid), the Plane of Sky uses a skysphere (full spheroid) allowing the sky to be visible from 360 degrees.
** **.
The EverQuest skydome and skysphere meshes (viewed from the same direction)
All meshes are rendered with the depth write disabled so that they appear as if they are behind all other objects despite being very close to the camera. The scaling of the skydome is not important as long as it is big enough to not be culled by the near clip plane of the camera. Between the sky layers, sky objects (e.g. sun and moon) are rendered.
Rendering must be done in the following order:
- Opaque upper sky layer
- Transparent sky objects
- Transparent lower cloud layer
- All other level geometry
The skydome models, textures and animations are contained within the sky.s3d and sky.wld file. Data like the time of day color gradient values are compiled into the game executable.
The original EverQuest client allows the user to reduce the complexity of the sky to increase performance with the following options:
- Double layer - The sky as described above with two layers.
- Single layer - Sky with the lower transparent layer disabled.
- No sky - Sky is not rendered and instead, the zone fog color is shown.
All data in this document concerns the double layer sky.
Positioning¶
The sky layers and object models are positioned above the skydome model origin. To correctly position the sky, ensure that at each frame, its position is always equal to that of the camera. The rotation of the sky must always be static such that it does not move with the camera’s rotation.
Layer Movement¶
Each sky layer texture can pan along an axis simulating clouds moving across the sky. The exact rates of texture movement were calculated by adding visual reference points, a single red pixel, to the layer’s texture. As the skydome textures are tiled, we know that each instance of a red pixel on a mesh is one unit apart. Every time a red pixel leaves a specific screen point and returns to the same point, the texture UV has moved one unit. By timing the amount of time needed for this to happen, we can divide 1 by that number and get the movement per second. For example, if this process takes 20 seconds, we can calculate the panning speed as 0.05 units per second.
Sky Objects¶
Sky objects like the sun and moon are also found in each skybox variant. Although these objects are further away than the sky layers, the rendering order makes them appear as if they are between them. All skies except variant 3 share a common sun and moon object. In variant 3 (Plane of Sky), there is a sun, two moons and a saturn-like planet. All objects are animated using only rotational values which can be found in the WLD data.
Sky Color Gradient¶
To add to the visual realism, a color gradient is applied to both the sky and cloud layer materials. When rendering the sky meshes, the sky texture is mixed with the color gradient with one color being defined at the horizon level and another at the pole of the skydome. Below are the values that are used in the client. These values were calculated by replacing the sky and cloud layer textures with white textures and sampling the color values in an image editor. The sky and cloud layer use different gradient values but the color values for the horizon are identical. All sky variants use the same gradient values..
Shaders rendering the sky should interpolate the horizon and pole values using the min and max height of the sky layer. This color value can then be multiplied by the texture. There may be a slight difference in appearance due to the Trilogy client most likely calculating the gradient values per vertex rather than per pixel.
The sky gradient with layer textures disabled in the Trilogy Client (left) and Lantern (right)
Sky Variants¶
Below is a breakdown of the five sky system appearances and visual values.
Sky 1¶
Blue opaque upper layer with a transparent fluffy cloud layer. This sky is used in nearly all zones with skies.
- Sky layer speed: 120s panning east to west
- Cloud layer speed: 20s panning east to west
Textures: normalcloud.bmp (cloud layer), normalsky.bmp (sky layer), sun.bmp, moon.bmp
Sky 2¶
Blue sky with small white streaked clouds. This sky is used in desert zones..
- Sky layer speed: 120s panning east to west
- Cloud layer speed: 40s panning east to west
Textures: desertsky.bmp (sky layer), desertcloud.bmp (cloud layer), sun.bmp, moon.bmp
Sky 3¶
Blue sky with large fluffy clouds and rapid cloud movement and several sky objects (4 moons and saturn). Sky is completely enclosed and can be viewed from 360 degrees. Used in the Plane of Sky.
- Sky layer speed: 40 seconds panning north to south
- Cloud layer speed: 20 seconds panning south to north
Textures: normalcloud.bmp, normalsky.bmp, saturn.bmp, moon32.bmp, crescent.bmp
****.
Sky 4¶
Darker blue sky with thick rows of long clouds. Used in some Kunark and Velious zones..
- Sky layer speed: 120s panning east to west
- Cloud layer speed: 40s panning east to west
Textures: cottonsky.bmp (cloud layer), fluffycloud.bmp (sky layer), sun.bmp, moon.bmp
Sky 5¶
Red sky with white orange clouds. Although this cloud has two layers, the cloud layer is opaque. Sun and moon are present but only when using the single layer sky. This sky is used in the Plane of Fear.
- Sky layer speed: 40s panning east to west
- Cloud layer speed: 20s panning south to north
Textures: redcloud.bmp (sky and cloud layer), sun.bmp, moon.bmp
Information courtesy of Wizzel.