Temat założony w maju 2008 roku, natomiast pojawiła się wersja DirectX 10 NYV z 30.12.2009. Z tego co się dowiedziałem było kilka nieoficjalnych wersji DirectX 10 dla WinXP. Początkowo od Alky Project, później od LWGame i ostatnia o nazwie NYV z 30 grudnia 2009 od KM-Software - jako kontynuacja projektu LWGame: https://obrazki.elektroda.pl/7876120000_1602945943_thumb.jpg https://obrazki.elektroda.pl/3750820300_1602945956_thumb.jpg Tutaj ciekawy opis uaktualniony 4 lata temu: Easily Download and Install DirectX 10 for Windows XP Tutaj można pobrać wersję DirectX 10 NYV: DirectX 10 NYV Zainstalowałem to w maszynie wirtualnej VMware 8 i teraz dxdiag w menu Uruchom pokazuje iż w systemie jest DirectX 10. Gier nie testowałem ale - jak wynika z opisu umieszczonego w instalatorze, podobno wiele gier wymagających DirectX 10 działa - te gry "rabotajut": https://obrazki.elektroda.pl/4207647600_1602946831_thumb.jpg Nie wiem jak to działa ale chyba musi być karta graficzna ze sprzętową obsługą DirectX 10 lub nowszą. Kontakt do autora Zlocorp dostępny po rejestracji: Zlocorp - informacje o użytkowniku Dodano po 4 : Niektóre gry wymagają konkretnych ustawień aby zadziałały - w podkatalogu \dx10\GraphicX\Game Fix są dodatkowe pliki do konkretnych gier. Dodano po 7 : Aha. Gry, które wymagają DirectX 9 mogą nie działać poprawnie po instalacji DX10 i wtedy podobno pomaga małe narzędzie do wyłączania/włączania DirectX - KM-Software DirectX Changer: https://obrazki.elektroda.pl/1681530800_1602948086_thumb.jpg Dodano po 1 26 : P.S. Na wypadek jakby linki wygasły zamieszczam DirectX10 NYV i DX Changer jako załączniki - hasło do archiwum KMDXC-2601.zip to raymondcc
GTA4 Îïòèìèçàòîð
1) Ñêà÷àòü è óñòàíîâèòü ïàò÷ 1.0.3 (îí æå 1.3)
2) Âûñòàâèòü âñå íàñòðîéêè êðîìå ðàçðåøåíèÿ (åãî ëó÷øå ïîñòàâèòü 1024*768) íà ìèíèìóì
3) Ôàéë commandline.txt (îí äåëàëñÿ ïîä âåðñèþ 1.0.2, íî è íà 3ì ïàò÷å áóäåò ïàõàòü) êèäàòü â ïàïêó ñ èãðîé
Ýòî èíôîðìàöèîííûé ôàéë!
Ïàïêè:
DirectX - Â ýòîé ïàïêå íàõîäÿòñÿ ôèêñû äëÿ èãð íàïèñàíûõ íà áàçå DirectX 9. Êèäàòü â ïàïêó ñ èãðîé
DirectX 10 - Òóò íàõîäÿòñÿ DLL äëÿ äîáàâëåíèÿ òåñòîâîé ïîääåðæêè â Windows XP è Windows 2003 èãð íàïèñàíûõ íà áàçå DirectX 10
DirectX 11 - Ýòè DLL íóæíû äëÿ òîãî ÷òîáû äîáàâèòü ïîääåðæêó DirectX 11 â Windows Vista
GameFix -  ýòîé ïàïêå ëåæàòü ôèêñû äëÿ îïðåäåëåííûõ èãð, â äàëüíåéøåì èõ êîëè÷åñòâî áóäåò óâåëè÷èâàòüñÿ
OpenGL - Ëåæàùèå òóò ôàéëû ïîìîãóò äîáàâèòü ïîääåðæêó íîâîé ãðàôèêè â èãðû íàïèñàííûå íà OpenGL (ê ïðèìåðó Half-Life 1 è Counter-Strike)
Ôàéëû (äëÿ Windows XP):
dx9.reg - Èçìåíåíèå âåðñèè DirectX â ñèñòåìå íà DX9
dx10.reg - Èçìåíåíèå âåðñèè DirectX â ñèñòåìå íà DX10
dx11.reg - Èçìåíåíèå âåðñèè DirectX â ñèñòåìå íà DX11
ÔÈÊÑ äëÿ Àññàñèíà
Ñêà÷àòü http://letitbit.net/download/e0fb09248949/assassinscreed-dx10.7z.html
******************************
Íàñòðîéêà Assassins Creed íà ÄÕ10
×òîáû çàïàõàë Assassins Creed íàäî ñäåëàòü ñëåäóþùèå äåéñòâèÿ:
1. Ñêà÷àéòå ôàéë http://letitbit.net/download/e0fb09248949/assassinscreed-dx10.7z.html (Ñäåëàíî äëÿ òîãî ÷òîáû óìåíüøèòü âåñ èíñòàëëÿòîðà)
2. Ðàñïàêóéòå â ëþáóþ ïàïêó
3. Çàìåíèòå îðèãèíàëüíûé ÅÕÅ ôàéë íà ñêà÷åííûé ôàéë ïî ññûëêå âûøå
4. Íàñëàæäàéòåñü!
//--------------------------------------------------------------------------------------
// Defines
//--------------------------------------------------------------------------------------
//#define OCCLUDED_PIXEL_RAYVALUE float4(1, 0, 0, 0)
// Use very large value for aplha to help edge detection
#define OCCLUDED_PIXEL_RAYVALUE float4(1, 0, 0, 100000)
#define NEARCLIPPED_PIXEL_RAYPOS float3(0, -1, 0)
// Z for skybox is zero, so patch this in shader
#define Z_EPSILON 0.00001
// Value for skybox depth
#define Z_MAX 100000
//--------------------------------------------------------------------------------------
// Textures
//--------------------------------------------------------------------------------------
Texture2D sceneDepthTex;
Texture3D colorTex;
Texture2D rayDataTex;
Texture2D rayDataTexSmall;
Texture2D rayCastTex;
Texture2D edgeTex;
Texture2D jitterTex;
Texture2D fireTransferFunction;
//--------------------------------------------------------------------------------------
// Samplers
//--------------------------------------------------------------------------------------
sampler samPointClamp;
sampler samLinearClamp;
sampler samRepeat;
//--------------------------------------------------------------------------------------
// Variables
//--------------------------------------------------------------------------------------
// Set once per volume
// Use for all rendering passes
cbuffer FluidRenderConfig
{
float RTWidth;
float RTHeight;
float4 DiffuseLight;
float4x4 WorldViewProjection;
float4x4 InvWorldViewProjection;
float ZNear;
float ZFar;
float4 gridDim; // float3
float4 recGridDim; // float3
float maxGridDim;
float gridScaleFactor = 1.0;
float4 eyeOnGrid; // float3
}
//static float edgeThreshold = 0.2;
//static float edgeThreshold = 0.1;
static float edgeThreshold = 0.01;
static const bool g_bRaycastFilterTricubic = false; // true: tricubic; false: trilinear
//static const bool g_bRaycastFilterTricubic = true; // true: tricubic; false: trilinear
#include " fluid_common_tricubic.h "
// Fire setup
static const float RednessFactor = 5.0f;
static const float fireAlphaMultiplier = 0.95f;
//static const float smokeAlphaMultiplier = 0.05f;
static const float smokeAlphaMultiplier = 0.5f;
//static const float smokeColorMultiplier = 2.00f;
static const float smokeColorMultiplier = 0.02f;
//--------------------------------------------------------------------------------------
// Structs
//--------------------------------------------------------------------------------------
struct VS_INPUT
{
float3 pos : POSITION;
};
struct PS_INPUT_RAYDATA_BACK
{
float4 pos : SV_Position;
float depth : TEXCOORD0;
};
struct PS_INPUT_RAYDATA_FRONT
{
float4 pos : SV_Position;
float3 posInGrid: POSITION;
float depth : TEXCOORD0;
};
struct PS_INPUT_RAYCAST
{
float4 pos : SV_Position;
float3 posInGrid: POSITION;
};
struct VS_OUTPUT_EDGE
{
// There's no textureUV11 because its weight is zero.
float4 position : SV_Position; // vertex position
float2 textureUV00 : TEXCOORD0; // kernel tap texture coords
float2 textureUV01 : TEXCOORD1; // kernel tap texture coords
float2 textureUV02 : TEXCOORD2; // kernel tap texture coords
float2 textureUV10 : TEXCOORD3; // kernel tap texture coords
float2 textureUV12 : TEXCOORD4; // kernel tap texture coords
float2 textureUV20 : TEXCOORD5; // kernel tap texture coords
float2 textureUV21 : TEXCOORD6; // kernel tap texture coords
float2 textureUV22 : TEXCOORD7; // kernel tap texture coords
};
//--------------------------------------------------------------------------------------
// Functions
//--------------------------------------------------------------------------------------
float EdgeDetectScalar(float sx, float sy, float threshold)
{
float dist = (sx*sx+sy*sy);
float e = (dist & gt; threshold*ZFar)? 1: 0;
return e;
}
/*
// We can select either back=to-front or front-to-back raycasting and blending.
// front-to-back may be slightly more expensive, but if the smoke is dense it allows
// early-out when the opacity gets saturated (close to 1.0), making it a bit cheaper
//
// Define BACK_TO_FRONT to use back-to-front raycasting
//#define BACK_TO_FRONT 1
void DoSample(float weight, float3 O, inout float4 color )
{
// This value can be tuned to produce denser or thinner looking smoke
// Alternatively a transfer function could be used
#define OPACITY_MODULATOR 0.1
float3 texcoords;
float4 sample;
float t;
texcoords = float3( O.x, 1 - O.y, O.z) ;
// sample = weight * colorTex.SampleLevel(samLinearClamp, texcoords, 0);
// sample = weight * abs(SampleTricubic(colorTex, texcoords));
// sample = weight * abs(SampleTrilinear(colorTex, texcoords));
sample = weight * abs(Sample(colorTex, texcoords));
sample.a = (sample.r) * OPACITY_MODULATOR;
#ifdef BACK_TO_FRONT // back-to-front blending
color.rgb = (1 - sample.a) * color.r + sample.a * sample.r;
color.a = (1 - sample.a) * color.a + sample.a;
#else // front-to-back blending
t = sample.a * (1.0-color.a);
color.rgb += t * sample.r;
color.a += t;
#endif
}
float4 Raycast( PS_INPUT_RAYCAST input )
{
float4 color = 0;
float4 rayData = rayDataTex.Sample(samLinearClamp, float2(input.pos.x/RTWidth,input.pos.y/RTHeight));
// Don't raycast if the starting position is negative
// (see use of OCCLUDED_PIXEL_RAYVALUE in PS_RAYDATA_FRONT)
if(rayData.x & lt; 0)
return color;
// If the front face of the box was clipped here by the near plane of the camera
// (see use of NEARCLIPPED_PIXEL_RAYPOS in PS_RAYDATA_BACK)
if(rayData.y & lt; 0)
{
// Initialize the position of the fragment and adjust the depth
rayData.xyz = input.posInGrid;
rayData.w = rayData.w - ZNear;
// return float4 (1,0,0,saturate(rayData.w/5));
}
float3 rayOrigin = rayData.xyz;
float Offset = jitterTex.Sample( samRepeat, input.pos.xy / 256.0 ).r;
float rayLength = rayData.w;
// Sample twice per voxel
float fSamples = ( rayLength / gridScaleFactor * maxGridDim ) * 2.0;
int nSamples = floor(fSamples);
float3 stepVec = normalize( (rayOrigin - eyeOnGrid) * gridDim ) * recGridDim * 0.5;
float3 O = rayOrigin + stepVec*Offset;
#ifdef BACK_TO_FRONT
// In back-to-front blending we start raycasting from the surface point and step towards the eye
O += fSamples * stepVec;
stepVec = -stepVec;
#endif
for( int i=0; i & lt; nSamples ; i++ )
{
DoSample(1, O, color);
O += stepVec;
#ifndef BACK_TO_FRONT
// If doing front-to-back blending we can do early exit when opacity saturates
if( color.a & gt; 0.99 )
break;
#endif
}
// The last sample is weighted by the fractional part of the ray length in voxel
// space (fSamples), thus avoiding banding artifacts when the smoke is blended against the scene
if( i == nSamples )
{
DoSample(frac(fSamples), O, color);
}
return color;
}
*/
//#define RENDER_FIRE
void DoSample(float weight, float3 O, inout float4 color )
{
// This value can be tuned to produce denser or thinner looking smoke
// Alternatively a transfer function could be used
#define OPACITY_MODULATOR 0.1
float3 texcoords;
texcoords = float3( O.x, 1 - O.y, O.z) ;
#ifndef RENDER_FIRE
//render smoke with front to back blending
float t;
float4 sample = weight * abs(Sample(colorTex, texcoords));
sample.a = (sample.r) * 0.1;
t = sample.a * (1.0-color.a);
color.rgb += t * sample.r;
color.a += t;
#else // RENDER_FIRE
//render fire and smoke with back to front blending
//dont render the area below where the fire originates
// if(O.z & lt; OBSTACLE_MAX_HEIGHT/gridDim.z)
// return;
//this is the threshold at which we decide whether to render fire or smoke
float threshold = 1.4;
float maxValue = 3;
float s = colorTex.SampleLevel(samLinearClamp, texcoords, 0).x;
s = clamp(s,0,maxValue);
if(s & gt; threshold)
{
//render fire
float lookUpVal = ( (s-threshold)/(maxValue-threshold) );
lookUpVal = 1.0 - pow(lookUpVal,RednessFactor);
lookUpVal = clamp(lookUpVal,0,1);
float3 interpColor = fireTransferFunction.SampleLevel(samLinearClamp,float2(lookUpVal,0),0);
float mult = (s-threshold);
color += float4(weight*interpColor.rgb,weight*mult*mult*fireAlphaMultiplier);
}
else
{
//render smoke
float4 sample = weight*s;
sample.a = sample.r*0.1*smokeAlphaMultiplier;
float3 smokeColor = float3(0.9,0.35,0.055);
color.rgb = (1 - sample.a) * color.rgb + sample.a * sample.rrr * smokeColor * smokeColorMultiplier * 5.0;
color.a = (1 - sample.a) * color.a + sample.a;
}
#endif // RENDER_FIRE
}
float4 Raycast( PS_INPUT_RAYCAST input )
{
float4 color = 0;
float4 rayData = rayDataTex.Sample(samLinearClamp, float2(input.pos.x/RTWidth,input.pos.y/RTHeight));
// Don't raycast if the starting position is negative
// (see use of OCCLUDED_PIXEL_RAYVALUE in PS_RAYDATA_FRONT)
if(rayData.x & lt; 0)
return color;
// If the front face of the box was clipped here by the near plane of the camera
// (see use of NEARCLIPPED_PIXEL_RAYPOS in PS_RAYDATA_BACK)
if(rayData.y & lt; 0)
{
// Initialize the position of the fragment and adjust the depth
rayData.xyz = input.posInGrid;
rayData.w = rayData.w - ZNear;
// return float4 (1,0,0,saturate(rayData.w/5));
}
float3 rayOrigin = rayData.xyz;
float Offset = jitterTex.Sample( samRepeat, input.pos.xy / 256.0 ).r;
float rayLength = rayData.w;
// Sample twice per voxel
float fSamples = ( rayLength / gridScaleFactor * maxGridDim ) * 2.0;
int nSamples = floor(fSamples);
float3 stepVec = normalize( (rayOrigin - eyeOnGrid) * gridDim ) * recGridDim * 0.5;
float3 O = rayOrigin + stepVec*Offset;
#ifdef RENDER_FIRE
// In back-to-front blending we start raycasting from the surface point and step towards the eye
O += fSamples * stepVec;
stepVec = -stepVec;
#endif // RENDER_FIRE
for( int i=0; i & lt; nSamples ; i++ )
{
DoSample(1, O, color);
O += stepVec;
#ifndef RENDER_FIRE
// If doing front-to-back blending we can do early exit when opacity saturates
if( color.a & gt; 0.99 )
break;
#endif // RENDER_FIRE
}
// The last sample is weighted by the fractional part of the ray length in voxel
// space (fSamples), thus avoiding banding artifacts when the smoke is blended against the scene
if( i == nSamples )
{
DoSample(frac(fSamples), O, color);
}
return color;
}
-renderquality 2 -shadowdensity 0 -texturequality 2 -detailquality -noprecache -nomemrestrict -norestrictions -availablevidmem 3 -detailquality 30
#ifndef LMODEL_H
#define LMODEL_H
#include " common.h "
/////////////////////////////////////KM-Software ReMod/////////////////////////////////////////////////////
// Lighting formulas //
float4 plight_infinity( float m, float3 pnt, float3 normal, float3 light_direction )
{
float3 N = normal; // normal
float3 V = -normalize (pnt); // vector2eye
float3 L = -light_direction; // vector2light
float3 H = normalize (L+V); // float-angle-vector
// The code below calculates the Blinn-Phong reflection vector and
// raises blinn-phong to power of material plus modifier. This allows
// the reflection to be adjusted dependant on the surface.
float R = dot(N,H); //Blinn-Phong
float Reflect = pow(saturate(R), m * 0.5f ); //Modify based on " m "
return s_material.Sample( smp_material, float3( dot(L,N),Reflect, m ) ).xxxy; // sample material
}
/*
float plight_infinity2( float m, float3 pnt, float3 normal, float3 light_direction )
{
float3 N = normal; // normal
float3 V = -normalize (pnt); // vector2eye
float3 L = -light_direction; // vector2light
float3 H = normalize (L+V); // float-angle-vector
float3 R = reflect (-V,N);
float s = saturate(dot(L,R));
s = saturate(dot(H,N));
float f = saturate(dot(-V,R));
s *= f;
float4 r = tex3D (s_material, float3( dot(L,N), s, m ) ); // sample material
r.w = pow(saturate(s),4);
return r ;
}
*/
float4 plight_local( float m, float3 pnt, float3 normal, float3 light_position, float light_range_rsq, out float rsqr )
{
float3 N = normal; // normal
float3 L2P = pnt-light_position; // light2point
float3 V = -normalize (pnt); // vector2eye
float3 L = -normalize ((float3)L2P); // vector2light
float3 H = normalize (L+V); // float-angle-vector
rsqr = dot (L2P,L2P); // distance 2 light (squared)
float att = saturate (1 - rsqr*light_range_rsq); // q-linear attenuate
// float4 light = tex3D (s_material, float3( dot(L,N), dot(H,N), m ) ); // sample material
float R = dot(N,H);
float R_vector = pow(saturate(R),m * 0.5f);
float4 light = s_material.Sample( smp_material, float3( dot(L,N), R_vector, m ) ).xxxy; // sample material
return att*light;
}
// TODO: DX10: Remove path without blending
float4 blendp( float4 value, float4 tcp)
{
// #ifndef FP16_BLEND
// value += (float4)tex2Dproj (s_accumulator, tcp); // emulate blend
// #endif
return value;
}
float4 blend( float4 value, float2 tc)
{
// #ifndef FP16_BLEND
// value += (float4)tex2D (s_accumulator, tc); // emulate blend
// #endif
return value;
}
#endif
Òóò íàõîäèòñÿ âðîäå êàê RP âåðñèÿ, ñàì â íèõ óæå ïóòàþñü :)