# New territory border rendering.

Add textured line overlay rendering.
Change terrain height calculations to be triangulation-dependent for
improved accuracy.
Add triangulation-dependent terrain normal function.
Support separate S/T wrap modes for textures.
Rename CVector2D_Maths since it no longer conflicts with simulation
CVector2D.
Coalesce freed chunks in vertex buffers, to avoid excessive
fragmentation.
Add some things to help debug vertex buffer allocation a little.

This was SVN commit r9929.
This commit is contained in:
Ykkrosh
2011-07-30 00:56:45 +00:00
parent 239685d754
commit 8fee3d8ef8
36 changed files with 1084 additions and 143 deletions
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<TerritoryManager>
<ImpassableCost>4</ImpassableCost>
<BorderThickness>0.5</BorderThickness>
<BorderSeparation>0.55</BorderSeparation>
</TerritoryManager>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Textures>
<File pattern="territory_border.png" format="rgba"/>
</Textures>
@@ -0,0 +1,20 @@
!!ARBfp1.0
PARAM objectColor = program.local[0];
TEMP base;
TEMP mask;
TEMP color;
TEMP los;
// Combine base texture and color, using mask texture
TEX base, fragment.texcoord[0], texture[0], 2D;
TEX mask, fragment.texcoord[0], texture[1], 2D;
LRP color.rgb, mask, objectColor, base;
// Multiply by LOS texture
TEX los, fragment.texcoord[1], texture[2], 2D;
MUL result.color.rgb, color, los.a;
// Use alpha from base texture
MOV result.color.a, base.a;
END
@@ -0,0 +1,15 @@
!!ARBvp1.0
PARAM losTransform = program.local[0];
ATTRIB position = vertex.position;
DP4 result.position.x, state.matrix.mvp.row[0], position;
DP4 result.position.y, state.matrix.mvp.row[1], position;
DP4 result.position.z, state.matrix.mvp.row[2], position;
DP4 result.position.w, state.matrix.mvp.row[3], position;
MOV result.texcoord[0], vertex.texcoord[0];
MAD result.texcoord[1], position.xzzz, losTransform.x, losTransform.y;
MOV result.color, vertex.color;
END
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<program type="arb">
<vertex file="overlayline.vp">
<stream name="pos"/>
<stream name="uv0"/>
<uniform name="losTransform" loc="0" type="vec2"/>
</vertex>
<fragment file="overlayline.fp">
<uniform name="baseTex" loc="0" type="sampler2D"/>
<uniform name="maskTex" loc="1" type="sampler2D"/>
<uniform name="losTex" loc="2" type="sampler2D"/>
<uniform name="objectColor" loc="0" type="vec3"/>
</fragment>
</program>
@@ -5,14 +5,12 @@
<uniform name="sunColor" loc="0" type="vec3"/>
<uniform name="losTransform" loc="1" type="vec2"/>
<uniform name="shadowTransform" loc="2" type="mat4"/>
<uniform name="territoryTransform" loc="6" type="vec2"/>
</vertex>
<fragment file="terrain_common.fp">
<uniform name="baseTex" loc="0" type="sampler2D"/>
<uniform name="shadowTex" loc="2" type="sampler2DShadow"/>
<uniform name="losTex" loc="3" type="sampler2D"/>
<uniform name="territoryTex" loc="4" type="sampler2D"/>
<uniform name="ambient" loc="0" type="vec3"/>
<uniform name="shadowOffsets1" loc="2" type="vec4"/>
@@ -7,7 +7,6 @@
<uniform name="sunColor" loc="0" type="vec3"/>
<uniform name="losTransform" loc="1" type="vec2"/>
<uniform name="shadowTransform" loc="2" type="mat4"/>
<uniform name="territoryTransform" loc="6" type="vec2"/>
</vertex>
<fragment file="terrain_common.fp">
@@ -15,7 +14,6 @@
<uniform name="blendTex" loc="1" type="sampler2D"/>
<uniform name="shadowTex" loc="2" type="sampler2DShadow"/>
<uniform name="losTex" loc="3" type="sampler2D"/>
<uniform name="territoryTex" loc="4" type="sampler2D"/>
<uniform name="ambient" loc="0" type="vec3"/>
<uniform name="shadowOffsets1" loc="2" type="vec4"/>
@@ -81,10 +81,6 @@ TEX color, fragment.texcoord[0], texture[0], 2D;
MUL color.rgb, color, temp;
#endif
// Blend with the territory boundary texture
TEX tex, fragment.texcoord[4], texture[4], 2D;
LRP color.rgb, tex.a, tex, color;
// Multiply everything by the LOS texture
TEX tex.a, fragment.texcoord[3], texture[3], 2D;
MUL color.rgb, color, tex.a;
@@ -2,7 +2,6 @@
PARAM sunColor = program.local[0];
PARAM losTransform = program.local[1];
PARAM shadowTransform[4] = { program.local[2..5] };
PARAM territoryTransform = program.local[6];
TEMP lighting;
@@ -39,6 +38,5 @@ MOV result.texcoord[0], vertex.texcoord[0];
#endif
MAD result.texcoord[3], position.xzzz, losTransform.x, losTransform.y;
MAD result.texcoord[4], position.xzzz, territoryTransform.x, territoryTransform.y;
END
@@ -7,14 +7,12 @@
<uniform name="sunColor" loc="0" type="vec3"/>
<uniform name="losTransform" loc="1" type="vec2"/>
<uniform name="shadowTransform" loc="2" type="mat4"/>
<uniform name="territoryTransform" loc="6" type="vec2"/>
</vertex>
<fragment file="terrain_common.fp">
<uniform name="baseTex" loc="0" type="sampler2D"/>
<uniform name="shadowTex" loc="2" type="sampler2DShadow"/>
<uniform name="losTex" loc="3" type="sampler2D"/>
<uniform name="territoryTex" loc="4" type="sampler2D"/>
<uniform name="ambient" loc="0" type="vec3"/>
<uniform name="shadingColor" loc="1" type="vec3"/>
@@ -7,6 +7,7 @@
<PassabilityClasses>
<!-- Unit pathfinding classes: -->
<unrestricted/>
<default>
<MaxWaterDepth>2</MaxWaterDepth>
<MaxTerrainSlope>1.0</MaxTerrainSlope>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<TerritoryManager>
<ImpassableCost>4</ImpassableCost>
<BorderThickness>0.5</BorderThickness>
<BorderSeparation>0.55</BorderSeparation>
</TerritoryManager>