If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Chess Titans
| Chess Titans |
|---|
|
Разработчик:
Oberon Games
|
Одна из новых игр, включенных в Windows Vista и 7.
Меню Отладки
| To do: Узнать о работоспособности Скоростного Рендера |
Как и другие игры встроенные в Vista и 7, в ней присутствует внутренняя переменная g_debugEnabled
Опции включенные в меню:
- "Повернуть доску" - переворачивает доску на другую сторону в 3D режиме, но ничего не делает в 2D.
- "Автоматическая игра" - позволяет наблюдать за игрой двух компьютеров. Если игра была начата - она начнется заново.
- "Включить вид сверху вниз" - переключает камеру в режим 2D. Переключение обратно в 3D изменит настройки графики на минимальные.
- "Включить Скоростной Рендер" - судя по всему, эта опция должна была сделать игру быстрее на медленных компьютерах
Поддержка XInput
Присутствует интересная незадокументированная особенность - поддержка XInput (для геймпадов); если игра обнаруживает подключенный в USB порт контроллер от Xbox 360 - уголок первого игрока на нем загорится, намекая на готовность контроллера к использованию. Возможно, эта функция не была описана ввиду того что Microsoft подумали что люди слишком сильно привыкли к традиционному управлению, и геймпад будет странным выбором. Особенность все же, приятная
Управление
| Кнопка | Действие |
|---|---|
| Левый аналоговый стик/D-pad/Педали/Триггеры | Двигает курсор. Странно, но они также могут быть использованы в полоске меню. |
| B/Назад | Отменяет ход. |
| A/X | Выбирает квадрат на котором находится курсор. Передвижение курсора на фигуру и повторное нажатие A/X выбирает её. Нажатие A/X на одном из подсвеченных квадратов передвигает фигуру на него. |
| Y/Start | Открывает меню. |
Код Шейдеров
В файле Chess.dll есть несколько порций кода шейдеров, начинающегося с адреса 12B9358.
float4x4 World;
float4x4 View;
float4x4 Projection;
texture DecalTexture;
texture GradientTexture;
sampler2D DecalSampler = sampler_state
{
Texture = (DecalTexture);
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
sampler2D DecalSamplerQuick = sampler_state
{
Texture = (DecalTexture);
MinFilter = Point;
MagFilter = Point;
MipFilter = Point;
AddressU = Clamp;
AddressV = Clamp;
};
sampler1D GradientSampler = sampler_state
{
Texture = (GradientTexture);
MinFilter = Linear;
MagFilter = Linear;
MipFilter = None; // oh dear god. don't use mips because it'll sample from the lowest mip level when a triangle as the same texture coords for all 3 verts
AddressU = Clamp;
};
sampler2D ScreenSampler = sampler_state
{
Texture = (DecalTexture);
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
sampler2D ScreenSamplerPoint = sampler_state
{
Texture = (DecalTexture);
MinFilter = Point;
MagFilter = Point;
MipFilter = Point;
AddressU = Clamp;
AddressV = Clamp;
};
technique TWorldDecal
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
Lighting = false;
ZEnable = false;
ZFunc = LessEqual;
ZWriteEnable = false;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (DecalSampler);
Sampler[1] = (GradientSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = SelectArg2;
ColorArg1[1] = Texture;
ColorArg2[1] = Current;
ColorOp[2] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;
AlphaOp[1] = Modulate;
AlphaArg1[1] = Texture;
AlphaArg2[1] = Current;
AlphaOp[2] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TWorldDecalQuick
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
Lighting = false;
ZEnable = false;
ZFunc = LessEqual;
ZWriteEnable = false;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (DecalSamplerQuick);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TScreenDecal
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (World);
ProjectionTransform = (World);
Lighting = false;
ZEnable = false;
ZFunc = Always;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (ScreenSampler);
Sampler[1] = (GradientSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = SelectArg2;
ColorArg1[1] = Texture;
ColorArg2[1] = Current;
ColorOp[2] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;
AlphaOp[1] = Modulate;
AlphaArg1[1] = Texture;
AlphaArg2[1] = Current;
AlphaOp[2] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TScreenDecalPoint
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (World);
ProjectionTransform = (World);
Lighting = false;
ZEnable = false;
ZFunc = Always;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (ScreenSamplerPoint);
Sampler[1] = (GradientSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = SelectArg2;
ColorArg1[1] = Texture;
ColorArg2[1] = Current;
ColorOp[2] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;
AlphaOp[1] = Modulate;
AlphaArg1[1] = Texture;
AlphaArg2[1] = Current;
AlphaOp[2] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TScreenDecalImmediate
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (World);
ProjectionTransform = (World);
Lighting = false;
ZEnable = false;
ZFunc = Always;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = One;
DestBlend = InvSrcAlpha;
Sampler[0] = (ScreenSampler);
Sampler[1] = (GradientSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = SelectArg2;
ColorArg1[1] = Texture;
ColorArg2[1] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;
AlphaOp[1] = Modulate;
AlphaArg1[1] = Texture;
AlphaArg2[1] = Current;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
float4x4 WorldViewProjection;
float4x4 WorldView;
float4x4 World;
float4x4 View;
float4x4 ViewInv;
float4x4 Projection;
texture AlbedoTexture;
texture ReflTexture;
texture EnvTexture;
float Alpha;
float EnvironmentContribution = 0.25;
float ReflectionStrength = 0.25;
float TrimReflectionStrength = 0.45;
//-----------------------------------------------------------------------------
sampler2D AlbedoSampler = sampler_state
{
Texture = (AlbedoTexture);
MipFilter = Linear;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};
sampler2D ReflSampler = sampler_state
{
Texture = (ReflTexture);
MipFilter = Point;
MinFilter = Point;
MagFilter = Point;
AddressU = Clamp;
AddressV = Clamp;
};
samplerCUBE EnvSampler = sampler_state
{
Texture = (EnvTexture);
MipFilter = Point;
MinFilter = Linear;
MagFilter = Linear;
};
//-----------------------------------------------------------------------------
struct VS_OUTPUT
{
float4 Position : POSITION; // position of the vertex
float3 Diffuse : COLOR0; // diffuse color of the vertex
float2 TexCoord : TEXCOORD0;
float4 ReflCoord : TEXCOORD1;
float3 EnvCoord : TEXCOORD2;
};
//-----------------------------------------------------------------------------
VS_OUTPUT PieceVS(
uniform float3 ka,
uniform float3 kd,
uniform bool bEnvironment,
uniform bool bReflections,
float4 Pos : POSITION,
float2 TexCoord : TEXCOORD0,
float3 Normal : NORMAL0 )
{
VS_OUTPUT Output;
// Output the vetrex position in projection space
Output.Position = mul( Pos, WorldViewProjection );
float3 viewNormal = normalize( mul( Normal, (float3x3) WorldView ) );
float3 L = mul( worldLight, (float3x3) View );
float3 N = viewNormal;
float NdotL = saturate( dot( N, L ) );
float3 ambient = ka;
float3 diffuse = kd * NdotL;
Output.Diffuse = ambient + diffuse;
Output.TexCoord = TexCoord;
// note: bReflections does nothing
Output.ReflCoord = float4( 0, 0, 0, 1 );
if ( bEnvironment )
{
float3 viewPos = normalize( mul( Pos, WorldView ) );
float3 viewReflect = reflect( viewPos, viewNormal );
float3 worldReflect = mul( viewReflect, (float3x3) ViewInv );
Output.EnvCoord = worldReflect;
}
else
{
Output.EnvCoord = float3( 0, 1, 0 );
}
return Output;
}
//-----------------------------------------------------------------------------
VS_OUTPUT StandardVS(
uniform bool bEnvironment,
uniform bool bReflections,
float4 Pos : POSITION,
float2 TexCoord : TEXCOORD0,
float3 Normal : NORMAL0 )
{
VS_OUTPUT Output;
// Output the vetrex position in projection space
Output.Position = mul( Pos, WorldViewProjection );
// note: diffuse unused
Output.Diffuse = float3( 1, 1, 1 );
Output.TexCoord = TexCoord;
if ( bReflections )
{
Output.ReflCoord.x = Output.Position.x * 0.5 + Output.Position.w * 0.5;
Output.ReflCoord.y = Output.Position.w * 0.5 - Output.Position.y * 0.5;
Output.ReflCoord.z = Output.Position.w;
Output.ReflCoord.w = Output.Position.w;
}
else
{
Output.ReflCoord = float4( 0, 0, 0, 1 );
}
if ( bEnvironment )
{
float3 viewNormal = normalize( mul( Normal, (float3x3) WorldView ) );
float3 viewPos = normalize( mul( Pos, WorldView ) );
float3 viewReflect = reflect( viewPos, viewNormal );
float3 worldReflect = mul( viewReflect, (float3x3) ViewInv );
Output.EnvCoord = worldReflect;
}
else
{
Output.EnvCoord = float3( 0, 1, 0 );
}
return Output;
}
//-----------------------------------------------------------------------------
float4 PiecePS( VS_OUTPUT In, uniform bool bAlbedo, uniform bool bEnvironment, uniform bool bReflections, uniform float reflAmount ) : COLOR0
{
// note: bReflections does nothing
if ( bAlbedo )
{
float3 Albedo = tex2D( AlbedoSampler, In.TexCoord );
if ( bEnvironment )
{
float3 Environment = texCUBE( EnvSampler, In.EnvCoord ) * reflAmount;
Albedo = Albedo * environmentTextureAmount;
return float4( In.Diffuse * Albedo + Environment, Alpha );
}
else
{
return float4( In.Diffuse * Albedo, Alpha );
}
}
else
{
if ( bEnvironment )
{
float3 Environment = texCUBE( EnvSampler, In.EnvCoord ) * reflAmount;
return float4( In.Diffuse + Environment, Alpha );
}
else
{
return float4( In.Diffuse, Alpha );
}
}
}
//-----------------------------------------------------------------------------
float4 BoardPS( VS_OUTPUT In, uniform bool bEnvironment, uniform bool bReflections ) : COLOR0
{
float3 Albedo = tex2D( AlbedoSampler, In.TexCoord );
if ( bEnvironment )
{
float3 Environment = texCUBE( EnvSampler, In.EnvCoord ) * EnvironmentContribution;
if ( bReflections )
{
float4 Reflections = tex2Dproj( ReflSampler, In.ReflCoord );
float3 c = lerp( Albedo, Reflections.xyz, Reflections.w * ReflectionStrength );
return float4( c + Environment, 1 );
}
else
{
return float4( Albedo + Environment, 1 );
}
}
else
{
if ( bReflections )
{
float4 Reflections = tex2Dproj( ReflSampler, In.ReflCoord );
float3 c = lerp( Albedo, Reflections.xyz, Reflections.w * ReflectionStrength );
return float4( c, 1 );
}
else
{
return float4( Albedo, 1 );
}
}
}
//-----------------------------------------------------------------------------
float4 TablePS( VS_OUTPUT In, uniform bool bEnvironment, uniform bool bReflections ) : COLOR0
{
// note: bReflections does nothing
float3 Albedo = tex2D( AlbedoSampler, In.TexCoord );
if ( bEnvironment )
{
float3 Environment = texCUBE( EnvSampler, In.EnvCoord ) * 0.0325;
return float4( Albedo + Environment, 1 );
}
else
{
return float4( Albedo, 1 );
}
}
//-----------------------------------------------------------------------------
float4 TrimPS( VS_OUTPUT In, uniform bool bEnvironment, uniform bool bReflections ) : COLOR0
{
float3 Albedo = trimColor;
if ( bEnvironment )
{
float3 Environment = texCUBE( EnvSampler, In.EnvCoord ) * EnvironmentContribution;
if ( bReflections )
{
float4 Reflections = tex2Dproj( ReflSampler, In.ReflCoord );
float3 c = lerp( Albedo, Reflections.xyz, Reflections.w * TrimReflectionStrength );
return float4( c + Environment, 1 );
}
else
{
return float4( Albedo + Environment, 1 );
}
}
else
{
if ( bReflections )
{
float4 Reflections = tex2Dproj( ReflSampler, In.ReflCoord );
float3 c = lerp( Albedo, Reflections.xyz, Reflections.w * TrimReflectionStrength );
return float4( c, 1 );
}
else
{
return float4( Albedo, 1 );
}
}
}
//-----------------------------------------------------------------------------
technique TWhite_EnvironmentReflections
{
pass P0
{
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaWhite, kdWhite, true, true );
PixelShader = compile ps_1_4 PiecePS( pieceAlbedo, true, true, reflWhite );
}
}
technique TBlack_EnvironmentReflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaBlack, kdBlack, true, true );
PixelShader = compile ps_1_4 PiecePS( pieceAlbedo, true, true, reflBlack );
}
}
technique TBoard_EnvironmentReflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, true );
PixelShader = compile ps_1_4 BoardPS( true, true );
}
}
technique TTable_EnvironmentReflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, true );
PixelShader = compile ps_1_1 TablePS( true, true );
}
}
technique TTrim_EnvironmentReflections
{
pass P0
{
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, true );
PixelShader = compile ps_1_4 TrimPS( true, true );
}
}
//-----------------------------------------------------------------------------
technique TWhite_Reflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaWhite, kdWhite, false, true );
PixelShader = compile ps_1_1 PiecePS( pieceAlbedo, false, true, reflWhite );
}
}
technique TBlack_Reflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaBlack, kdBlack, false, true );
PixelShader = compile ps_1_1 PiecePS( pieceAlbedo, false, true, reflBlack );
}
}
technique TBoard_Reflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( false, true );
PixelShader = compile ps_1_4 BoardPS( false, true );
}
}
technique TTable_Reflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( false, true );
PixelShader = compile ps_1_4 TablePS( false, true );
}
}
technique TTrim_Reflections
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( false, true );
PixelShader = compile ps_1_4 TrimPS( false, true );
}
}
//-----------------------------------------------------------------------------
technique TWhite_Environment
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaWhite, kdWhite, true, false );
PixelShader = compile ps_1_4 PiecePS( pieceAlbedo, true, false, reflWhite );
}
}
technique TBlack_Environment
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
VertexShader = compile vs_1_1 PieceVS( kaBlack, kdBlack, true, false );
PixelShader = compile ps_1_4 PiecePS( pieceAlbedo, true, false, reflBlack );
}
}
technique TBoard_Environment
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, false );
PixelShader = compile ps_1_1 BoardPS( true, false );
}
}
technique TTable_Environment
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, false );
PixelShader = compile ps_1_1 TablePS( true, false );
}
}
technique TTrim_Environment
{
pass P0
{
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 StandardVS( true, false );
PixelShader = compile ps_1_1 TrimPS( true, false );
}
}
//-----------------------------------------------------------------------------
technique TWhite
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
Lighting = true;
LightEnable[0] = true;
LightType[0] = Directional;
LightDirection[0] = (-worldLight);
LightAmbient[0] = float4( 0, 0, 0, 0 );
LightDiffuse[0] = float4( 1, 1, 1, 1 );
LightSpecular[0] = float4( 1, 1, 1, 1 );
LightEnable[1] = false;
Ambient = float4( 1, 1, 1, 1 );
SpecularEnable = true;
MaterialAmbient = float4( kaWhite, 1 );
MaterialDiffuse = float4( kdWhite, 1 );
MaterialSpecular = float4( 0.15, 0.15, 0.15, 1 );
MaterialPower = 20.0;
MaterialEmissive = float4( 0, 0, 0, 0 );
// AmbientMaterialSource = Material;
// DiffuseMaterialSource = Material;
// EmissiveMaterialSource = Material;
// SpecularMaterialSource = Material;
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (AlbedoSampler);
TextureFactor = (Alpha.xxxx);
ColorOp[0] = COLOROP0;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = TFactor;
AlphaArg2[0] = Current;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TBlack
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
Lighting = true;
LightEnable[0] = true;
LightType[0] = Directional;
LightDirection[0] = (-worldLight);
LightAmbient[0] = float4( 0, 0, 0, 0 );
LightDiffuse[0] = float4( 1, 1, 1, 1 );
LightSpecular[0] = float4( 1, 1, 1, 1 );
LightEnable[1] = false;
Ambient = float4( 1, 1, 1, 1 );
SpecularEnable = true;
MaterialAmbient = float4( kaBlack, 1 );
MaterialDiffuse = float4( kdBlack, 1 );
MaterialSpecular = float4( 0.25, 0.25, 0.25, 1 );
MaterialPower = 20.0;
MaterialEmissive = float4( 0, 0, 0, 0 );
// AmbientMaterialSource = Material;
// DiffuseMaterialSource = Material;
// EmissiveMaterialSource = Material;
// SpecularMaterialSource = Material;
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Sampler[0] = (AlbedoSampler);
TextureFactor = (Alpha.xxxx);
ColorOp[0] = COLOROP0;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = SelectArg1;
AlphaArg1[0] = TFactor;
AlphaArg2[0] = Current;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TBoard
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
Sampler[0] = (AlbedoSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = Disable;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TTable
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
Sampler[0] = (AlbedoSampler);
ColorOp[0] = SelectArg1;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = Disable;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
technique TTrim
{
pass P0
{
WorldTransform[0] = (World);
ViewTransform = (View);
ProjectionTransform = (Projection);
ZEnable = true;
ZFunc = LessEqual;
ZWriteEnable = true;
AlphaBlendEnable = false;
TextureFactor = (trimColor.xyzz);
ColorOp[0] = SelectArg1;
ColorArg1[0] = TFactor;
ColorArg2[0] = Current;
ColorOp[1] = Disable;
AlphaOp[0] = Disable;
AlphaOp[1] = Disable;
VertexShader = null;
PixelShader = null;
}
}
float3 kaWhite = float3( 0.260, 0.260, 0.290 ); float3 kdWhite = float3( 0.820, 0.820, 0.850 ); float reflWhite = 0.33; float3 kaBlack = float3( 0.200, 0.200, 0.200 ); float3 kdBlack = float3( 0.450, 0.450, 0.450 ); float reflBlack = 0.14; float environmentTextureAmount = 0.6; float3 worldLight = float3( 0.259, 0.966, 0 ); // 15 degrees over float3 trimColor = float3( 0.600, 0.580, 0.500 ); bool pieceAlbedo = true; #define COLOROP0 Modulate #include "Media\Shaders\MeshCommon.fx"
float3 kaWhite = float3( 0.317, 0.317, 0.317 ); float3 kdWhite = float3( 0.651, 0.651, 0.651 ); float reflWhite = 0.08; float3 kaBlack = float3( 0.035, 0.045, 0.055 ); float3 kdBlack = float3( 0.165, 0.165, 0.165 ); float reflBlack = 0.17; float environmentTextureAmount = 1.0; float3 worldLight = float3( 0.259, 0.966, 0 ); // 15 degrees over float3 trimColor = float3( 0.600, 0.580, 0.500 ); bool pieceAlbedo = false; #define COLOROP0 SelectArg2 #include "Media\Shaders\MeshCommon.fx"
float3 kaWhite = float3( 0.317, 0.317, 0.317 ); float3 kdWhite = float3( 0.800, 0.800, 0.800 ); float reflWhite = 0.10; float3 kaBlack = float3( 0.320, 0.250, 0.220 ); float3 kdBlack = float3( 1.000, 1.000, 1.000 ); float reflBlack = 0.14; float environmentTextureAmount = 1.0; float3 worldLight = float3( 0.259, 0.966, 0 ); // 15 degrees over float3 trimColor = float3( 0.600, 0.580, 0.500 ); bool pieceAlbedo = true; #define COLOROP0 Modulate #include "Media\Shaders\MeshCommon.fx"
float4x4 WorldViewProjInv;
texture SkyBoxTexture;
samplerCUBE SkyBoxSampler = sampler_state
{
Texture = (SkyBoxTexture);
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
};
struct VS_OUTPUT
{
float4 Position : POSITION;
float3 TexCoord : TEXCOORD0;
};
VS_OUTPUT SkyBoxVS( float4 Pos : POSITION )
{
VS_OUTPUT Output;
Output.Position = Pos;
Output.TexCoord = normalize( mul( Pos, WorldViewProjInv ) );
return Output;
}
float4 SkyBoxPS( VS_OUTPUT Input ) : COLOR
{
float3 c = texCUBE( SkyBoxSampler, Input.TexCoord );
return float4( c, 1 );
}
technique TSkyBox
{
pass P0
{
ZEnable = false;
AlphaBlendEnable = false;
VertexShader = compile vs_1_1 SkyBoxVS();
PixelShader = compile ps_1_1 SkyBoxPS();
}
}
Cleanup > To do
Games > Games by content > Games with debugging functions
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Oberon Media > Games developed by Oberon Games
Games > Games by platform > Windows games
Games > Games by publisher > Games published by Microsoft
Games > Games by release date > Games released in 2007
