Because I have opted for
creating a realistic current gen scene, I have to produce a technical
specification around this. I also have to consider that I am using Cryengine
and what specific technical issues this may be produce. Working from; http://sdk.crydev.net/display/SDKDOC3/Modeling+Guidelines
There are some aspects related
to Cryengine that will affect how I will model and texture and plan for this
project. I will have to add additional edges to retain proper geometry shading
in engine. By chamfering edges or adding additional edges I can save normal map
(which are 4 times more expensive than diffuse in Cry) and smoothing groups. I
will have to focus on good specular maps and fewer cuts via smoothing/UV
borders-splits/material. Cry engine splits geometry depending on how many
splits the model contains and by reducing the splits I can reduce the in game
vertices count. My normal maps because of the expense should be half the size
of my other maps. By modelling I should try to reduce the amount of detail in
my normal map to achieve better consistency throughout my level.
LOD’s I use should retain
silhouette reducing details in the first instance and transparent materials,
reducing material ID’s wear possible. Next I should reduce all curvature not
necessary to the silhouette and all additional details. The last LOD should
contain basic shapes necessary for the silhouette and contain only 1 Material
ID. Each LOD should reduce the tri count by 50%.
Polygons should be distributed
In areas the player gets close to and I should neglect area that are far from
the players view. Because I have quite a playable area my assets will have to
make use of LOD’s for areas that are further from view. My Vista and non
playable area will be the only areas that I can reduce my tri count and I will
aim to use as few polygons as possible using the LOD plan as a base for how far
away the areas are and how they are constructed. Using lower texture resolution
for these areas.
I want my texture resolution to
be as high as possible as I want a high degree for fidelity and detail as I
want it to showcase my work. Textures should contain basic information and
details and should use decals to add other information to break up tilling.
Decals should be on 1 texture and placed in 3DSMAX to avoid placing in engine
and limiting the amount of memory and complexity they add.
I will use standard modelling
practices to reduce tri counts by deleting unseen geometry and back faces. By
merging meshes into unique meshes I can save on draw calls. Cry engine
processes square textures fasters than 2:1 ratio textures so I should consider
this when producing my level. Where possible I will aim to reuse textures and
shader’s and when using alphas reduces the amount of screen space they take up
by adding geometry. The larger the screen spaces used the more expensive it
will be to draw as alphas use a second draw call. I will have to consider
overdraw and try to reduce this by reducing sizes and the amount of overlap on
screen of alphas. By doing this I can also maximise the amount of texture space
I’m using per texture.
Mirrored information should be
merged where possible to reduce UV splits, problems with smoothing and
texturing. Diffuse Alpha should be used when possible for greyscale specular’s
and should be stored in the diffuse with gloss alpha. Specular’s can avoid the
need for normals at some point. Spend time on speculars rather than
greyscalling as this is a waste of memory and doesn’t perform any bonus to the
texture.
Tileable textures should not be expanded and where possible should
be as small as possible. “Memory wise, normal maps are four times as
expensive as a simple diffuse or specular map. Detailed normal maps are
very expensive. Avoid them as much as possible and compensate by using detailed
colour maps. Always use the Gloss in Diffuse Alpha shader generation option when the spec map contains
no additional colour information (grayscale). You can compensate for the loss
of colour information by using a specular colour in the shader. By doing this,
you can also save a draw call.” Objects that need multiple colours can
use a greyscale diffuse and then cry engine can tint the texture in the engine
to produce multiple variations. These textures should contain the small
material ID.
By producing an excel spreadsheet I have allowed for initial budgeting
of my level, I have 150k of asset planned but I will allow another 50k
additional budget for the non instanced scene. I have 100mb of texture space
initially allocated but will allow another 50mb for extended scope and
unplanned texture usage. I think this will allow me to produce all of my assets
and from this I can use instances to populate the level. I can reduce the draw
call’s of this by merging localised assets into one object, however I will not
consider this part of this initial budget. I will aim for a minimum of 30fps
and will have this as my main consideration of what I will produce or cut in
the level.