Difference between revisions of "Overgrowth Levels"
(merged intro from blog post http://blog.wolfire.com/2010/12/Overgrowth-graphics-overview) |
(→Sky) |
||
Line 63: | Line 63: | ||
'''<SunColorAngle>''' - ?? | '''<SunColorAngle>''' - ?? | ||
− | '''<RayToSun r0="0.0" r1="0.0" r2="0.0" | + | '''<RayToSun/>''' - This Tag has 4 Attributes, r0="0.0" r1="0.0" r2="0.0" ''NOTE: what do they do?'' |
Revision as of 20:54, 13 February 2015
The base for every scene is the land and sky. The sky is based on a panoramic photo, which is converted to a skybox at run-time. The terrain is based on a heightmap, which is then simplified using quadric error metrics and divided into patches for frustum culling. Finally the terrain and sky are combined into a new skybox, and the edges of the terrain are faded to blend in. This new skybox is then blurred to use as a lookup for lighting and fog color. The terrain also has four normal-mapped detail textures, which are blended based on a weight map, and automatically tinted to match the base color map. The detail textures fade away in the distance to avoid any visible tiling, but the heightmap normal mapping keeps the large-scale detail. This same technique is also used for some large objects, like buildings, cliffs and boulders.
Contents
XML File
<?xml version="2.0" ?> <Type>saved</Type> <Name></Name> <Description></Description> <Shader>post</Shader> <Terrain> <Heightmap>[path here]</Heightmap> <ColorMap>[path here]</ColorMap> <WeightMap>[path here]</WeightMap> <DetailMaps> <DetailMap colorpath="[path here to image with color info]" normalpath="[path here to image with normal info]" materialpath="[path here -- to something in the material.xml format]" /> <DetailMap colorpath="[path here to image with color info]" normalpath="[path here to image with normal info]" materialpath="[path here -- to something in the material.xml format]" /> <DetailMap colorpath="[path here to image with color info]" normalpath="[path here to image with normal info]" materialpath="[path here -- to something in the material.xml format]" /> <DetailMap colorpath="[path here to image with color info]" normalpath="[path here to image with normal info]" materialpath="[path here -- to something in the material.xml format]" /> </DetailMaps> <DetailObjects> //for grass and stuff <DetailObject obj_path="Data/Objects/Plants/Groundcover/Grass/WildGrass.xml" weight_path="Data/Textures/Terrain/scrubby_hills/scrubby_hills_grass.png" normal_conform="0.900000" density="20.000000" min_embed="0.000000" max_embed="0.400000" min_scale="1.000000" max_scale="2.000000" view_distance="20.000000" jitter_degrees="10.000000" overbright="0.000000" /> </DetailObjects> </Terrain> <Sky> <DomeTexture>Data/Textures/skies/FILE.tga</DomeTexture> <SunAngularRad>0.123456</SunAngularRad> <SunColorAngle>6.8534</SunColorAngle> <RayToSun r0="0.123456" r1="0.123456" r2="0.123456" /> <ExtraAO>0</ExtraAO> </Sky> <Objectives>[objective here]</Objectives> //possible objectives: reach_a_trigger, reach_a_trigger_with_no_pursuers, collect
Header
<Type> - ??
<Name> - ??
<Description> - ??
<Shader> - ??
Terrain
<HeightMap> - A 16-bit grayscale image in the png format, with the value of each pixel corresponding to an elevation in the terrain.
<ColorMap> - A .tga file which maps the color of each pixel to the color of a point on the terrain. This is used for rough texture, and can be used for example to make valleys green and mountain peaks grey.
<WeightMap> - A .tga in which colors (RGB + Black) are used to define which DetailMap to use on which part of the terrain.
<DetailMap> - DetailMaps are used to tile various objects across the terrain, for example of a patch of gravel: a local change in terrain color to grey, a normal map that gives the impression of gravel, and the corresponding materialobject which generate a "gravel" sound when interacted with.
Sky
<DomeTexture> - Filepath to the texture of the skydome. Some already exist in Data/Textures/skies/
<SunAngularRad> - Size of Sun in Radians?
<SunColorAngle> - ??
<RayToSun/> - This Tag has 4 Attributes, r0="0.0" r1="0.0" r2="0.0" NOTE: what do they do?