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 > Pages missing developer references
Cleanup > Pages missing publisher references
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 publisher > Games published by Microsoft
Games > Games by release date > Games released in 2007