Remove duplication between world/chrome shaders.
This commit is contained in:
@@ -50,11 +50,11 @@ namespace OpenRA.Graphics
|
|||||||
TempBufferCount = Game.Settings.Graphics.NumTempBuffers;
|
TempBufferCount = Game.Settings.Graphics.NumTempBuffers;
|
||||||
SheetSize = Game.Settings.Graphics.SheetSize;
|
SheetSize = Game.Settings.Graphics.SheetSize;
|
||||||
|
|
||||||
WorldSpriteShader = device.CreateShader("world-shp");
|
WorldSpriteShader = device.CreateShader("shp");
|
||||||
WorldLineShader = device.CreateShader("world-line");
|
WorldLineShader = device.CreateShader("line");
|
||||||
LineShader = device.CreateShader("chrome-line");
|
LineShader = device.CreateShader("line");
|
||||||
RgbaSpriteShader = device.CreateShader("chrome-rgba");
|
RgbaSpriteShader = device.CreateShader("rgba");
|
||||||
SpriteShader = device.CreateShader("chrome-shp");
|
SpriteShader = device.CreateShader("shp");
|
||||||
|
|
||||||
WorldSpriteRenderer = new SpriteRenderer(this, WorldSpriteShader);
|
WorldSpriteRenderer = new SpriteRenderer(this, WorldSpriteShader);
|
||||||
WorldLineRenderer = new LineRenderer(this, WorldLineShader);
|
WorldLineRenderer = new LineRenderer(this, WorldLineShader);
|
||||||
@@ -82,9 +82,9 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
SetShaderParams(WorldSpriteShader, zr1, r2, scroll);
|
SetShaderParams(WorldSpriteShader, zr1, r2, scroll);
|
||||||
SetShaderParams(WorldLineShader, zr1, r2, scroll);
|
SetShaderParams(WorldLineShader, zr1, r2, scroll);
|
||||||
SetShaderParams(LineShader, r1, r2, scroll);
|
SetShaderParams(LineShader, r1, r2, float2.Zero);
|
||||||
SetShaderParams(RgbaSpriteShader, r1, r2, scroll);
|
SetShaderParams(RgbaSpriteShader, r1, r2, float2.Zero);
|
||||||
SetShaderParams(SpriteShader, r1, r2, scroll);
|
SetShaderParams(SpriteShader, r1, r2, float2.Zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetShaderParams(IShader s, float2 r1, float2 r2, float2 scroll)
|
void SetShaderParams(IShader s, float2 r1, float2 r2, float2 scroll)
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
// OpenRA gui lines shader
|
|
||||||
// Author: C. Forbes
|
|
||||||
//--------------------------------------------------------
|
|
||||||
|
|
||||||
float2 r1, r2; // matrix elements
|
|
||||||
|
|
||||||
struct VertexIn {
|
|
||||||
float4 Position: POSITION;
|
|
||||||
float4 Color: TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexOut {
|
|
||||||
float4 Position: POSITION;
|
|
||||||
float4 Color: COLOR0;
|
|
||||||
};
|
|
||||||
|
|
||||||
VertexOut Simple_vp(VertexIn v) {
|
|
||||||
VertexOut o;
|
|
||||||
float2 p = v.Position.xy * r1 + r2;
|
|
||||||
o.Position = float4(p.x,p.y,0,1);
|
|
||||||
o.Color = v.Color;
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
float4 Simple_fp(VertexOut f) : COLOR0 {
|
|
||||||
return f.Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
technique high_quality {
|
|
||||||
pass p0 {
|
|
||||||
BlendEnable = true;
|
|
||||||
DepthTestEnable = false;
|
|
||||||
//CullMode = None;
|
|
||||||
//FillMode = Wireframe;
|
|
||||||
VertexProgram = compile latest Simple_vp();
|
|
||||||
FragmentProgram = compile latest Simple_fp();
|
|
||||||
|
|
||||||
BlendEquation = FuncAdd;
|
|
||||||
BlendFunc = int2( SrcAlpha, OneMinusSrcAlpha );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
technique high_quality_cg21 {
|
|
||||||
pass p0 {
|
|
||||||
BlendEnable = true;
|
|
||||||
DepthTestEnable = false;
|
|
||||||
//CullMode = None;
|
|
||||||
//FillMode = Wireframe;
|
|
||||||
VertexProgram = compile arbvp1 Simple_vp();
|
|
||||||
FragmentProgram = compile arbfp1 Simple_fp();
|
|
||||||
|
|
||||||
BlendEquation = FuncAdd;
|
|
||||||
BlendFunc = int2( SrcAlpha, OneMinusSrcAlpha );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
// OpenRA test shader
|
|
||||||
// Author: C. Forbes
|
|
||||||
//--------------------------------------------------------
|
|
||||||
|
|
||||||
float2 Scroll;
|
|
||||||
float2 r1, r2; // matrix elements
|
|
||||||
|
|
||||||
sampler2D DiffuseTexture = sampler_state {
|
|
||||||
MinFilter = Nearest;
|
|
||||||
MagFilter = Nearest;
|
|
||||||
WrapS = Repeat;
|
|
||||||
WrapT = Repeat;
|
|
||||||
};
|
|
||||||
|
|
||||||
sampler2D Palette = sampler_state {
|
|
||||||
MinFilter = Nearest;
|
|
||||||
MagFilter = Nearest;
|
|
||||||
WrapS = Repeat;
|
|
||||||
WrapT = Repeat;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexIn {
|
|
||||||
float4 Position: POSITION;
|
|
||||||
float4 Tex0: TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexOut {
|
|
||||||
float4 Position: POSITION;
|
|
||||||
float3 Tex0: TEXCOORD0;
|
|
||||||
float4 ChannelMask: TEXCOORD1;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 DecodeChannelMask( float x )
|
|
||||||
{
|
|
||||||
if (x > 0)
|
|
||||||
return (x > 0.5f) ? float4(1,0,0,0) : float4(0,1,0,0);
|
|
||||||
else
|
|
||||||
return (x <-0.5f) ? float4(0,0,0,1) : float4(0,0,1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
VertexOut Simple_vp(VertexIn v) {
|
|
||||||
VertexOut o;
|
|
||||||
float2 p = v.Position.xy * r1 + r2;
|
|
||||||
o.Position = float4(p.x,p.y,0,1);
|
|
||||||
o.Tex0 = float3(v.Tex0.x, v.Tex0.y, v.Tex0.z);
|
|
||||||
o.ChannelMask = DecodeChannelMask( v.Tex0.w );
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
float4 Palette_fp(VertexOut f) : COLOR0 {
|
|
||||||
float4 x = tex2D(DiffuseTexture, f.Tex0.xy);
|
|
||||||
float2 p = float2( dot(x, f.ChannelMask), f.Tex0.z );
|
|
||||||
return tex2D(Palette, p);
|
|
||||||
}
|
|
||||||
|
|
||||||
technique low_quality {
|
|
||||||
pass p0 {
|
|
||||||
BlendEnable = true;
|
|
||||||
DepthTestEnable = false;
|
|
||||||
CullFaceEnable = false;
|
|
||||||
VertexProgram = compile latest Simple_vp();
|
|
||||||
FragmentProgram = compile latest Palette_fp();
|
|
||||||
|
|
||||||
BlendEquation = FuncAdd;
|
|
||||||
BlendFunc = int2( SrcAlpha, OneMinusSrcAlpha );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
technique low_quality_cg21 {
|
|
||||||
pass p0 {
|
|
||||||
BlendEnable = true;
|
|
||||||
DepthTestEnable = false;
|
|
||||||
CullFaceEnable = false;
|
|
||||||
VertexProgram = compile arbvp1 Simple_vp();
|
|
||||||
FragmentProgram = compile arbfp1 Palette_fp();
|
|
||||||
|
|
||||||
BlendEquation = FuncAdd;
|
|
||||||
BlendFunc = int2( SrcAlpha, OneMinusSrcAlpha );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
uniform vec2 r1, r2; // matrix elements
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec2 p = gl_Vertex.xy*r1 + r2;
|
|
||||||
gl_Position = vec4(p.x,p.y,0,1);
|
|
||||||
gl_FrontColor = gl_MultiTexCoord0;
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
uniform vec2 r1,r2; // matrix elements
|
|
||||||
|
|
||||||
vec4 DecodeChannelMask( float x )
|
|
||||||
{
|
|
||||||
if (x > 0.0)
|
|
||||||
return (x > 0.5) ? vec4(1,0,0,0) : vec4(0,1,0,0);
|
|
||||||
else
|
|
||||||
return (x < -0.5) ? vec4(0,0,0,1) : vec4(0,0,1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec2 p = gl_Vertex.xy*r1 + r2;
|
|
||||||
gl_Position = vec4(p.x,p.y,0,1);
|
|
||||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
|
||||||
gl_TexCoord[1] = DecodeChannelMask(gl_MultiTexCoord0.w);
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
void main()
|
|
||||||
{
|
|
||||||
gl_FragColor = gl_Color;
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
uniform sampler2D DiffuseTexture, Palette;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec4 x = texture2D(DiffuseTexture, gl_TexCoord[0].st);
|
|
||||||
vec2 p = vec2( dot(x, gl_TexCoord[1]), gl_TexCoord[0].p );
|
|
||||||
gl_FragColor = texture2D(Palette,p);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user