Removed TextureAtlas based material after speeding up the one based on multiple texture units.
This commit is contained in:
@ -1,23 +0,0 @@
|
|||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoordsXY : TEXCOORD0;
|
|
||||||
float4 TexCoordsYZ : TEXCOORD1;
|
|
||||||
float4 TexCoordsXZ : TEXCOORD2;
|
|
||||||
float4 Normal : TEXCOORD3;
|
|
||||||
float Alpha : TEXCOORD4;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN, uniform sampler2D colourMap : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
float3 colourMapValueXY = tex2D(colourMap, IN.TexCoordsXY.xy).rgb * abs(IN.Normal.z);
|
|
||||||
float3 colourMapValueYZ = tex2D(colourMap, IN.TexCoordsYZ.xy).rgb * abs(IN.Normal.x);
|
|
||||||
float3 colourMapValueXZ = tex2D(colourMap, IN.TexCoordsXZ.xy).rgb * abs(IN.Normal.y);
|
|
||||||
|
|
||||||
float3 colourMapValue = colourMapValueXY + colourMapValueYZ + colourMapValueXZ;
|
|
||||||
|
|
||||||
//colourMapValue /= 3.0;
|
|
||||||
|
|
||||||
return float4(colourMapValue*IN.Color.rgb,pow(IN.Alpha,0.75));
|
|
||||||
}
|
|
@ -1,145 +0,0 @@
|
|||||||
//NOTE - The code in this file might seem slightly strange. Intuitivy it would
|
|
||||||
//seem better to get Ogre to pass in an array of lights, rather than passing
|
|
||||||
//them individually and then building arrays. However, I have had problms with
|
|
||||||
//this approach (possibly a bug?)
|
|
||||||
|
|
||||||
//See http://www.ogre3d.org/phpBB2/viewtopic.php?t=32391
|
|
||||||
|
|
||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
float Alpha : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoordsXY : TEXCOORD0;
|
|
||||||
float4 TexCoordsYZ : TEXCOORD1;
|
|
||||||
float4 TexCoordsXZ : TEXCOORD2;
|
|
||||||
float4 Normal : TEXCOORD3;
|
|
||||||
float Alpha : TEXCOORD4;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct light
|
|
||||||
{
|
|
||||||
float4 position;
|
|
||||||
float4 diffuseColour;
|
|
||||||
float4 attenuation;
|
|
||||||
};
|
|
||||||
|
|
||||||
v2f doWork(a2v IN, float4x4 world, float4x4 viewProj, float textureScale, float4 ambient, int iNoOfLights, light lights[4])
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(world, IN.Position);
|
|
||||||
|
|
||||||
float3 uVec;
|
|
||||||
float3 vVec;
|
|
||||||
|
|
||||||
IN.Normal = normalize(IN.Normal);
|
|
||||||
|
|
||||||
/*float absX = abs(IN.Normal.x);
|
|
||||||
float absY = abs(IN.Normal.y);
|
|
||||||
float absZ = abs(IN.Normal.z);
|
|
||||||
if((absZ <= absX) && (absZ <= absY))
|
|
||||||
{
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xy /textureScale;
|
|
||||||
uVec = float3(-IN.Normal.y, IN.Normal.x,0);
|
|
||||||
}
|
|
||||||
else if((absY <= absX) && (absY <= absZ))
|
|
||||||
{
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xz /textureScale;
|
|
||||||
uVec = float3(-IN.Normal.z, 0, IN.Normal.x);
|
|
||||||
}
|
|
||||||
else if((absX <= absZ) && (absX <= absY))
|
|
||||||
{
|
|
||||||
// OUT.TexCoords.xy = OUT.Position.yz /textureScale;
|
|
||||||
uVec = float3(0, -IN.Normal.z, IN.Normal.y);
|
|
||||||
}
|
|
||||||
vVec = cross(IN.Normal, uVec);
|
|
||||||
OUT.TexCoords.x = dot(OUT.Position.xyz, uVec);
|
|
||||||
OUT.TexCoords.y = dot(OUT.Position.xyz, vVec); */
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xy * IN.Normal.z * IN.Normal.z + OUT.Position.xz * IN.Normal.y * IN.Normal.y + OUT.Position.yz * IN.Normal.x * IN.Normal.x;
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy /= textureScale;
|
|
||||||
|
|
||||||
OUT.TexCoordsXY.xy = OUT.Position.xy;
|
|
||||||
OUT.TexCoordsYZ.xy = OUT.Position.yz;
|
|
||||||
OUT.TexCoordsXZ.xy = OUT.Position.xz;
|
|
||||||
|
|
||||||
OUT.TexCoordsXY.xy /= textureScale;
|
|
||||||
OUT.TexCoordsYZ.xy /= textureScale;
|
|
||||||
OUT.TexCoordsXZ.xy /= textureScale;
|
|
||||||
|
|
||||||
OUT.Normal = float4(IN.Normal,0.0);
|
|
||||||
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.yz /textureScale;
|
|
||||||
OUT.TexCoordsXY.w = 1;
|
|
||||||
OUT.TexCoordsYZ.w = 1;
|
|
||||||
OUT.TexCoordsXZ.w = 1;
|
|
||||||
|
|
||||||
OUT.Color.rgba = float4(0.0,0.0,0.0,1.0);
|
|
||||||
|
|
||||||
for(int lightCt = 0; lightCt < iNoOfLights; lightCt++)
|
|
||||||
{
|
|
||||||
float3 L = normalize(lights[lightCt].position.xyz - OUT.Position.xyz);
|
|
||||||
//Calculate attenuation factor.
|
|
||||||
float d = distance(lights[lightCt].position.xyz, OUT.Position.xyz);
|
|
||||||
float attenuationFactor = 1.0 / (lights[lightCt].attenuation.y + lights[lightCt].attenuation.z * d + lights[lightCt].attenuation.w * d * d);
|
|
||||||
// Calculate diffuse component
|
|
||||||
float LdotN = max(dot(L, IN.Normal) , 0);
|
|
||||||
OUT.Color.rgb += lights[lightCt].diffuseColour.rgb * LdotN * attenuationFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT.Color.rgb += ambient.rgb;
|
|
||||||
|
|
||||||
OUT.Position = mul(viewProj, OUT.Position);
|
|
||||||
|
|
||||||
OUT.Alpha = IN.Alpha;
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f OneLight(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 1, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f TwoLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 2, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f ThreeLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 3, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f FourLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2, uniform light light3)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
lights[3] = light3;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 4, lights);
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN, uniform sampler3D colourMap : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
|
|
||||||
float3 colourMapValue = tex3D(colourMap, IN.TexCoords.xyz).rgb;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return float4(colourMapValue*IN.Color.rgb, 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*float4 main(v2f IN, uniform sampler3D detailTexture : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
float3 detailColor = tex3D(detailTexture, IN.TexCoords.xyz).rgb;
|
|
||||||
return float4(detailColor * IN.Color.rgb, 1.0);
|
|
||||||
} */
|
|
@ -1,94 +0,0 @@
|
|||||||
//NOTE - The code in this file might seem slightly strange. Intuitivy it would
|
|
||||||
//seem better to get Ogre to pass in an array of lights, rather than passing
|
|
||||||
//them individually and then building arrays. However, I have had problms with
|
|
||||||
//this approach (possibly a bug?)
|
|
||||||
|
|
||||||
//See http://www.ogre3d.org/phpBB2/viewtopic.php?t=32391
|
|
||||||
|
|
||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct light
|
|
||||||
{
|
|
||||||
float4 position;
|
|
||||||
float4 diffuseColour;
|
|
||||||
float4 attenuation;
|
|
||||||
};
|
|
||||||
|
|
||||||
v2f doWork(a2v IN, float4x4 world, float4x4 viewProj, float textureScale, uniform float4 ambient, int iNoOfLights, light lights[4])
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(world, IN.Position);
|
|
||||||
|
|
||||||
OUT.TexCoords.xyz = OUT.Position.xyz /textureScale;
|
|
||||||
OUT.TexCoords.w = 1;
|
|
||||||
|
|
||||||
OUT.Color.rgba = float4(0.0,0.0,0.0,1.0);
|
|
||||||
|
|
||||||
for(int lightCt = 0; lightCt < iNoOfLights; lightCt++)
|
|
||||||
{
|
|
||||||
float3 L = normalize(lights[lightCt].position.xyz - OUT.Position.xyz);
|
|
||||||
//Calculate attenuation factor.
|
|
||||||
float d = distance(lights[lightCt].position.xyz, OUT.Position.xyz);
|
|
||||||
float attenuationFactor = 1.0 / (lights[lightCt].attenuation.y + lights[lightCt].attenuation.z * d + lights[lightCt].attenuation.w * d * d);
|
|
||||||
// Calculate diffuse component
|
|
||||||
float LdotN = max(dot(L, IN.Normal) , 0);
|
|
||||||
OUT.Color.rgb += lights[lightCt].diffuseColour.rgb * LdotN * attenuationFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT.Color.rgb += ambient.rgb;
|
|
||||||
|
|
||||||
OUT.Position = mul(viewProj, OUT.Position);
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f OneLight(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 1, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f TwoLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 2, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f ThreeLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 3, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f FourLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float textureScale, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2, uniform light light3)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
lights[3] = light3;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, textureScale, ambient, 4, lights);
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
float3 LightDirection : TEXCOORD1;
|
|
||||||
float3 Normal : TEXCOORD2;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN, uniform sampler3D colourMap : TEXUNIT0, uniform sampler3D normalMap : TEXUNIT1) : COLOR
|
|
||||||
{
|
|
||||||
float3 normalMapValue = tex3D(normalMap, IN.TexCoords.xyz).rgb;
|
|
||||||
normalMapValue = (normalMapValue - 0.5) * 2;
|
|
||||||
|
|
||||||
float3 finalNormal = normalize(IN.Normal + normalMapValue);
|
|
||||||
|
|
||||||
float3 colourMapValue = tex3D(colourMap, IN.TexCoords.xyz).rgb;
|
|
||||||
|
|
||||||
|
|
||||||
// calculate light vector
|
|
||||||
//float3 Normal = normalize(IN.Color.xyz);
|
|
||||||
/* float3 Normal = (IN.Color.xyz * 2) - float3(1.0,1.0,1.0);
|
|
||||||
Normal = normalize(Normal+ normalAdjustment);
|
|
||||||
float3 lightDirection = normalize(float3(1,1,1)); */
|
|
||||||
|
|
||||||
// Calculate diffuse component
|
|
||||||
float diffuse = max(dot(finalNormal, IN.LightDirection) , 0);
|
|
||||||
|
|
||||||
diffuse += 0.3;
|
|
||||||
|
|
||||||
//OUT.Color = ambient + float4(diffuse,diffuse,diffuse,1.0);
|
|
||||||
|
|
||||||
|
|
||||||
//return float4(detailColor * IN.Color.rgb, 1.0);
|
|
||||||
|
|
||||||
return float4(colourMapValue*diffuse, 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*float4 main(v2f IN, uniform sampler3D detailTexture : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
float3 detailColor = tex3D(detailTexture, IN.TexCoords.xyz).rgb;
|
|
||||||
return float4(detailColor * IN.Color.rgb, 1.0);
|
|
||||||
} */
|
|
@ -1,68 +0,0 @@
|
|||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
float3 LightDirection : TEXCOORD1;
|
|
||||||
float3 Normal : TEXCOORD2;
|
|
||||||
};
|
|
||||||
|
|
||||||
v2f main(a2v IN,uniform float4x4 world, uniform float4x4 viewProj/*,uniform float4 ambient*/)
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(world, IN.Position);
|
|
||||||
|
|
||||||
OUT.TexCoords.xyz = OUT.Position.xyz /8;
|
|
||||||
OUT.TexCoords.w = 1;
|
|
||||||
|
|
||||||
OUT.Position = mul(viewProj, OUT.Position);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// calculate light vector
|
|
||||||
/*float3 N = normalize(IN.Normal);
|
|
||||||
float3 lightPosition = float3(0,0,0);
|
|
||||||
float3 L = normalize(lightPosition - IN.Position.xyz); */
|
|
||||||
|
|
||||||
// Calculate diffuse component
|
|
||||||
//float diffuse = max(dot(N, L) , 0);
|
|
||||||
|
|
||||||
//OUT.Color = ambient + float4(diffuse,diffuse,diffuse,1.0);
|
|
||||||
|
|
||||||
//OUT.Color = float4((IN.Normal + float3(1.0,1.0,1.0)) / 2.0, 0.0);
|
|
||||||
|
|
||||||
OUT.LightDirection = normalize(float3(1.0,1.0,1.0));
|
|
||||||
OUT.Normal = IN.Normal;
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*v2f main(a2v IN,uniform float4x4 worldViewProj,uniform float4 ambient)
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(worldViewProj, IN.Position);
|
|
||||||
|
|
||||||
OUT.TexCoords.xyz = IN.Position.xyz / 4;
|
|
||||||
OUT.TexCoords.w = 1;
|
|
||||||
|
|
||||||
//OUT.Color = float4(1.0,0.0,0.0,1.0);
|
|
||||||
|
|
||||||
// calculate light vector
|
|
||||||
float3 N = normalize(IN.Normal);
|
|
||||||
float3 lightPosition = float3(0,0,0);
|
|
||||||
float3 L = normalize(lightPosition - IN.Position.xyz);
|
|
||||||
|
|
||||||
// Calculate diffuse component
|
|
||||||
float diffuse = max(dot(N, L) , 0);
|
|
||||||
|
|
||||||
OUT.Color = ambient + float4(diffuse,diffuse,diffuse,1.0);
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}*/
|
|
@ -1,10 +0,0 @@
|
|||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Normal : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN) : COLOR
|
|
||||||
{
|
|
||||||
return abs(IN.Normal);
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
float2 Alpha : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Normal : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
v2f main(a2v IN, uniform float4x4 world, uniform float4x4 viewProj)
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(world, IN.Position);
|
|
||||||
|
|
||||||
IN.Normal = normalize(IN.Normal);
|
|
||||||
|
|
||||||
OUT.Normal = float4(IN.Normal,0.0);
|
|
||||||
|
|
||||||
OUT.Position = mul(viewProj, OUT.Position);
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}
|
|
@ -1,82 +0,0 @@
|
|||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
float4 Normal : TEXCOORD1;
|
|
||||||
float Alpha : TEXCOORD2;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN, uniform sampler2D colourMap : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
float textureScalingFactor = 20.0f;
|
|
||||||
float textureSize = 512.0f;
|
|
||||||
float noOfTexturesPerDimension = 4.0;
|
|
||||||
|
|
||||||
//Scale the texture.
|
|
||||||
IN.TexCoords /= textureScalingFactor;
|
|
||||||
|
|
||||||
//Make sure texture coordinates are in the range 0.0 - 1.0 (or 0.9999? Is this necessary?)
|
|
||||||
IN.TexCoords.x = frac(IN.TexCoords.x);
|
|
||||||
IN.TexCoords.y = frac(IN.TexCoords.y);
|
|
||||||
IN.TexCoords.z = frac(IN.TexCoords.z);
|
|
||||||
|
|
||||||
//Avoid sampling the texels at the edge of each texture. To do this, compress the range of texture coordinates.
|
|
||||||
//To work with mipmaping we can't use a constant addition of 0.5 - it needs to be dependant of mipmap level?
|
|
||||||
IN.TexCoords *= (textureSize - 1.0);
|
|
||||||
IN.TexCoords += 0.5f;
|
|
||||||
IN.TexCoords /= textureSize;
|
|
||||||
|
|
||||||
//Now scale the texture coordinates to the right range for the texture atlas.
|
|
||||||
IN.TexCoords /= noOfTexturesPerDimension;
|
|
||||||
|
|
||||||
|
|
||||||
//Next we compute the offset of the texture in the texture atlas
|
|
||||||
float material = floor(IN.Alpha);
|
|
||||||
float y = floor(material / noOfTexturesPerDimension);
|
|
||||||
float x = fmod(material,noOfTexturesPerDimension);
|
|
||||||
float2 offset = float2(x,y);
|
|
||||||
offset /= noOfTexturesPerDimension;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float3 colourMapValueXY = tex2D(colourMap, IN.TexCoords.xy + offset).rgb * abs(IN.Normal.z);
|
|
||||||
float3 colourMapValueYZ = tex2D(colourMap, IN.TexCoords.yz + offset).rgb * abs(IN.Normal.x);
|
|
||||||
float3 colourMapValueXZ = tex2D(colourMap, IN.TexCoords.xz + offset).rgb * abs(IN.Normal.y);
|
|
||||||
|
|
||||||
float3 colourMapValue = colourMapValueXY + colourMapValueYZ + colourMapValueXZ;
|
|
||||||
|
|
||||||
return float4(colourMapValue*IN.Color.rgb,1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Curently unused. This function mimics linear texture interpolation by taking several samples when in nearest neighbour sampling mode.
|
|
||||||
float4 performInterpolatedTextureLookup(sampler2D texture, float2 pos)
|
|
||||||
{
|
|
||||||
float xPos = pos.x * 2048.0;
|
|
||||||
float xFrac = frac(xPos);
|
|
||||||
float xMin = xPos - xFrac;
|
|
||||||
float xMax = xPos + 1.0;
|
|
||||||
xMin /= 2048.0;
|
|
||||||
xMax /= 2048.0;
|
|
||||||
|
|
||||||
float yPos = pos.y* 2048.0;
|
|
||||||
float yFrac = frac(yPos);
|
|
||||||
float yMin = yPos - yFrac;
|
|
||||||
float yMax = yPos + 1.0;
|
|
||||||
yMin /= 2048.0;
|
|
||||||
yMax /= 2048.0;
|
|
||||||
|
|
||||||
|
|
||||||
float4 resultMinXMinY = tex2D(texture, float2(xMin, yMin));
|
|
||||||
float4 resultMaxXMinY = tex2D(texture, float2(xMax, yMin));
|
|
||||||
|
|
||||||
float4 resultMinXMaxY = tex2D(texture, float2(xMin, yMax));
|
|
||||||
float4 resultMaxXMaxY = tex2D(texture, float2(xMax, yMax));
|
|
||||||
|
|
||||||
float4 resultMinY = (resultMinXMinY * (1-xFrac) + resultMaxXMinY * xFrac);
|
|
||||||
float4 resultMaxY = (resultMinXMaxY * (1-xFrac) + resultMaxXMaxY * xFrac);
|
|
||||||
|
|
||||||
float4 result = (resultMinY * (1-yFrac) + resultMaxY * yFrac);
|
|
||||||
return result;
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
float4 Normal : TEXCOORD1;
|
|
||||||
float2 Alpha : TEXCOORD2;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 main(v2f IN, uniform sampler2D colourMap : TEXUNIT0) : COLOR
|
|
||||||
{
|
|
||||||
//return float4(IN.Alpha.y, 1.0f-IN.Alpha.y, 0.0f,1.0f);
|
|
||||||
|
|
||||||
float textureScalingFactor = 20.0f;
|
|
||||||
float textureSize = 512.0f;
|
|
||||||
float noOfTexturesPerDimension = 4.0;
|
|
||||||
|
|
||||||
//Scale the texture.
|
|
||||||
IN.TexCoords /= textureScalingFactor;
|
|
||||||
|
|
||||||
//Make sure texture coordinates are in the range 0.0 - 1.0 (or 0.9999? Is this necessary?)
|
|
||||||
IN.TexCoords.x = frac(IN.TexCoords.x);
|
|
||||||
IN.TexCoords.y = frac(IN.TexCoords.y);
|
|
||||||
IN.TexCoords.z = frac(IN.TexCoords.z);
|
|
||||||
|
|
||||||
//Now scale the texture coordinates to the right range for the texture atlas.
|
|
||||||
IN.TexCoords /= noOfTexturesPerDimension;
|
|
||||||
|
|
||||||
//Next we compute the offset of the texture in the texture atlas
|
|
||||||
float material = floor(IN.Alpha.x);
|
|
||||||
float y = floor(material / noOfTexturesPerDimension);
|
|
||||||
float x = fmod(material,noOfTexturesPerDimension);
|
|
||||||
float2 offset = float2(x,y);
|
|
||||||
offset /= noOfTexturesPerDimension;
|
|
||||||
|
|
||||||
//Retrieve the 3 samples
|
|
||||||
float3 colourMapValueXY = tex2D(colourMap, IN.TexCoords.xy + offset).rgb * abs(IN.Normal.z);
|
|
||||||
float3 colourMapValueYZ = tex2D(colourMap, IN.TexCoords.yz + offset).rgb * abs(IN.Normal.x);
|
|
||||||
float3 colourMapValueXZ = tex2D(colourMap, IN.TexCoords.xz + offset).rgb * abs(IN.Normal.y);
|
|
||||||
|
|
||||||
//Blend according to triplanar texturing
|
|
||||||
float3 colourMapValue = colourMapValueXY + colourMapValueYZ + colourMapValueXZ;
|
|
||||||
|
|
||||||
//Return the result
|
|
||||||
return float4(colourMapValue*IN.Color.rgb*IN.Alpha.y,IN.Alpha.y);
|
|
||||||
}
|
|
@ -1,140 +0,0 @@
|
|||||||
struct a2v
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in object space
|
|
||||||
float3 Normal : NORMAL;
|
|
||||||
float2 Alpha : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct v2f
|
|
||||||
{
|
|
||||||
float4 Position : POSITION; //in projection space
|
|
||||||
float4 Color : COLOR;
|
|
||||||
float4 TexCoords : TEXCOORD0;
|
|
||||||
float4 Normal : TEXCOORD1;
|
|
||||||
float2 Alpha : TEXCOORD2;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct light
|
|
||||||
{
|
|
||||||
float4 position;
|
|
||||||
float4 diffuseColour;
|
|
||||||
float4 attenuation;
|
|
||||||
};
|
|
||||||
|
|
||||||
v2f doWork(a2v IN, float4x4 world, float4x4 viewProj, float4 ambient, int iNoOfLights, light lights[4])
|
|
||||||
{
|
|
||||||
v2f OUT;
|
|
||||||
|
|
||||||
OUT.Position = mul(world, IN.Position);
|
|
||||||
|
|
||||||
float3 uVec;
|
|
||||||
float3 vVec;
|
|
||||||
|
|
||||||
IN.Normal = normalize(IN.Normal);
|
|
||||||
|
|
||||||
/*float absX = abs(IN.Normal.x);
|
|
||||||
float absY = abs(IN.Normal.y);
|
|
||||||
float absZ = abs(IN.Normal.z);
|
|
||||||
if((absZ <= absX) && (absZ <= absY))
|
|
||||||
{
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xy /textureScale;
|
|
||||||
uVec = float3(-IN.Normal.y, IN.Normal.x,0);
|
|
||||||
}
|
|
||||||
else if((absY <= absX) && (absY <= absZ))
|
|
||||||
{
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xz /textureScale;
|
|
||||||
uVec = float3(-IN.Normal.z, 0, IN.Normal.x);
|
|
||||||
}
|
|
||||||
else if((absX <= absZ) && (absX <= absY))
|
|
||||||
{
|
|
||||||
// OUT.TexCoords.xy = OUT.Position.yz /textureScale;
|
|
||||||
uVec = float3(0, -IN.Normal.z, IN.Normal.y);
|
|
||||||
}
|
|
||||||
vVec = cross(IN.Normal, uVec);
|
|
||||||
OUT.TexCoords.x = dot(OUT.Position.xyz, uVec);
|
|
||||||
OUT.TexCoords.y = dot(OUT.Position.xyz, vVec); */
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.xy * IN.Normal.z * IN.Normal.z + OUT.Position.xz * IN.Normal.y * IN.Normal.y + OUT.Position.yz * IN.Normal.x * IN.Normal.x;
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy /= textureScale;
|
|
||||||
|
|
||||||
/*OUT.TexCoordsXY.xy = OUT.Position.xy;
|
|
||||||
OUT.TexCoordsYZ.xy = OUT.Position.yz;
|
|
||||||
OUT.TexCoordsXZ.xy = OUT.Position.xz;
|
|
||||||
|
|
||||||
OUT.TexCoordsXY.xy /= textureScale;
|
|
||||||
OUT.TexCoordsYZ.xy /= textureScale;
|
|
||||||
OUT.TexCoordsXZ.xy /= textureScale;*/
|
|
||||||
|
|
||||||
OUT.Normal = float4(IN.Normal,0.0);
|
|
||||||
|
|
||||||
OUT.TexCoords = OUT.Position;
|
|
||||||
|
|
||||||
|
|
||||||
//OUT.TexCoords.xy = OUT.Position.yz /textureScale;
|
|
||||||
/*OUT.TexCoordsXY.w = 1;
|
|
||||||
OUT.TexCoordsYZ.w = 1;
|
|
||||||
OUT.TexCoordsXZ.w = 1;*/
|
|
||||||
|
|
||||||
OUT.Color.rgba = float4(0.0,0.0,0.0,1.0);
|
|
||||||
|
|
||||||
for(int lightCt = 0; lightCt < iNoOfLights; lightCt++)
|
|
||||||
{
|
|
||||||
float3 L = normalize(lights[lightCt].position.xyz - OUT.Position.xyz);
|
|
||||||
//Calculate attenuation factor.
|
|
||||||
float d = distance(lights[lightCt].position.xyz, OUT.Position.xyz);
|
|
||||||
float attenuationFactor = 1.0 / (lights[lightCt].attenuation.y + lights[lightCt].attenuation.z * d + lights[lightCt].attenuation.w * d * d);
|
|
||||||
// Calculate diffuse component
|
|
||||||
float LdotN = max(dot(L, IN.Normal) , 0);
|
|
||||||
OUT.Color.rgb += lights[lightCt].diffuseColour.rgb * LdotN * attenuationFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT.Color.rgb += ambient.rgb;
|
|
||||||
|
|
||||||
OUT.Position = mul(viewProj, OUT.Position);
|
|
||||||
|
|
||||||
OUT.Alpha = IN.Alpha;
|
|
||||||
|
|
||||||
//OUT.Material = IN.Material;
|
|
||||||
|
|
||||||
return OUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f OneLight(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float4 ambient, uniform light light0)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, ambient, 1, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f TwoLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float4 ambient, uniform light light0, uniform light light1)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, ambient, 2, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f ThreeLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, ambient, 3, lights);
|
|
||||||
}
|
|
||||||
|
|
||||||
v2f FourLights(a2v IN,uniform float4x4 world, uniform float4x4 viewProj, uniform float4 ambient, uniform light light0, uniform light light1, uniform light light2, uniform light light3)
|
|
||||||
{
|
|
||||||
light lights[4];
|
|
||||||
lights[0] = light0;
|
|
||||||
lights[1] = light1;
|
|
||||||
lights[2] = light2;
|
|
||||||
lights[3] = light3;
|
|
||||||
|
|
||||||
return doWork(IN, world, viewProj, ambient, 4, lights);
|
|
||||||
}
|
|
||||||
|
|
@ -1,125 +1,13 @@
|
|||||||
vertex_program ColourMap2DOneLightVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap2DVertexProgram.cg
|
|
||||||
entry_point OneLight
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap2DTwoLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap2DVertexProgram.cg
|
|
||||||
entry_point TwoLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap2DThreeLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap2DVertexProgram.cg
|
|
||||||
entry_point ThreeLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap2DFourLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap2DVertexProgram.cg
|
|
||||||
entry_point FourLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap3DOneLightVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap3DVertexProgram.cg
|
|
||||||
entry_point OneLight
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap3DTwoLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap3DVertexProgram.cg
|
|
||||||
entry_point TwoLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap3DThreeLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap3DVertexProgram.cg
|
|
||||||
entry_point ThreeLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMap3DFourLightsVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap3DVertexProgram.cg
|
|
||||||
entry_point FourLights
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program ColourMapAndNormalMap3DVertexProgram cg
|
|
||||||
{
|
|
||||||
source ColourMapAndNormalMap3DVertexProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program ColourMapAndNormalMap3DFragmentProgram cg
|
|
||||||
{
|
|
||||||
source ColourMapAndNormalMap3DFragmentProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles ps_1_1 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program ColourMap2DFragmentProgram cg
|
|
||||||
{
|
|
||||||
source ColourMap2DFragmentProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles ps_1_1 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program TextureAtlasOneLightVertexProgram cg
|
|
||||||
{
|
|
||||||
source TextureAtlasVertexProgram.cg
|
|
||||||
entry_point OneLight
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program TextureAtlasFragmentProgram cg
|
|
||||||
{
|
|
||||||
source TextureAtlasFragmentProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles ps_1_1 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program TextureAtlasExperimentalFragmentProgram cg
|
|
||||||
{
|
|
||||||
source TextureAtlasExperimentalFragmentProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles ps_1_1 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program NormalVertexProgram cg
|
|
||||||
{
|
|
||||||
source NormalVertexProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles vs_1_1 arbvp1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program NormalFragmentProgram cg
|
|
||||||
{
|
|
||||||
source NormalFragmentProgram.cg
|
|
||||||
entry_point main
|
|
||||||
profiles ps_1_1 arbfp1
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex_program SingleOneLightVertexProgram cg
|
vertex_program SingleOneLightVertexProgram cg
|
||||||
{
|
{
|
||||||
source SingleVertexProgram.cg
|
source SingleVertexProgram.cg
|
||||||
entry_point OneLight
|
entry_point OneLight
|
||||||
profiles vs_1_1 arbvp1
|
profiles vs_3_0 vs_2_x vs_2_0 vs_1_1 vp40 vp30 vp20 arbvp1
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment_program SingleFragmentProgram cg
|
fragment_program SingleFragmentProgram cg
|
||||||
{
|
{
|
||||||
source SingleFragmentProgram.cg
|
source SingleFragmentProgram.cg
|
||||||
entry_point main
|
entry_point main
|
||||||
profiles ps_1_1 arbfp1
|
profiles ps_3_x ps_3_0 ps_2_x ps_2_0 ps_1_4 ps_1_3 ps_1_2 ps_1_1 fp40 fp30 fp20 arbfp1
|
||||||
}
|
}
|
@ -1,101 +0,0 @@
|
|||||||
material ColourMap2DOneLight
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap2DOneLightVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref ColourMap2DFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap2DTwoLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap2DTwoLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap2DThreeLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap2DThreeLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
param_named_auto light2.position light_position 2
|
|
||||||
param_named_auto light2.diffuseColour light_diffuse_colour 2
|
|
||||||
param_named_auto light2.attenuation light_attenuation 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap2DFourLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap2DFourLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
param_named_auto light2.position light_position 2
|
|
||||||
param_named_auto light2.diffuseColour light_diffuse_colour 2
|
|
||||||
param_named_auto light2.attenuation light_attenuation 2
|
|
||||||
param_named_auto light3.position light_position 3
|
|
||||||
param_named_auto light3.diffuseColour light_diffuse_colour 3
|
|
||||||
param_named_auto light3.attenuation light_attenuation 3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,97 +0,0 @@
|
|||||||
material ColourMap3DOneLight
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap3DOneLightVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap3DTwoLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap3DTwoLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap3DThreeLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap3DThreeLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
param_named_auto light2.position light_position 2
|
|
||||||
param_named_auto light2.diffuseColour light_diffuse_colour 2
|
|
||||||
param_named_auto light2.attenuation light_attenuation 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material ColourMap3DFourLights
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMap3DFourLightsVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named textureScale float 16
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
param_named_auto light1.position light_position 1
|
|
||||||
param_named_auto light1.diffuseColour light_diffuse_colour 1
|
|
||||||
param_named_auto light1.attenuation light_attenuation 1
|
|
||||||
param_named_auto light2.position light_position 2
|
|
||||||
param_named_auto light2.diffuseColour light_diffuse_colour 2
|
|
||||||
param_named_auto light2.attenuation light_attenuation 2
|
|
||||||
param_named_auto light3.position light_position 3
|
|
||||||
param_named_auto light3.diffuseColour light_diffuse_colour 3
|
|
||||||
param_named_auto light3.attenuation light_attenuation 3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
material ColourMapAndNormalMap3D
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref ColourMapAndNormalMap3DVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
//param_named ambient float4 0.5 0.5 0.5 1
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref ColourMapAndNormalMap3DFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
material NormalMaterial
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref NormalVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref NormalFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
material TextureAtlasExperimentalMaterial
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref TextureAtlasOneLightVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref TextureAtlasExperimentalFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture texture_atlas.png 2d 0
|
|
||||||
//filtering none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
material TextureAtlasMultiMaterial
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
ambient 0.0 0.0 0.0
|
|
||||||
diffuse 0.0 0.0 0.0
|
|
||||||
|
|
||||||
depth_bias -5 -5
|
|
||||||
}
|
|
||||||
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref TextureAtlasOneLightVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref TextureAtlasFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture texture_atlas.png
|
|
||||||
filtering none
|
|
||||||
}
|
|
||||||
|
|
||||||
scene_blend add
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
material TextureAtlasSingleMaterial
|
|
||||||
{
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass
|
|
||||||
{
|
|
||||||
vertex_program_ref TextureAtlasOneLightVertexProgram
|
|
||||||
{
|
|
||||||
param_named_auto world world_matrix
|
|
||||||
param_named_auto viewProj viewproj_matrix
|
|
||||||
param_named_auto ambient ambient_light_colour
|
|
||||||
param_named_auto light0.position light_position 0
|
|
||||||
param_named_auto light0.diffuseColour light_diffuse_colour 0
|
|
||||||
param_named_auto light0.attenuation light_attenuation 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref TextureAtlasFragmentProgram
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture texture_atlas.png
|
|
||||||
filtering none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user