• Вход / Регистрация
    Логин:
    Пароль:
Страница 36 из 174«123435363738173174»
Модератор форума: CTD, denni732, iFamouz 
Форум GtaMania.ru » Общение » Свободный форум » ENB Series GTA 4 (Часть V) (Ваши настройки, инструкции, вопросы и т.д.)
ENB Series GTA 4 (Часть V)
offline
 Orangebrains
Дата: Понедельник, 2013-09-02, 21:08 | Сообщение # 1
Гангстер
Сообщений: 615
ENBSeries GTA IV (Часть V). (I), (II), (III), (IV)








Прежде, чем обращаться в эту тему, советуем ознакомиться с FAQ. Вдруг там уже есть ответ на Ваш вопрос?
По всем вопросам, связанным с особенностями работы ENB на GTA: EfLC и последних версиях GTA IV (1.0.6.0/1.0.7.0), желательно обращаться в тему ENBSeries GTA EFLC / GTA IV 1.0.7.0.

Информация, обязательная к прочтению:
Все сообщения, никаким образом не касающиеся темы обсуждения ENB, будут удаляться, а авторы - наказываться без предупреждения.
Для тех, кому не понятно, что изложено выше, - формулировка слегка проще: флуд в данной теме запрещен, причем в любых его проявлениях, спасибо за внимание, надеемся на ваше благоразумие.

Максимальный размер публикуемого изображения без превью не должен превышать 300px по большей стороне.
Все скриншоты и видео прятать под спойлер!
Тэг spoiler используется именно так, как показано в п.2.7 правил сайта. Обратите внимание на кавычки и проверьте перед отправкой сообщения, так ли это оформили Вы.



 
offline
 dax1
Дата: Пятница, 2013-11-15, 23:05 | Сообщение # 526
Гангстер
Сообщений: 112
portal-2x2, ну поставь 720p, тока на весь экран не разворачивай и норм видно, он не фиксирует пропажу, когда памяти не хватает то всё равно будет фигово..
AgainstAllAutority, а толку, вот шейдер
[spoiler="3FF0B67A.txt"]//
// Generated by Microsoft ® HLSL Shader Compiler 9.23.949.2378
//
// Parameters:
//
// sampler2D BumpSampler;
// sampler2D SpecSampler;
// sampler2D StippleTexture;
// sampler2D TextureSampler;
// float bumpiness;
// float4 globalScalars;
// float3 specMapIntMask;
// float specularColorFactor;
// float specularFactor;
// float4 stencil;
//
//
// Registers:
//
// Name Reg Size
// ------------------- ----- ----
// globalScalars c39 1
// stencil c52 1
// specularFactor c66 1
// specularColorFactor c72 1
// specMapIntMask c73 1
// bumpiness c74 1
// TextureSampler s0 1
// BumpSampler s1 1
// SpecSampler s2 1
// StippleTexture s10 1
//

ps_3_0
def c0, -1, -0, 1, 0
def c1, -0.5, 9.99999975e-006, 0.5, 0.001953125
def c2, 3.99600005, 4, 0.125, 0.25
def c220, 0, 0, 0, 0 // 74
def c221, 0, 0, 0, 0 //73

dcl_texcoord v0.xy
dcl_texcoord1 v1.xyz
dcl_texcoord4 v2.xyz
dcl_texcoord5 v3.xyz
dcl_color v4.xw
dcl vPos.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s10
texld r0, v0, s0
mul r0.w, r0.w, v4.w
mul r0.w, r0.w, c39.x
mov_sat r1.x, r0.w
mul r1.x, r1.x, c2.x
frc r1.y, r1.x
mul r1.z, r1.y, c2.y
frc r1.w, r1.z
add r2.xy, r1.zxzw, -r1.wyzw
mul r1.xy, c2.z, vPos
frc r1.xy, r1_abs
cmp r1.xy, vPos, r1, -r1
mul r1.xy, r1, c2.w
mad r1.xy, r2, c2.w, r1
texld r1, r1, s10
cmp r1, -r1.y, c0.x, c0.y
texkill r1
texld r1, v0, s1
add r1.z, -r1.w, c0.z
add r1.z, -r1.x, r1.z
cmp r1.z, r1.z, c0.w, c0.z
lrp r2.xy, r1.z, r1, r1.wyzw
add r1.xy, r2, c1.x
mul r1.xy, r1, c221.x
dp2add r1.z, r2, -r2, c0.z
rsq r1.z, r1.z
rcp r1.z, r1.z
mul r2.xyz, r1.x, v2
mad r1.xzw, v1.xyyz, r1.z, r2.xyyz
mad r1.xyz, r1.y, v3, r1.xzww
add r1.xyz, r1, c1.y
dp3 r1.w, r1, r1
rsq r1.w, r1.w
texld r2, v0, s2
mul r2.w, r2.w, c66.x
dp3 r2.x, r2, c220
mul r2.x, r2.x, c72.x
mad r1.xyz, r1, r1.w, c0.z
mul oC1.xyz, r1, c1.z
mul oC2.x, r2.x, c1.z
mul r1.x, r2.w, c1.w
rsq r1.x, r1.x
rcp oC2.y, r1.x
mov oC0, r0
mov oC1.w, r0.w
mov oC2.z, v4.x
mov oC2.w, r0.w
mov r0.zw, c0
mul oC3, r0.zwww, c52.x

// approximately 50 instruction slots used (4 texture, 46 arithmetic)

[/spoiler]
если ставить на 1.0.4.0 то не знаю, совпадёт ли контрольная сумма.

Добавлено (2013-11-15, 23:05)
---------------------------------------------
заменил шейдер который рисует окружение в дали, на тот что рисует окружение вблизи от гг, естественно качество объектов в дали улучшилось, я его малость под редактировал, а то всё в дали было бы белое.



Я счастлив по умолчанию! Пожалуйста, не лезьте в настройки.
 
offline
 pit_bull
Дата: Пятница, 2013-11-15, 23:11 | Сообщение # 527
Гангстер
Сообщений: 51
Привет. Блин,ребята помогите пожалуйста с дофом, надо с одного енбэффекта перетащить доф в другой а то у меня не как не получается это сделать.
[spoiler="с этого эфекта"]//Poorman's Enhancer 82R enbeffect file by SuperAria18
Код

//Post Processing Method

#define POSTPROCESS_V1

//General Image Setting

float    EBrightnessV1=10.0;
float    Saturation=0.5;
float    Exposure=0.4;
float    Bloom1=0.15;
float    Bloom2=0.4;
float Bloom3=0.0025;
float    Desaturate=0.0;
float    Darkening=1.2;
float    Diffcoloramount=1.0;//Do not touch
float BloomDistortionAmount=0.2;
float  DirtAmount=0.5;

//Bloom Color Setting

float R=1.125;
float G=1.0;
float B=1.0;

//Depth of Field Setting - gp65cj04 2012

#define DEPTH_OF_FIELD;
//#define SSAA_ENABLE; // enable it when ForceAntialiasing=true

#define DepthOfFieldQuality 3.0 // 1.0=LQ(Default) 2.0=MQ 3.0=HQ 0.0=Off

float    NearBlurDepth=-50.0;//Near Blur Radius
float    FocalPlaneDepth=2.0;
float    FarBlurDepth=200.0;//Blur Radius
float    MaxBlurAmount=0.7;

///////////////////////////////////////>--------------------------------------------------------:]
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1

//quad
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};

//int4    _i0 : register(i0);

/*
float4    _c0 : register(c0);
float4    _c1 : register(c1);
float4    _c2 : register(c2);
float4    _c3 : register(c3);
float4    _c4 : register(c4);
float4    _c5 : register(c5);
float4    _c6 : register(c6);
*/
float4    _c44 : register(c44);
float4    _c66 : register(c66);
float4    _c72 : register(c72);
float4    _c73 : register(c73);
float4    _c74 : register(c74);
float4    _c75 : register(c75);
float4    _c76 : register(c76);
float4    _c77 : register(c77);
float4    _c78 : register(c78);
float4    _c79 : register(c79);
float4    _c80 : register(c80);
float4    _c81 : register(c81);
float4    _c82 : register(c82);
float4    _c83 : register(c83);
float4    _c84 : register(c84);
float4    _c85 : register(c85);

texture2D texs0 : register(s0);
texture2D texs1 : register(s1);
texture2D texs2 : register(s2);
texture2D texs3 : register(s3);
texture2D texs4 : register(s4);
texture2D texs5 : register(s5);
texture2D texs6 : register(s6);
texture2D texs7 : register(s7);
texture2D texs13 : register(s13);//palette
texture2D texs15 : register(s15);
//sampler2D s0=sampler_state { Texture=<texs0>; };
//sampler2D s1=sampler_state { Texture=<texs1>; };
sampler2D s2=sampler_state { Texture=<texs2>; };
//sampler2D s3=sampler_state { Texture=<texs3>; };
sampler2D s4=sampler_state { Texture=<texs4>; };
sampler2D s5=sampler_state { Texture=<texs5>; };
sampler2D s6=sampler_state { Texture=<texs6>; };
sampler2D s7=sampler_state { Texture=<texs7>; };
//sampler2D s13=sampler_state { Texture=<texs13>; };
sampler2D s15=sampler_state { Texture=<texs15>; };

//next samplers states fixing problems on ATI cards
sampler2D s0 = sampler_state
{
Texture = <texs0>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s13 = sampler_state
{
Texture = <texs13>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
float4 texDistorted(sampler2D tex, float2 uv, float2 offset)
{

float4 color=0;
float3    distortion=float3(-0.01, 0.0, 0.01);
color.x=tex2D(tex, uv.xy + offset.xy * distortion.x).x;
color.y=tex2D(tex, uv.xy + offset.xy * distortion.y).y;
color.z=tex2D(tex, uv.xy + offset.xy * distortion.z).z;
color.w=1.0;

return color;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
{
float4 _oC0=0.0; //output

float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
float4 _c1=float4(0.25, 1, 256, 0);
float4 _c2=float4(0, 2, 4, 8);
float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
float4 _c5=float4(2, -1, 0.125, 0);
float4 _c6=float4(256, 2, 4, 8);
//mine
float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7

float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;

float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r1=tex2D(s2, _v0.xy); //HDRSampler
r2=tex2D(s3, _v0.xy); //BloomSampler

//*************************

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r0.w=abs(_c79.w);

float    depth=r0.z * r0.x - _c78.w; //dofDist.w
depth+=_c78.y * -0.5; //dofDist.y

//***************
#ifdef DEPTH_OF_FIELD

depth=max(depth, 0); //fix zoom bug

float4    vDofParams=float4(NearBlurDepth, FocalPlaneDepth, FarBlurDepth, MaxBlurAmount); //near blur depth, focal plane depth, far blur depth, blurriness cut off constant
float    dist;

if(depth < vDofParams.y)
dist=(depth - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
dist=(depth - vDofParams.y)/(vDofParams.z - vDofParams.y);
dist=clamp(dist, 0, vDofParams.w);
}

dist=dist * 0.5 + 0.5;

float2    pixelSizeHigh;
float2    pixelSizeLow;

#ifdef SSAA_ENABLE
pixelSizeHigh.xy=2.0 / _c44.xy;
#else
pixelSizeHigh.xy=1.0 / _c44.xy;
#endif

pixelSizeLow.xy=pixelSizeHigh.xy;

float2    vMaxCoC=float2(5.0, 10.0);

float    radiusScale=0.45;

float    centerDepth=dist;

float    discRadius=abs(centerDepth * vMaxCoC.y - vMaxCoC.x);
float    discRadiusLow=discRadius * radiusScale;

r1.w=1.0;

int sampleCycle=0;
int sampleCycleCounter=0;
int sampleCounterInCycle=0;

int    dofTaps=DepthOfFieldQuality * (DepthOfFieldQuality + 1) * 4;

for(int i=0; i < dofTaps; i++)
{
if(sampleCounterInCycle % sampleCycle == 0)
{
sampleCounterInCycle=0;
sampleCycle+=8;
sampleCycleCounter++;
}
sampleCounterInCycle++;

float    sampleAngle=6.2831853 * sampleCounterInCycle / sampleCycle;
float2    sampleOffset;
sincos(sampleAngle, sampleOffset.y, sampleOffset.x);
sampleOffset*=sampleCycleCounter;
float2 coordLow=_v0.xy + (pixelSizeLow.xy * sampleOffset.xy * discRadiusLow);
float2 coordHigh=_v0.xy + (pixelSizeHigh.xy * sampleOffset.xy * discRadius);

float4    tapLow=texDistorted(s2, coordLow.xy, 0.05);
//float4    tapLow=tex2D(s2, coordLow.xy);
float4    tapHigh=tex2D(s2, coordHigh.xy);

float4    tdepth=tex2D(s1, coordHigh.xy); //GBufferTextureSampler3
tdepth.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
tdepth.y=1.0 / tdepth.y;
tdepth.z=tdepth.y * _c77.y; //dofProj.y
tdepth.z=tdepth.z * -_c77.x; //dofProj.x
tdepth.x=_c77.y * -tdepth.y + tdepth.x;
tdepth.x=1.0 / tdepth.x;

tdepth.w=tdepth.z * tdepth.x - _c78.w; //dofDist.w
tdepth.w+=_c78.y * -0.5; //dofDist.y

tdepth.w=max(tdepth.w, 0); //fix zoom bug

if(tdepth.w < vDofParams.y)
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);
tapHigh.w=clamp(tapHigh.w, 0, vDofParams.w);
}

tapHigh.w=tapHigh.w * 0.5 + 0.5;
tapLow.w=tapHigh.w;

float tapBlur=abs(tapHigh.w * 2.0 - 1.0);
float4 tap=lerp(tapHigh, tapLow, tapBlur);

tap.w=(tap.w >= centerDepth) ? 1.0 : abs(tap.w * 2.0 - 1.0);

r1.xyz+=tap.xyz * tap.w;
r1.w+=tap.w;

}

r1.xyz /= r1.w;

#endif

//***************

r3=r1;
r0.x=15.0;

r4.x=_v0.y * _c5.x + _c5.y;
r4.y=_v0.x * _c5.x + _c5.y;
r4.z=_v0.y * _c5.x + _c5.y;

r0.z=r4.y * _c77.z; //dofProj.z
r0.z=r0.y * r0.z;
r1.w=-r4.x * _c77.w; //dofProj.w
r1.w=r0.y * r1.w;
r5.xyz=r1.w * _c73.xyz; //motionBlurMatrix.2
r5.xyz+=r0.z * _c72.xyz; //motionBlurMatrix.1
r5.xyz+=-r0.y * _c74.xyz; //motionBlurMatrix.3
r5.xyz+=_c75.xyz; //motionBlurMatrix.4
r0.y=-r5.z * _c77.z; //dofProj.z
r0.y=1.0/r0.y;
r6.x=r5.x * r0.y;
r0.y=r5.z * _c77.w; //dofProj.w
r0.y=1.0/r0.y;
r6.y=r5.y * r0.y;
//r0.yz=-r4 + r6.xxyw;
r0.yz=-r4.yz + r6.xy;

//r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x
r0.y=r0.y * _c80.x;
r0.z=r0.z * _c80.x;
r4.xy=r0.yz * _c5.z; //0.125
r5=tex2D(s6, _v0.xy); //StencilCopySampler
r1.w=r5.x - _c85.x; //PLAYER_MASK.x
r4.zw=r3.xy * _c2.w; //8.0
r4.zw=_v0.xy * _c3.xy + r4.zw; //58.1640015, 47.1300011
r5=tex2D(s5, r4.zw); //JitterSampler
r4.zw=r4.xy * (r5.x - 4) + _v0.xy; //0.082 fixed
r5.xyz=r3.xyz;
r2.w=_c1.y; //1.0
r3.w=_c1.y; //1.0

//motion blur
for (int iii=0; iii<7; iii++)
{
r6.x=r4.x * r3.w + r4.z; //v2
r6.y=r4.y * r3.w + r4.w; //v2
r7=tex2D(s6, r6.xy);
r5.w=r7.x - _c85.x;
if (r5.w<-0.3)
{
r5.w=_c1.y; //1.0
} else r5.w=_c1.w; //0.0
r6=tex2D(s2, r6.xy);
r5.xyz=r6.xyz * r5.w + r5.xyz;
r2.w=r2.w + r5.w;
r3.w=r3.w + _c1.y; //1.0
}

r2.w = 1.0 / r2.w;
//r0.yz = r0 * _c44.xxyw; //globalScreenSize
r0.y = r0.y * _c44.x; //globalScreenSize
r0.z = r0.z * _c44.y; //globalScreenSize
r0.y = dot(r0.yz, r0.yz) + _c0.x; //dp2
//r0.y = sqrt(r0.y);
//r0.y = 1.0 / r0.y;
r0.y = pow(r0.y, _c4.w); //0.5
r0.y = r0.y * _c4.w; //0.5
r0.x = r0.x + _c1.y; //1.0
r0.x = 1.0 / r0.x;
r0.x = saturate(r0.y * r0.x);
r4.xyz = r5 * r2.w - r3;
r0.xyz = r0.x * r4 + r3;
//_oC0.xyz = 0.5*r0.xyz;
if (-r1.w<0.0) r0.xyz = r3.xyz;
if (-r0.w<0.0) r0.xyz = r1.xyz;

//for future use
r11=r0;

r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
r0.w=1.0/r1.x;
r0.w=r0.w * _c81.y; //ToneMapParams.y
r1.x=1/r0.w;
r1.x=r1.x * _c81.x; //ToneMapParams.x
r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
r2.xyz=max(r1, _c0.x); //0.0
r1.xyz=r2 * _c81.z; //ToneMapParams.z
r1.xyz=r1 * _c1.x; //0.25
r0.xyz=r0 * _c66.x + r1; //Exposure.x
r1.xyz=r0.w * r0;
r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721
r0.xyz=r0 * r0.w - r1.x;
r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x
r0.w=r1.x * _c84.w; //ColorShift.w
r1.yzw=r0.w * _c84.xxyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
r2.x=saturate(r0.w);
r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
r0.xyz=r2.x * r0.xyz + r1.yzww;

//coloring (green, brown, ...)
r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect

//keeps colors, changes luma
r1.x=saturate(r1.x);//luma
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r2.x=pow(r1.x, r0.w);

_oC0.xyz=r0.xyz * r2.x; //orig
_oC0.w=_c1.y; //1.0

//
#ifdef POSTPROCESS_V1

r5=tex2D(s4, _c0.x);//adaptation luminance
//r0=tex2D(s2, _v0.xy);

float4 color;
color=r11;

float    luma=10*color.r + 10*color.g + 10*color.b;
float skyMask=tex2D(s0, _v0.xy).w;
float4 colorFog=_c84 * 1.0;

colorFog.w=dot(colorFog.xyz, 0.3333);

if(colorFog.w > 0 && (skyMask > 0 || depth < 1500))
{
depth=(depth - 100.0) / (5000.0 - 100.0);
r0.xyz=lerp(color.xyz, colorFog.xyz, clamp(depth, 0.0, 0.50));
}

//increase color
float cgray=dot(color.xyz, 0.333);//luma
float3 poweredcolor=pow(color.xyz, Saturation);
float newgray=dot(poweredcolor.xyz, 0.333);
r0.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);

//dirty lens code by john chapman_gp65_ice
float4 dirtPaletteTex=tex2D(s13, _v0.xy); //use the palette texture for the lens
float4 uvsrc=0.0; //set the UVs
float3 lensDirt=dirtPaletteTex.xyz;
float4 colorbloom=r5.w*texDistorted(s3, _v0.xy, BloomDistortionAmount);//0.5

//float4 colorbloom=r5.w*texDistorted(s3, _v0.xy, BloomDistortionAmount);//0.5
colorbloom.r*=R;
colorbloom.g*=G;
colorbloom.b*=B;
colorbloom.xyz+=colorbloom.xyz*lensDirt.xyz*DirtAmount;
r0=colorbloom* Bloom1 + r0;

//GP65's adaptation code
r5.w=r5.x;
r5.w=1.0/r5.w;
r0.xyz=r0.xyz * r5.w;
r3.xy=_c10.xwxw;
r3.xy=r3.xy * r5.w;
color.xyz=color.xyz * r5.w;
r0=r0 * _c7.y; //pre multiply
r1=r0 * _c7.z; //e multiply
r1=r1 + _c7.w;
//r0=Bloom2*colorbloom * r3.x + r0;
//r0=Bloom3 * colorbloom * r5.w + r0;

r10=dot(r0.xyz, _c12.xyz);
r9.y=r10.x * 10.0;
r9.x=r10.x * EBrightnessV1;//c199.x;
r10.x=1.0/r10.x;
r10=r10 * r9.x;
r0=r0 * r10.x;
r0=r0 * _c7.y;

r1.xyz=2.0/r1.xyz;
r0=r0 * r1;

color=color / r1;

//power from intensity
r0=Bloom2*colorbloom * r3.x + r0;
r0=Bloom3 * colorbloom * r5.w + r0;
float    colorgray=dot(r0.xyz, 0.333);//luma//max(color.x, max(color.y, color.z));//
float3    middlecolor=(r0.xyz+0.0001)/(colorgray+0.000001);
middlecolor.xyz=lerp(middlecolor.xyz, dot(middlecolor.xyz, 0.333), Desaturate);//0.6 //color
r0.xyz=middlecolor.xyz*pow(colorgray, Darkening);//0.4*tempF2.z //darken

float middlegray=dot(r0.xyz, 0.333);
float3 diffcolor=r0.rgb-middlegray;
r0.rgb+=diffcolor*Diffcoloramount;

r0.xyz=saturate(r0.xyz);
r0.xyz=r0.xyz*0.6 + sin(r0.xyz*1.57079)*Exposure;
r0.xyz=(_v0.y > 0.05 && _v0.y < 0.95) ? r0.xyz : 0.0;

#endif

_oC0.xyz=r0.xyz;

//_oC0.w=1.0;
return _oC0;
}

//mine temporary post process
technique Shader_C215BE6E
{
pass p0
{
PixelShader = compile ps_3_0 PS_C215BE6E();
}
}

//original shader of post processing
technique Shader_ORIGINALPOSTPROCESS
{
pass p0
{

PixelShader=
asm
{
//
// Generated by Microsoft (r) HLSL Shader Compiler 9.23.949.2378
//
// Parameters:
//
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1
//

ps_3_0
def c0, 0, 0.212500006, 0.715399981, 0.0720999986
def c1, 0.25, 1, 256, 0
def c2, 0, 2, 4, 8
def c3, 58.1640015, 47.1300011, 0, 0
def c4, -0.5, -1.5, 1.5, 0.5
def c5, 2, -1, 0.125, 0
def c6, 256, 2, 4, 8
def c180, 0.0, 0.0, 0.0, 100.5
def c181, 1.0, 0.0, 0.0, 20.01
def c183, 800.0, 600.0, 0.0, 100.5
defi i0, 7, 0, 0, 0
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_2d s4
dcl_2d s5
dcl_2d s6
texld r0, v0, s1
add r0.y, -c77.x, c77.y
rcp r0.y, r0.y
mul r0.z, r0.y, c77.y
mul r0.z, r0.z, -c77.x
mad r0.x, c77.y, -r0.y, r0.x
rcp r0.x, r0.x
mul r0.y, r0.z, r0.x
texld r1, v0, s2
texld r2, v0, s3
abs r0.w, c79.w
mov r3, c4
mad r4.xy, c76, r3, v0
texld r4, r4, s2
mad r5.xy, c76, r3.zxzw, v0
texld r5, r5, s2
mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
texld r6, r3.xzzw, s2
mad r3.xy, c76, r3.ywzw, v0
texld r7, r3, s2
dp3 r1.w, r4, r4
rcp r1.w, r1.w
cmp r3.xyz, -r1.w, c0.x, r4
dp3 r1.w, r5, r5
rcp r1.w, r1.w
cmp r4.xyz, -r1.w, c0.x, r5
dp3 r1.w, r6, r6
rcp r1.w, r1.w
cmp r5.xyz, -r1.w, c0.x, r6
dp3 r1.w, r7, r7
rcp r1.w, r1.w
cmp r6.xyz, -r1.w, c0.x, r7
dp3 r1.w, r1, r1
rcp r1.w, r1.w
cmp r7.xyz, -r1.w, c0.x, r1
mad r0.x, r0.z, r0.x, -c78.w
mad r0.x, c78.y, -r3.w, r0.x
max r1.w, r0.x, c0.x
rcp r0.x, c78.z
mul r0.x, r1.w, r0.x
lrp r1.w, r0.x, c79.z, c79.y
min r0.x, c79.z, r1.w
dp3 r0.z, r7, c0.yzww
dp3 r8.x, r3, c0.yzww
dp3 r8.y, r4, c0.yzww
dp3 r8.z, r5, c0.yzww
dp3 r8.w, r6, c0.yzww
dp4 r1.w, r8, c1.x
add r8, r8, -r1.w
dp4 r2.w, r8, r8
add r0.z, r0.z, -r1.w
mad r0.z, r0.z, r0.z, -r2.w
mul r0.x, r0.x, r0.x
cmp r0.x, r0.z, c1.y, r0.x
texld r8, v0, s0
mov r8.yz, c1
mad r9, r8.w, -r8.z, c2
cmp r9, r9, c1.y, c1.w
mad r10, r8.w, -c6.x, c6.yzwx
cmp r10, r10, -c1.y, -c1.w
add r9, r9, r10
mul r9, r9, c4.x
dp4 r0.z, r9, c1.y
add r0.z, r0.z, c4.w
rcp r0.z, r0.z
mul r8.xzw, r3.xyyz, r9.x
mad r7.xyz, r7, c4.w, r8.xzww
mad r7.xyz, r4, r9.y, r7
mad r7.xyz, r5, r9.z, r7
mad r7.xyz, r6, r9.w, r7
mul r7.xyz, r0.z, r7
add r0.z, -r0.x, c1.y
mul r1.w, r0.x, c1.x
mul r3.xyz, r3, r1.w
mad r3.xyz, r7, r0.z, r3
mad r3.xyz, r4, r1.w, r3
mad r3.xyz, r5, r1.w, r3
mad r3.xyz, r6, r1.w, r3
mad r4.xyz, v0.yxyw, c5.x, c5.y
mul r0.z, r4.y, c77.z
mul r0.z, r0.y, r0.z
mul r1.w, -r4.x, c77.w
mul r1.w, r0.y, r1.w
mul r5.xyz, r1.w, c73
mad r5.xyz, r0.z, c72, r5
mad r5.xyz, -r0.y, c74, r5
add r5.xyz, r5, c75
mul r0.y, -r5.z, c77.z
rcp r0.y, r0.y
mul r6.x, r5.x, r0.y
mul r0.y, r5.z, c77.w
rcp r0.y, r0.y
mul r6.y, r5.y, r0.y
add r0.yz, -r4, r6.xxyw
mul r0.yz, r0, c80.x
mul r4.xy, r0.yzzw, c5.z
texld r5, v0, s6
add r1.w, r5.x, -c85.x
mul r4.zw, r3.xyxy, c2.w
mad r4.zw, v0.xyxy, c3.xyxy, r4
texld r5, r4.zwzw, s5
add r2.w, r5.x, c4.x
mad r4.zw, r4.xyxy, r2.w, v0.xyxy
mov r5.xyz, r3
mov r2.w, c1.y
mov r3.w, c1.y

rep i0
mad r6.xy, r4, r3.w, r4.zwzw
texld r7, r6, s6
add r5.w, r7.x, -c85.x
cmp r5.w, r5.w, c1.w, c1.y
texld r6, r6, s2
mad r5.xyz, r6, r5.w, r5
add r2.w, r2.w, r5.w
add r3.w, r3.w, c1.y
endrep

rcp r2.w, r2.w
mul r0.yz, r0, c183.xxyw//c44.xxyw
dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
rsq r0.y, r0.y
rcp r0.y, r0.y
mul r0.y, r0.y, c4.w
add r0.x, r0.x, c1.y
rcp r0.x, r0.x
mul_sat r0.x, r0.y, r0.x
mad r4.xyz, r5, r2.w, -r3
mad r0.xyz, r0.x, r4, r3
cmp r0.xyz, r1.w, r3, r0
cmp r0.xyz, -r0.w, r0, r1

texld r1, c0.x, s4
rcp r0.w, r1.x
mul r0.w, r0.w, c81.y
rcp r1.x, r0.w
mul r1.x, r1.x, c81.x
mad r1.xyz, r2, c66.x, -r1.x
max r2.xyz, r1, c0.x
mul r1.xyz, r2, c81.z
mul r1.xyz, r1, c1.x
mad r0.xyz, r0, c66.x, r1
mul r1.xyz, r0.w, r0
dp3 r1.x, r1, c0.yzww
mad r0.xyz, r0, r0.w, -r1.x
mad r0.xyz, c82.x, r0, r1.x
mul r0.w, r1.x, c84.w
mul r1.yzw, r0.w, c84.xxyz
mov_sat r2.x, r0.w
mad r0.xyz, c84, -r0.w, r0
mad r0.xyz, r2.x, r0, r1.yzww
mul r0.xyz, r0, c83
add r0.xyz, r0, r0
mov_sat r1.x, r1.x
add r0.w, -r8.y, c82.z
pow r2.x, r1.x, r0.w
//mul r2.x, r2.x, c181.x
mul oC0.xyz, r0, r2.x
mov oC0.w, c1.y

//texld r1, v0, s2
//mul oC0.xyz, r1, c199.z
};
}
}


[/spoiler]

[spoiler="вот в этот"]
Код

//++++++++++++++++++++++++++++++++++++++++++++
// ENBSeries effect file
// visit http://enbdev.com for updates
// Copyright 2010 (c) Boris Vorontsov
//L3EVO by gp65cj04 & lpf312
// Using decompiled shader of GTA4 game by
// Rockstar Games.
//++++++++++++++++++++++++++++++++++++++++++++

//NOTE: enable or disable these
//to disable, write // symbols before #define

//#define POSTPROCESS_V2 //overwise v1 of color processing
#define APPLYGAMECOLORCORRECTION //use contrast, brightness, saturation from game

//overall for two methods:
float    Adaptation = 1;
float    EColorSaturation = 1;
float    ColorBloom_Red = 1.1;
float    ColorBloom_Green = 1;
float    ColorBloom_Blue = 0.9;

float    EBrightnessV1 = 2.5;
float    EBloomAmountV1 = 0;
float    EBloomAmountAdditiveV1 = 1;

float    EBrightnessV2 = 0.5;
float    EBloomAmountV2 = 0.04;
float    EColoringV2 = 0.5;
float    EDarkeningV2 = 0.4;

//++++++++++++++++++++++++++++++++++++++++++
// Registers:
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1
//++++++++++++++++++++++++++++++++++++++++++

struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};

float4    _c44 : register(c44);
float4    _c66 : register(c66);
float4    _c72 : register(c72);
float4    _c73 : register(c73);
float4    _c74 : register(c74);
float4    _c75 : register(c75);
float4    _c76 : register(c76);
float4    _c77 : register(c77);
float4    _c78 : register(c78);
float4    _c79 : register(c79);
float4    _c80 : register(c80);
float4    _c81 : register(c81);
float4    _c82 : register(c82);
float4    _c83 : register(c83);
float4    _c84 : register(c84);
float4    _c85 : register(c85);

texture2D texs0 : register(s0);
texture2D texs1 : register(s1);
texture2D texs2 : register(s2);
texture2D texs3 : register(s3);
texture2D texs4 : register(s4);
texture2D texs5 : register(s5);
texture2D texs6 : register(s6);
texture2D texs7 : register(s7);
texture2D texs15 : register(s15);
sampler2D s2=sampler_state { Texture=<texs2>; };
sampler2D s4=sampler_state { Texture=<texs4>; };
sampler2D s5=sampler_state { Texture=<texs5>; };
sampler2D s6=sampler_state { Texture=<texs6>; };
sampler2D s7=sampler_state { Texture=<texs7>; };
sampler2D s15=sampler_state { Texture=<texs15>; };

//next samplers states fixing problems on ATI cards
sampler2D s0 = sampler_state
{
Texture = <texs0>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
{
float4 _oC0=0.0; //output

float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
float4 _c1=float4(0.25, 1, 256, 0);
float4 _c2=float4(0, 2, 4, 8);
float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
float4 _c5=float4(2, -1, 0.125, 0);
float4 _c6=float4(256, 2, 4, 8);
float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7
float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;
float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r1=tex2D(s2, _v0.xy); //HDRSampler
r2=tex2D(s3, _v0.xy); //BloomSampler

r0.w=abs(_c79.w);
r3=_c4; //-0.5, -1.5, 1.5, 0.5

float2    center;
float    distance;
float    focus;
float    farblur;
float    dof;

distance=r0.z * r0.x - _c78.w; //dofDist.w
distance+=_c78.y * -r3.w; //dofDist.y
distance+=140;//offset
center.x=_v0.x-0.5;
center.y=0.5-_v0.y;
focus=length(center.xy)*1.4;
focus=pow(focus,3)*2;
focus=max(focus,0.4);
farblur=clamp(distance*0.007,0.1,1.0);
if(distance*0.1>2)dof=0.9;
else dof=0.0;

//TEMP decrease bluriness for edge smoothing
float2 off_c76=_c76.xy*(farblur);

r4.xy=off_c76.xy * r3.xy + _v0.xy; //TexelSize.xy
r4=tex2D(s2, r4.xy); //HDRSampler

r5.xy=off_c76.xy * r3.zx + _v0.xy; //TexelSize.xy
r5=tex2D(s2, r5.xy); //HDRSampler

r3.xz=off_c76.xy * r3.wz + _v0.xy; //TexelSize.xy
r6=tex2D(s2, r3.xz); //HDRSampler

r3.xy=off_c76.xy * r3.yw + _v0; //TexelSize.xy
r7=tex2D(s2, r3.xy); //HDRSampler

r1.w=dot(r4.xyz, r4.xyz);
r1.w=1.0/r1.w;
if (-r1.w<0.0)
{
r3.xyz=r4.xyz;
} else r3.xyz=_c0.x;

r1.w=dot(r5.xyz, r5.xyz); //dp3
r1.w=1.0/r1.w;
if (-r1.w<0.0)
{
r4.xyz=r5.xyz;
} else r4.xyz=_c0.x;

r1.w=dot(r6.xyz, r6.xyz); //dp3
r1.w=1.0/r1.w;
if (-r1.w<0.0)
{
r5.xyz=r6.xyz;
} else r5.xyz=_c0.x;

r1.w=dot(r7.xyz, r7.xyz); //dp3
r1.w=1.0/r1.w;
if (-r1.w<0.0)
{
r6.xyz=r7.xyz;
} else r6.xyz=_c0.x;

r1.w=dot(r1.xyz, r1.xyz); //dp3
r1.w=1.0/r1.w;
if (-r1.w<0.0)
{
r7.xyz=r1.xyz;
} else r7.xyz=_c0.x;

r0.x=r0.z * r0.x - _c78.w; //dofDist.w
r0.x=_c78.y * -r3.w + r0.x; //dofDist.y
r1.w=max(r0.x, _c0.x); //0.0
r0.x=1.0/_c78.z; //dofDist.z
r0.x=r1.w * r0.x;
r1.w=lerp(_c79.y, _c79.z, r0.x);//dofBlur
r0.x=min(_c79.z, r1.w); //dofBlur.z

r0.z=dot(r7.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
r8.x=dot(r3.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
r8.y=dot(r4.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
r8.z=dot(r5.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
r8.w=dot(r6.xyz, _c0.yzw); //0.212500006, 0.715399981, 0.0720999986
r1.w=dot(r8, _c1.xxxx); //0.25

r8=r8 - r1.w;
r2.w=dot(r8, r8);
r0.z=r0.z - r1.w;
r0.z=r0.z * r0.z - r2.w;
r0.x=r0.x*r0.x;
if (r0.z<0.0)
{
r0.x=r0.x;
} else r0.x=_c1.y; //1.0

r8=tex2D(s0, _v0.xy); //GBufferTextureSampler2

r8.yz=_c1.yz; // 1.0, 256.0
r9=r8.w * -r8.z + _c2; //0, 2, 4, 8
if (r9.w<0.0) //r9<0.0
{
r9=_c1.w; //0.0
} else r9=_c1.y; //1.0
//r9 is filtered sky mask

//r10=r8.w + tempc6;//c6.yzwx; //256, 2, 4, 8
r10=r8.w * -_c6.x + _c6.yzwx; //256, 2, 4, 8

if (r10.x<0.0)
{
r10.x=-_c1.w; //0.0
} else r10.x=-_c1.y; //1.0

if (r10.y<0.0)
{
r10.y=-_c1.w; //0.0
} else r10.y=-_c1.y; //1.0

if (r10.z<0.0)
{
r10.z=-_c1.w; //0.0
} else r10.z=-_c1.y; //1.0

if (r10.w<0.0)
{
r10.w=-_c1.w; //0.0
} else r10.w=-_c1.y; //1.0

r9=r9 + r10;
r9=r9 * _c4.x; //-0.5

r0.z=dot(r9, _c1.yyyy); //1.0
r0.z=r0.z + _c4.w; //0.5
r0.z=1.0/r0.z;
r8.xzw=r3.xyz * r9.x;

r7.xyz=r7 * _c4.w + r8.xzw; //0.5
r7.xyz=r4 * r9.y + r7;
r7.xyz=r5 * r9.z + r7;
r7.xyz=r6 * r9.w + r7;
r7.xyz=r0.z * r7;
r0.z=-r0.x + _c1.y; //1.0
r1.w=r0.x * _c1.x; //0.25

r3.xyz=r3 * r1.w;
r3.xyz=r7 * r0.z + r3;
r3.xyz=r4 * r1.w + r3;
r3.xyz=r5 * r1.w + r3;
r3.xyz=r6 * r1.w + r3;

//r4.xyz=_v0.yxy * _c5.x + _c5.y; //2, -1
r4.x=_v0.y * _c5.x + _c5.y;
r4.y=_v0.x * _c5.x + _c5.y;
r4.z=_v0.y * _c5.x + _c5.y;

r0.z=r4.y * _c77.z; //dofProj.z
r0.z=r0.y * r0.z;
r1.w=-r4.x * _c77.w; //dofProj.w
r1.w=r0.y * r1.w;
r5.xyz=r1.w * _c73; //motionBlurMatrix.2
r5.xyz=r0.z * _c72 + r5; //motionBlurMatrix.1
r5.xyz=-r0.y * _c74 + r5; //motionBlurMatrix.3
r5.xyz=r5 + _c75; //motionBlurMatrix.4
r0.y=-r5.z * _c77.z; //dofProj.z
r0.y=1.0/r0.y;
r6.x=r5.x * r0.y;
r0.y=r5.z * _c77.w; //dofProj.w
r0.y=1.0/r0.y;
r6.y=r5.y * r0.y;
//r0.yz=-r4 + r6.xxyw;
r0.yz=-r4.yz + r6.xy;

//r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x
r0.y=r0.y * _c80.x;
r0.z=r0.z * _c80.x;
//r4.xy=r0.yzzw * _c5.z; //0.125
r4.x=r0.y * _c5.z;
r4.y=r0.z * _c5.z;
r5=tex2D(s6, _v0.xy); //StencilCopySampler
r1.w=r5.x + -_c85.x; //PLAYER_MASK.x
r4.zw=r3.xyxy * _c2.w; //8.0
//r4.z=r3.x * _c2.w;
//r4.w=r3.y * _c2.w;
//r4.zw=_v0.xyxy * _c3.xyxy + r4; //58.1640015, 47.1300011
r4.z=_v0.x * _c3.x + r4.z; //v2
r4.w=_v0.y * _c3.y + r4.w; //v2
r5=tex2D(s5, r4.zw); //JitterSampler
r2.w=r5.x + _c4.x; //-0.5
//r4.zw=r4.xyxy * r2.w + _v0.xyxy; //v0
r4.z=r4.x * r2.w + _v0.x; //v2
r4.w=r4.y * r2.w + _v0.y; //v2
r5.xyz=r3.xyz;
r2.w=_c1.y; //1.0
r3.w=_c1.y; //1.0

//motion blur
for (int iii=0; iii<7; iii++)
{
//    r6.xy=r4 * r3.w + r4.zwzw; //v0
r6.x=r4.x * r3.w + r4.z; //v2
r6.y=r4.y * r3.w + r4.w; //v2
r7=tex2D(s6, r6.xy);
r5.w=r7.x - _c85.x;
if (r5.w<0.0)
{
r5.w=_c1.y; //1.0
} else r5.w=_c1.w; //0.0
r6=tex2D(s2, r6.xy);
r5.xyz=r6.xyz * r5.w + r5.xyz;
r2.w=r2.w + r5.w;
r3.w=r3.w + _c1.y; //1.0
}

r2.w=1.0/r2.w;

//r0.yz=r0 * _c44.xxyw; //globalScreenSize
r0.y=r0.y * _c44.x; //globalScreenSize
r0.z=r0.z * _c44.y; //globalScreenSize

r0.y=dot(r0.yz, r0.yz)+_c0.x;//dp2

//r0.y=sqrt(r0.y);
//r0.y=1.0/r0.y;
r0.y=pow(r0.y, _c4.w); //0.5

r0.y=r0.y * _c4.w; //0.5
r0.x=r0.x + _c1.y; //1.0
r0.x=1.0/r0.x;
//r0.y is wrong
r0.x=saturate(r0.y * r0.x);
r4.xyz=r5 * r2.w - r3;
r0.xyz=r0.x * r4 + r3;

//_oC0.xyz=0.5*r0.xyz;

if (-r1.w<0.0) r0.xyz=r3.xyz;
if (-r0.w<0.0) r0.xyz=r1.xyz;

//for future use
r11=r0;

r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
r0.w=1.0/r1.x;
r0.w=r0.w * _c81.y; //ToneMapParams.y
r1.x=1.0/r0.w;
r1.x=r1.x * _c81.x; //ToneMapParams.x
r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
r2.xyz=max(r1, _c0.x); //0.0
r1.xyz=r2 * _c81.z; //ToneMapParams.z
r1.xyz=r1 * _c1.x; //0.25
r0.xyz=r0 * _c66.x + r1; //Exposure.x
r1.xyz=r0.w * r0;
r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721
r0.xyz=r0 * r0.w - r1.x;
r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x
r0.w=r1.x * _c84.w; //ColorShift.w
r1.yzw=r0.w * _c84.xxyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
r2.x=saturate(r0.w);
r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
r0.xyz=r2.x * r0.xyz + r1.yzww;

//coloring (green, brown, ...)
r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect

//keeps colors, changes luma
r1.x=saturate(r1.x);//luma
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r2.x=pow(r1.x, r0.w);

_oC0.xyz=r0.xyz * r2.x; //orig
_oC0.w=_c1.y; //1.0

r5=tex2D(s4, _c0.x);//adaptation luminance
//r5=1.0;

float4 color;
//r0=tex2D(s2, _v0.xy);//hdr color
color=r11; //FROM ORIGINAL CODE AFTER BLUR
float    luma=0.27*color.r + 0.67*color.g + 0.06*color.b;

//adaptation
r5.w=r5.x;
r5.w=Adaptation/r5.w;
color.xyz=color.xyz * r5.w;
r3.xy=_c10.xwxw;
r3.xy=r3.xy * r5.w;

//increase color
float cgray=dot(color.xyz, 0.333);//luma
float adaptcolor=smoothstep(0.35, 1.0, 1.0 - r5.x)*0.1;
float adaptluma=smoothstep(0.35, 1.0, 1.0 - r5.x)*0;
float adaptcontrast=(1-smoothstep(0.35, 1.0, 1.0 - r5.x))*0;

float3 poweredcolor=pow(color.xyz, EColorSaturation + adaptcolor);
float newgray=dot(poweredcolor.xyz, 0.333);
color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);

float4 colorbloom=tex2D(s3, _v0.xy); //bloom

//HERE 0.15 is bloom factor 1, soft bloom
color=colorbloom * EBloomAmountV1 + color;
colorbloom.r*=ColorBloom_Red;
colorbloom.g*=ColorBloom_Green;
colorbloom.b*=ColorBloom_Blue;

//power from intensity

r10=dot(color.xyz, _c12.xyz); //luminance

r9.x=r10.x * EBrightnessV1;//c199.x;
r10.x=1.0/r10.x;
r10=r10 * r9.x;
color=color * r10.x;
color=color * _c7.y; //pre multiply
r1=color * _c7.z; //e multiply
r1=r1 + _c7.w;

color=color / (r1 + _c7.w); //+1.0

//HERE 0.8 is bloom for additive mix
color=EBloomAmountAdditiveV1*colorbloom * r3.x + color;

//luma=saturate(dot(color.xyz, _c12.xyz));
//color.xyz*=pow(luma, -adaptluma);

//color.xyz=(_v0.x < 0.95) ? color.xyz : adaptcolor;

#ifdef APPLYGAMECOLORCORRECTION
//apply original corrections (((
r0.w=1.0;//_c81.y/r5.x;//r5 is AdapLumSampler

luma=0.27*color.r + 0.67*color.g + 0.06*color.b;
color.xyz=color.xyz * r0.w - luma;
color.xyz=_c82.x * color.xyz + luma; //deSatContrastGamma.x
r0.w=luma * _c84.w; //ColorShift.w
r1.xyz=r0.w * _c84.xyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
color.xyz=color.xyz - _c84.xyz * r0.w; //ColorShift
color.xyz=saturate(r0.w) * color.xyz + r1.xyz;

//coloring (green, brown, ...)
color.xyz=2.0 * color.xyz * _c83.xyz; //ColorCorrect

//desaturating
luma=saturate(luma);
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r0.w=lerp(r0.w, -adaptluma, 0.5);
color.xyz=color.xyz * pow(luma, r0.w);

r3.r*=1.1;
r3.g*=1;
r3.b*=0.9;
#endif //APPLYGAMECOLORCORRECTION

float4 decontrastcolor=2.0*color - color*color*(3.0 - 2.0*color);
color.xyz=lerp(color.xyz, decontrastcolor.xyz, adaptcontrast);

_oC0.xyz=color.xyz;

//_oC0.w=1.0;
return _oC0;
}

//mine temporary post process
technique Shader_C215BE6E
{
pass p0
{
PixelShader = compile ps_3_0 PS_C215BE6E();
}
}

//original shader of post processing
technique Shader_ORIGINALPOSTPROCESS
{
pass p0
{

PixelShader=
asm
{

ps_3_0
def c0, 0, 0.212500006, 0.715399981, 0.0720999986
def c1, 0.25, 1, 256, 0
def c2, 0, 2, 4, 8
def c3, 58.1640015, 47.1300011, 0, 0
def c4, -0.5, -1.5, 1.5, 0.5
def c5, 2, -1, 0.125, 0
def c6, 256, 2, 4, 8
def c180, 0.0, 0.0, 0.0, 100.5
def c181, 1.0, 0.0, 0.0, 20.01
def c183, 800.0, 600.0, 0.0, 100.5
defi i0, 7, 0, 0, 0
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_2d s4
dcl_2d s5
dcl_2d s6
texld r0, v0, s1
add r0.y, -c77.x, c77.y
rcp r0.y, r0.y
mul r0.z, r0.y, c77.y
mul r0.z, r0.z, -c77.x
mad r0.x, c77.y, -r0.y, r0.x
rcp r0.x, r0.x
mul r0.y, r0.z, r0.x
texld r1, v0, s2
texld r2, v0, s3
abs r0.w, c79.w
mov r3, c4
mad r4.xy, c76, r3, v0
texld r4, r4, s2
mad r5.xy, c76, r3.zxzw, v0
texld r5, r5, s2
mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
texld r6, r3.xzzw, s2
mad r3.xy, c76, r3.ywzw, v0
texld r7, r3, s2
dp3 r1.w, r4, r4
rcp r1.w, r1.w
cmp r3.xyz, -r1.w, c0.x, r4
dp3 r1.w, r5, r5
rcp r1.w, r1.w
cmp r4.xyz, -r1.w, c0.x, r5
dp3 r1.w, r6, r6
rcp r1.w, r1.w
cmp r5.xyz, -r1.w, c0.x, r6
dp3 r1.w, r7, r7
rcp r1.w, r1.w
cmp r6.xyz, -r1.w, c0.x, r7
dp3 r1.w, r1, r1
rcp r1.w, r1.w
cmp r7.xyz, -r1.w, c0.x, r1
mad r0.x, r0.z, r0.x, -c78.w
mad r0.x, c78.y, -r3.w, r0.x
max r1.w, r0.x, c0.x
rcp r0.x, c78.z
mul r0.x, r1.w, r0.x
lrp r1.w, r0.x, c79.z, c79.y
min r0.x, c79.z, r1.w
dp3 r0.z, r7, c0.yzww
dp3 r8.x, r3, c0.yzww
dp3 r8.y, r4, c0.yzww
dp3 r8.z, r5, c0.yzww
dp3 r8.w, r6, c0.yzww
dp4 r1.w, r8, c1.x
add r8, r8, -r1.w
dp4 r2.w, r8, r8
add r0.z, r0.z, -r1.w
mad r0.z, r0.z, r0.z, -r2.w
mul r0.x, r0.x, r0.x
cmp r0.x, r0.z, c1.y, r0.x
texld r8, v0, s0
mov r8.yz, c1
mad r9, r8.w, -r8.z, c2
cmp r9, r9, c1.y, c1.w
mad r10, r8.w, -c6.x, c6.yzwx
cmp r10, r10, -c1.y, -c1.w
add r9, r9, r10
mul r9, r9, c4.x
dp4 r0.z, r9, c1.y
add r0.z, r0.z, c4.w
rcp r0.z, r0.z
mul r8.xzw, r3.xyyz, r9.x
mad r7.xyz, r7, c4.w, r8.xzww
mad r7.xyz, r4, r9.y, r7
mad r7.xyz, r5, r9.z, r7
mad r7.xyz, r6, r9.w, r7
mul r7.xyz, r0.z, r7
add r0.z, -r0.x, c1.y
mul r1.w, r0.x, c1.x
mul r3.xyz, r3, r1.w
mad r3.xyz, r7, r0.z, r3
mad r3.xyz, r4, r1.w, r3
mad r3.xyz, r5, r1.w, r3
mad r3.xyz, r6, r1.w, r3
mad r4.xyz, v0.yxyw, c5.x, c5.y
mul r0.z, r4.y, c77.z
mul r0.z, r0.y, r0.z
mul r1.w, -r4.x, c77.w
mul r1.w, r0.y, r1.w
mul r5.xyz, r1.w, c73
mad r5.xyz, r0.z, c72, r5
mad r5.xyz, -r0.y, c74, r5
add r5.xyz, r5, c75
mul r0.y, -r5.z, c77.z
rcp r0.y, r0.y
mul r6.x, r5.x, r0.y
mul r0.y, r5.z, c77.w
rcp r0.y, r0.y
mul r6.y, r5.y, r0.y
add r0.yz, -r4, r6.xxyw
mul r0.yz, r0, c80.x
mul r4.xy, r0.yzzw, c5.z
texld r5, v0, s6
add r1.w, r5.x, -c85.x
mul r4.zw, r3.xyxy, c2.w
mad r4.zw, v0.xyxy, c3.xyxy, r4
texld r5, r4.zwzw, s5
add r2.w, r5.x, c4.x
mad r4.zw, r4.xyxy, r2.w, v0.xyxy
mov r5.xyz, r3
mov r2.w, c1.y
mov r3.w, c1.y

rep i0
mad r6.xy, r4, r3.w, r4.zwzw
texld r7, r6, s6
add r5.w, r7.x, -c85.x
cmp r5.w, r5.w, c1.w, c1.y
texld r6, r6, s2
mad r5.xyz, r6, r5.w, r5
add r2.w, r2.w, r5.w
add r3.w, r3.w, c1.y
endrep

rcp r2.w, r2.w
mul r0.yz, r0, c183.xxyw//c44.xxyw
dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
rsq r0.y, r0.y
rcp r0.y, r0.y
mul r0.y, r0.y, c4.w
add r0.x, r0.x, c1.y
rcp r0.x, r0.x
mul_sat r0.x, r0.y, r0.x
mad r4.xyz, r5, r2.w, -r3
mad r0.xyz, r0.x, r4, r3
cmp r0.xyz, r1.w, r3, r0
cmp r0.xyz, -r0.w, r0, r1

texld r1, c0.x, s4
rcp r0.w, r1.x
mul r0.w, r0.w, c81.y
rcp r1.x, r0.w
mul r1.x, r1.x, c81.x
mad r1.xyz, r2, c66.x, -r1.x
max r2.xyz, r1, c0.x
mul r1.xyz, r2, c81.z
mul r1.xyz, r1, c1.x
mad r0.xyz, r0, c66.x, r1
mul r1.xyz, r0.w, r0
dp3 r1.x, r1, c0.yzww
mad r0.xyz, r0, r0.w, -r1.x
mad r0.xyz, c82.x, r0, r1.x
mul r0.w, r1.x, c84.w
mul r1.yzw, r0.w, c84.xxyz
mov_sat r2.x, r0.w
mad r0.xyz, c84, -r0.w, r0
mad r0.xyz, r2.x, r0, r1.yzww
mul r0.xyz, r0, c83
add r0.xyz, r0, r0
mov_sat r1.x, r1.x
add r0.w, -r8.y, c82.z
pow r2.x, r1.x, r0.w
//mul r2.x, r2.x, c181.x
mul oC0.xyz, r0, r2.x
mov oC0.w, c1.y

//texld r1, v0, s2
//mul oC0.xyz, r1, c199.z
};
}
}

[/spoiler]
Надеюсь на Вас.


My Gallery
Самое большое заблуждение детства - мы думали, что быть взрослыми здорово...


Сообщение отредактировал pit_bull - Пятница, 2013-11-15, 23:13
 
offline
 dax1
Дата: Суббота, 2013-11-16, 01:33 | Сообщение # 528
Гангстер
Сообщений: 112
сам шейдер добавлю потом в енб фикс, я не знаю будет ли он работать на дефолтных шейдерах с того или иного патча, во всяком случае он точно будет работать вместе с енб фиксом.


надо по тестировать на стареньком радеоне с феником это дело, да лень винт отстёгивать и пристёгивать к другому компу :( вместо того что бы конфиг крутить щас тупо катаюсь по игре, вроде не значительная мелочь, а так меняет восприятие.

Добавлено (2013-11-16, 00:23)
---------------------------------------------
думаю что там есть ещё один шейдер окружения, ибо сильно в дали то всё равно говнецо, что если заменить ещё и его crazy по крайней мере по пробовать, в теории это может дать в трое большую дальность прорисовки.

Добавлено (2013-11-16, 01:33)
---------------------------------------------
portal-2x2, ты оказался прав насчёт текстур, с этим шейдером намного лучше нежели чем с стоковым, но есть некоторые глюки от него, которые нужно по править, затемнения в некоторых местах и помаргивание текстур небольшое, по пробую по править это дело.


Я счастлив по умолчанию! Пожалуйста, не лезьте в настройки.
 
offline
 Simple999
Дата: Суббота, 2013-11-16, 06:44 | Сообщение # 529
Гангстер
Сообщений: 1000
dax1, интересно, в следующем видео полетай на вертолете, так более прояснится картинка твоих плодов, с текстурами идея хорошая, попробуй реализовать.


? 21.12.2013 - Дней на сайте: 999
 
offline
 dax1
Дата: Суббота, 2013-11-16, 10:16 | Сообщение # 530
Гангстер
Сообщений: 112
Simple999, на вертолёте всё равно будет куча уг деревьев, на 1.0.7.0 не спасает сквозь лезущие из под норм текстур фиговые, а на эпизодах работает норм в общем пока сомнительное предприятие этот шейдер, щас пока за место него модифицировал енбшный.
[spoiler="Скрытый текст"]// Parameters:
//
// sampler2D BumpSampler;
// sampler2D SpecSampler;
// sampler2D StippleTexture;
// sampler2D TextureSampler;
// float bumpiness;
// float4 globalScalars;
// float3 specMapIntMask;
// float specularColorFactor;
// float specularFactor;
// float4 stencil;
//
//
// Registers:
//
// Name Reg Size
// ------------------- ----- ----
// globalScalars c39 1
// stencil c52 1
// specularFactor c66 1
// specularColorFactor c72 1
// specMapIntMask c73 1
// bumpiness c74 1
// TextureSampler s0 1
// BumpSampler s1 1
// SpecSampler s2 1
// StippleTexture s10 1
//

ps_3_0
def c0, -1, 0, 1, 0
def c1, -0.5, 9.99999975e-006, 0.5, 0.001953125
def c2, 3.99600005, 4, 0.125, 0.25
def c150, 0.0, 1.0, 0.0, 0.0
def c175, 0.0, 0.5, 2.0, -1.0
//x - clamp level, y - bump level mix, z - specular inv mix, w - diffuse mix
def c177, 1.4, 4.0, 1.0, 0.1
//w - detail tiles count
def c178, 0.0, 0.0, 0.0, 3.0
def c220, 0, 0, 0, 0 //74
def c221, 0, 0, 0, 0 //73
def c222, 0, 0, 0, 0 //72
def c223, 0, 0, 0, 0 //66

dcl_texcoord v0.xy
dcl_texcoord1 v1.xyz
dcl_texcoord4 v2.xyz
dcl_texcoord5 v3.xyz
dcl_color v4.xw
dcl vPos.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s10
dcl_2d s13
texld r0, v0, s0

//moved from below
texld r12, v0, s2
mul r12.w, r12.w, c223.x
dp3 r12.x, r12, c221

mov r10.zw, c150.x
mov r10.xy, v0
mul r10.xy, r10, c178.w
texld r11, r10, s13
mad r11, r11, c175.z, c175.w //for normals
//mul r0.xyz, r0, r11
//mad r10.xyz, r11.w, c175.z, c175.w
mov r10.xyz, r11.w
//mul r0.xyz, r0, r10
mul r10, r10, c177.w
add r10, r10, -c175.w
//mul r2.xyz, r2, r10
//mul r0.xyz, r0, r10
mul r10, r0, r10
mov r9.xyz, r0

//affect dark only
max r9.w, r0.x, r0.y
max r9.w, r9.w, r0.z
mul_sat r9.w, r9.w, c177.x
//mul r9.w, r9.w, r9.w
//mul r9.w, r9.w, r9.w
pow r9.w, r9.w, c177.x
//mul_sat r9.w, r9.w, r12.x //affect specular level
lrp r0.xyz, r9.w, r9, r10

mul r0.w, r0.w, v4.w
mul r0.w, r0.w, c39.x
mov_sat r1.x, r0.w
mul r1.x, r1.x, c2.x
frc r1.y, r1.x
mul r1.z, r1.y, c2.y
frc r1.w, r1.z
add r2.xy, r1.zxzw, -r1.wyzw
mul r1.xy, c2.z, vPos
frc r1.xy, r1_abs
cmp r1.xy, vPos, r1, -r1
mul r1.xy, r1, c2.w
mad r1.xy, r2, c2.w, r1
texld r1, v0, s1

//apply to bump
/*
//restore normal, then convert back
mad r1.xyz, r1, c175.z, c175.w

mad r11.xyz, r11, c177.y, r1
mul r12.x, r12.x, c177.x
add_sat r9.w, r9.w, r12.x //affect specular level
lrp r1.xyz, r9.w, r1, r11

mad r1.xyz, r1, c175.y, c175.y
*/

//higher quality
mad r1.xyz, r1, c175.z, c175.w

mul r10.z, r11.z, c199.x //amount of bump
mov r10.xy, r11.xy
nrm r11.xyz, r10.xyz

mov r14.xyz, r1.xzy
mov r15.xyz, r1.zyx
mov r16.xyz, r1.yxz
dp3 r10.y, r11.xyz, r14.xyz
dp3 r10.x, r11.xyz, r15.xyz
dp3 r10.z, r11.xyz, r16.xyz

//nrm r1.xyz, r10.xyz

nrm r11.xyz, r10.xyz
add_sat r9.w, r9.w, r12.x //affect specular level
lrp r1.xyz, r9.w, r1, r11
//nrm r1.xyz, r10.xyz

mad r1.xyz, r1, c175.y, c175.y

//mov r13, r1

add r1.z, -r1.w, c0.z
add r1.z, -r1.x, r1.z
cmp r1.z, r1.z, c0.w, c0.z
lrp r2.xy, r1.z, r1, r1.wyzw
add r1.xy, r2, c1.x
mul r1.xy, r1, c220.x
dp2add r1.z, r2, -r2, c0.z
rsq r1.z, r1.z
rcp r1.z, r1.z
mul r2.xyz, r1.x, v2
mad r1.xzw, v1.xyyz, r1.z, r2.xyyz
mad r1.xyz, r1.y, v3, r1.xzww
add r1.xyz, r1, c1.y
dp3 r1.w, r1, r1
rsq r1.w, r1.w

mov r2, r12
// texld r2, v0, s2 //orig
// mul r2.w, r2.w, c223.x
// dp3 r2.x, r2, c221

/*
//v1
mul r11.w, r2.x, r11.w
lrp r2.x, r9.w, r2.x, r11.w
*/
/*
//v2 better
mul r11.w, r2.x, r11.w
mov r12, r2
lrp r2.x, r9.w, r11.w, r12.x
*/

//v3
mul r11.w, r2.x, r11.w
mov r12, r2
//mov r9.w, r2.x
//add_sat r9.w, r2.x, r2.x
mul_sat r9.w, r2.x, c177.z
lrp r2.x, r9.w, r12.x, r11.w
mov_sat r2.x, r2.x

mul r2.x, r2.x, c202.x
mad r1.xyz, r1, r1.w, c0.z
mul oC1.xyz, r1, c1.z
mul oC2.x, r2.x, c1.z
mul r1.x, r2.w, c1.w
rsq r1.x, r1.x
rcp oC2.y, r1.x
mov oC0, r0
mov oC1.w, r0.w
mov oC2.z, v4.x
mov oC2.w, r0.w
mov r0.zw, c0
mul oC3, r0.zwww, c52.x

// approximately 50 instruction slots used (4 texture, 46 arithmetic)[/spoiler]


Я счастлив по умолчанию! Пожалуйста, не лезьте в настройки.
 
offline
 pit_bull
Дата: Суббота, 2013-11-16, 19:59 | Сообщение # 531
Гангстер
Сообщений: 51
Друзья, ну что кто поможет мне с моей проблемкой :)


My Gallery
Самое большое заблуждение детства - мы думали, что быть взрослыми здорово...
 
offline
 AgainstAllAutority
Дата: Суббота, 2013-11-16, 21:18 | Сообщение # 532
Гангстер
Сообщений: 801
pit_bull, ой как не охота-то делать это... + в том дофе есть косяк... потенциальный я на всяк случай его немного изменил, однако хз, как это отразится на дофе... он может стать чуть "темнее" что-ли... в общем бери и впредь обращайся к аФтору этой ахинеи...

Код

//Post Processing Method

#define POSTPROCESS_V1

#define DEPTH_OF_FIELD;
//#define SSAA_ENABLE; // enable it when ForceAntialiasing=true

#define DepthOfFieldQuality 3.0 // 1.0=LQ(Default) 2.0=MQ 3.0=HQ 0.0=Off
#define APPLYGAMECOLORCORRECTION //use contrast, brightness, saturation from game

float    NearBlurDepth=-50.0;//Near Blur Radius
float    FocalPlaneDepth=2.0;
float    FarBlurDepth=200.0;//Blur Radius
float    MaxBlurAmount=0.7;

//overall for two methods:
float    Adaptation = 1;
float    EColorSaturation = 1;
float    ColorBloom_Red = 1.1;
float    ColorBloom_Green = 1;
float    ColorBloom_Blue = 0.9;

float    EBrightnessV1 = 2.5;
float    EBloomAmountV1 = 0;
float    EBloomAmountAdditiveV1 = 1;

float    EBrightnessV2 = 0.5;
float    EBloomAmountV2 = 0.04;
float    EColoringV2 = 0.5;
float    EDarkeningV2 = 0.4;

///////////////////////////////////////>--------------------------------------------------------:]
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1

//quad
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};

//int4    _i0 : register(i0);

/*
float4    _c0 : register(c0);
float4    _c1 : register(c1);
float4    _c2 : register(c2);
float4    _c3 : register(c3);
float4    _c4 : register(c4);
float4    _c5 : register(c5);
float4    _c6 : register(c6);
*/
float4    _c44 : register(c44);
float4    _c66 : register(c66);
float4    _c72 : register(c72);
float4    _c73 : register(c73);
float4    _c74 : register(c74);
float4    _c75 : register(c75);
float4    _c76 : register(c76);
float4    _c77 : register(c77);
float4    _c78 : register(c78);
float4    _c79 : register(c79);
float4    _c80 : register(c80);
float4    _c81 : register(c81);
float4    _c82 : register(c82);
float4    _c83 : register(c83);
float4    _c84 : register(c84);
float4    _c85 : register(c85);

texture2D texs0 : register(s0);
texture2D texs1 : register(s1);
texture2D texs2 : register(s2);
texture2D texs3 : register(s3);
texture2D texs4 : register(s4);
texture2D texs5 : register(s5);
texture2D texs6 : register(s6);
texture2D texs7 : register(s7);
texture2D texs13 : register(s13);//palette
texture2D texs15 : register(s15);
//sampler2D s0=sampler_state { Texture=<texs0>; };
//sampler2D s1=sampler_state { Texture=<texs1>; };
sampler2D s2=sampler_state { Texture=<texs2>; };
//sampler2D s3=sampler_state { Texture=<texs3>; };
sampler2D s4=sampler_state { Texture=<texs4>; };
sampler2D s5=sampler_state { Texture=<texs5>; };
sampler2D s6=sampler_state { Texture=<texs6>; };
sampler2D s7=sampler_state { Texture=<texs7>; };
//sampler2D s13=sampler_state { Texture=<texs13>; };
sampler2D s15=sampler_state { Texture=<texs15>; };

//next samplers states fixing problems on ATI cards
sampler2D s0 = sampler_state
{
Texture = <texs0>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s13 = sampler_state
{
Texture = <texs13>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
float4 texDistorted(sampler2D tex, float2 uv, float2 offset)
{

float4 color=0;
float3    distortion=float3(-0.01, 0.0, 0.01);
color.x=tex2D(tex, uv.xy + offset.xy * distortion.x).x;
color.y=tex2D(tex, uv.xy + offset.xy * distortion.y).y;
color.z=tex2D(tex, uv.xy + offset.xy * distortion.z).z;
color.w=1.0;

return color;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
{
float4 _oC0=0.0; //output

float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
float4 _c1=float4(0.25, 1, 256, 0);
float4 _c2=float4(0, 2, 4, 8);
float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
float4 _c5=float4(2, -1, 0.125, 0);
float4 _c6=float4(256, 2, 4, 8);
//mine
float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7

float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;

float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r1=tex2D(s2, _v0.xy); //HDRSampler
r2=tex2D(s3, _v0.xy); //BloomSampler

//*************************

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r0.w=abs(_c79.w);

float    depth=r0.z * r0.x - _c78.w; //dofDist.w
depth+=_c78.y * -0.5; //dofDist.y

//***************
#ifdef DEPTH_OF_FIELD

depth=max(depth, 0); //fix zoom bug

float4    vDofParams=float4(NearBlurDepth, FocalPlaneDepth, FarBlurDepth, MaxBlurAmount); //near blur depth, focal plane depth, far blur depth, blurriness cut off constant
float    dist;

if(depth < vDofParams.y)
dist=(depth - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
dist=(depth - vDofParams.y)/(vDofParams.z - vDofParams.y);
dist=clamp(dist, 0, vDofParams.w);
}

dist=dist * 0.5 + 0.5;

float2    pixelSizeHigh;
float2    pixelSizeLow;

#ifdef SSAA_ENABLE
pixelSizeHigh.xy=2.0 / _c44.xy;
#else
pixelSizeHigh.xy=1.0 / _c44.xy;
#endif

pixelSizeLow.xy=pixelSizeHigh.xy;

float2    vMaxCoC=float2(5.0, 10.0);

float    radiusScale=0.45;

float    centerDepth=dist;

float    discRadius=abs(centerDepth * vMaxCoC.y - vMaxCoC.x);
float    discRadiusLow=discRadius * radiusScale;

r1.w=1.0;

int sampleCycle=1;
int sampleCycleCounter=0;
int sampleCounterInCycle=0;

int    dofTaps=DepthOfFieldQuality * (DepthOfFieldQuality + 1) * 4;

for(int i=0; i < dofTaps; i++)
{
if(sampleCounterInCycle % sampleCycle == 0)
{
sampleCounterInCycle=0;
sampleCycle+=8;
sampleCycleCounter++;
}
sampleCounterInCycle++;

float    sampleAngle=6.2831853 * sampleCounterInCycle / sampleCycle;
float2    sampleOffset;
sincos(sampleAngle, sampleOffset.y, sampleOffset.x);
sampleOffset*=sampleCycleCounter;
float2 coordLow=_v0.xy + (pixelSizeLow.xy * sampleOffset.xy * discRadiusLow);
float2 coordHigh=_v0.xy + (pixelSizeHigh.xy * sampleOffset.xy * discRadius);

float4    tapLow=texDistorted(s2, coordLow.xy, 0.05);
//float4    tapLow=tex2D(s2, coordLow.xy);
float4    tapHigh=tex2D(s2, coordHigh.xy);

float4    tdepth=tex2D(s1, coordHigh.xy); //GBufferTextureSampler3
tdepth.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
tdepth.y=1.0 / tdepth.y;
tdepth.z=tdepth.y * _c77.y; //dofProj.y
tdepth.z=tdepth.z * -_c77.x; //dofProj.x
tdepth.x=_c77.y * -tdepth.y + tdepth.x;
tdepth.x=1.0 / tdepth.x;

tdepth.w=tdepth.z * tdepth.x - _c78.w; //dofDist.w
tdepth.w+=_c78.y * -0.5; //dofDist.y

tdepth.w=max(tdepth.w, 0); //fix zoom bug

if(tdepth.w < vDofParams.y)
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);
tapHigh.w=clamp(tapHigh.w, 0, vDofParams.w);
}

tapHigh.w=tapHigh.w * 0.5 + 0.5;
tapLow.w=tapHigh.w;

float tapBlur=abs(tapHigh.w * 2.0 - 1.0);
float4 tap=lerp(tapHigh, tapLow, tapBlur);

tap.w=(tap.w >= centerDepth) ? 1.0 : abs(tap.w * 2.0 - 1.0);

r1.xyz+=tap.xyz * tap.w;
r1.w+=tap.w;

}

r1.xyz /= r1.w;

#endif

//***************

r3=r1;
r0.x=15.0;

r4.x=_v0.y * _c5.x + _c5.y;
r4.y=_v0.x * _c5.x + _c5.y;
r4.z=_v0.y * _c5.x + _c5.y;

r0.z=r4.y * _c77.z; //dofProj.z
r0.z=r0.y * r0.z;
r1.w=-r4.x * _c77.w; //dofProj.w
r1.w=r0.y * r1.w;
r5.xyz=r1.w * _c73.xyz; //motionBlurMatrix.2
r5.xyz+=r0.z * _c72.xyz; //motionBlurMatrix.1
r5.xyz+=-r0.y * _c74.xyz; //motionBlurMatrix.3
r5.xyz+=_c75.xyz; //motionBlurMatrix.4
r0.y=-r5.z * _c77.z; //dofProj.z
r0.y=1.0/r0.y;
r6.x=r5.x * r0.y;
r0.y=r5.z * _c77.w; //dofProj.w
r0.y=1.0/r0.y;
r6.y=r5.y * r0.y;
//r0.yz=-r4 + r6.xxyw;
r0.yz=-r4.yz + r6.xy;

//r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x
float4 AAA = EBloomAmountAdditiveV1;
r0.y=r0.y * _c80.x;
r0.z=r0.z * _c80.x;
r4.xy=r0.yz * _c5.z; //0.125
r5=tex2D(s6, _v0.xy); //StencilCopySampler
r1.w=r5.x - _c85.x; //PLAYER_MASK.x
r4.zw=r3.xy * _c2.w; //8.0
r4.zw=_v0.xy * _c3.xy + r4.zw; //58.1640015, 47.1300011
r5=tex2D(s5, r4.zw); //JitterSampler
r4.zw=r4.xy * (r5.x - 4) + _v0.xy; //0.082 fixed
r5.xyz=r3.xyz;
r2.w=_c1.y; //1.0
r3.w=_c1.y; //1.0

//motion blur
for (int iii=0; iii<7; iii++)
{
r6.x=r4.x * r3.w + r4.z; //v2
r6.y=r4.y * r3.w + r4.w; //v2
r7=tex2D(s6, r6.xy);
r5.w=r7.x - _c85.x;
if (r5.w<-0.3)
{
r5.w=_c1.y; //1.0
} else r5.w=_c1.w; //0.0
r6=tex2D(s2, r6.xy);
r5.xyz=r6.xyz * r5.w + r5.xyz;
r2.w=r2.w + r5.w;
r3.w=r3.w + _c1.y; //1.0
}

r2.w = 1.0 / r2.w;
//r0.yz = r0 * _c44.xxyw; //globalScreenSize
r0.y = r0.y * _c44.x; //globalScreenSize
r0.z = r0.z * _c44.y; //globalScreenSize
r0.y = dot(r0.yz, r0.yz) + _c0.x; //dp2
//r0.y = sqrt(r0.y);
//r0.y = 1.0 / r0.y;
r0.y = pow(r0.y, _c4.w); //0.5
r0.y = r0.y * _c4.w; //0.5
r0.x = r0.x + _c1.y; //1.0
r0.x = 1.0 / r0.x;
r0.x = saturate(r0.y * r0.x);
r4.xyz = r5 * r2.w - r3;
r0.xyz = r0.x * r4 + r3;
//_oC0.xyz = 0.5*r0.xyz;
if (-r1.w<0.0) r0.xyz = r3.xyz;
if (-r0.w<0.0) r0.xyz = r1.xyz;

//for future use
r11=r0;

float4 color;
//r0=tex2D(s2, _v0.xy);//hdr color
color=r11; //FROM ORIGINAL CODE AFTER BLUR
float    luma=0.27*color.r + 0.67*color.g + 0.06*color.b;

//adaptation
r5.w=r5.x;
r5.w=Adaptation/r5.w;
color.xyz=color.xyz * r5.w;
r3.xy=_c10.xwxw;
r3.xy=r3.xy * r5.w;

//increase color
float cgray=dot(color.xyz, 0.333);//luma
float adaptcolor=smoothstep(0.35, 1.0, 1.0 - r5.x)*0.1;
float adaptluma=smoothstep(0.35, 1.0, 1.0 - r5.x)*0;
float adaptcontrast=(1-smoothstep(0.35, 1.0, 1.0 - r5.x))*0;

float3 poweredcolor=pow(color.xyz, EColorSaturation + adaptcolor);
float newgray=dot(poweredcolor.xyz, 0.333);
color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);

float4 colorbloom=tex2D(s3, _v0.xy); //bloom

//HERE 0.15 is bloom factor 1, soft bloom
color=colorbloom * EBloomAmountV1 + color;
colorbloom.r*=ColorBloom_Red;
colorbloom.g*=ColorBloom_Green;
colorbloom.b*=ColorBloom_Blue;

//power from intensity

r10=dot(color.xyz, _c12.xyz); //luminance

r9.x=r10.x * EBrightnessV1;//c199.x;
r10.x=1.0/r10.x;
r10=r10 * r9.x;
color=color * r10.x;
color=color * _c7.y; //pre multiply
r1=color * _c7.z; //e multiply
r1=r1 + _c7.w;

color=color / (r1 + _c7.w); //+1.0

//HERE 0.8 is bloom for additive mix

color=AAA.w*colorbloom * r3.x + color;

//luma=saturate(dot(color.xyz, _c12.xyz));
//color.xyz*=pow(luma, -adaptluma);

//color.xyz=(_v0.x < 0.95) ? color.xyz : adaptcolor;

#ifdef APPLYGAMECOLORCORRECTION
//apply original corrections (((
r0.w=1.0;//_c81.y/r5.x;//r5 is AdapLumSampler

luma=0.27*color.r + 0.67*color.g + 0.06*color.b;
color.xyz=color.xyz * r0.w - luma;
color.xyz=_c82.x * color.xyz + luma; //deSatContrastGamma.x
r0.w=luma * _c84.w; //ColorShift.w
r1.xyz=r0.w * _c84.xyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
color.xyz=color.xyz - _c84.xyz * r0.w; //ColorShift
color.xyz=saturate(r0.w) * color.xyz + r1.xyz;

//coloring (green, brown, ...)
color.xyz=2.0 * color.xyz * _c83.xyz; //ColorCorrect

//desaturating
luma=saturate(luma);
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r0.w=lerp(r0.w, -adaptluma, 0.5);
color.xyz=color.xyz * pow(luma, r0.w);

r3.r*=1.1;
r3.g*=1;
r3.b*=0.9;
#endif //APPLYGAMECOLORCORRECTION

float4 decontrastcolor=2.0*color - color*color*(3.0 - 2.0*color);
color.xyz=lerp(color.xyz, decontrastcolor.xyz, adaptcontrast);

_oC0.xyz=color.xyz;  
//_oC0.w=1.0;
return _oC0;
}

//mine temporary post process
technique Shader_C215BE6E
{
pass p0
{
PixelShader = compile ps_3_0 PS_C215BE6E();
}
}


 
offline
 Simple999
Дата: Суббота, 2013-11-16, 21:22 | Сообщение # 533
Гангстер
Сообщений: 1000
[spoiler="морось"]










[/spoiler]


? 21.12.2013 - Дней на сайте: 999


Сообщение отредактировал Simple999 - Суббота, 2013-11-16, 21:23
 
offline
 pit_bull
Дата: Суббота, 2013-11-16, 22:24 | Сообщение # 534
Гангстер
Сообщений: 51
AgainstAllAutority, Спасибо тебе огромное. Поставил этот енбэффект но у меня почему то все вокруг стало черным и небо и сам город,не знаю из за чего это,но это не беда проблему уже решил взяв этот же енбэффект и перенес коды уже которые ты перенес. Во общем вот так,может быть ты где то что то лишнее убрал или вписал (просьба не придираться к словам, мысли в слух) Спасибо еше раз. yes


My Gallery
Самое большое заблуждение детства - мы думали, что быть взрослыми здорово...
 
offline
 AgainstAllAutority
Дата: Суббота, 2013-11-16, 23:03 | Сообщение # 535
Гангстер
Сообщений: 801
pit_bull, я вполне мог ошибиться - молодец, что поправил))) глядишь, в нашем полку прибудет, если разбираться начнешь)


тем временем мне кажется я подобрал освещение, теперь только тайм подкорректировать и можно штамповать погоды ))
[spoiler="тесты 1280"]






[/spoiler]

косяки еще есть, но я ни разу до этого не был так доволен намечающейся картиной )) только бы не лень apstenu


 
offline
 pit_bull
Дата: Воскресенье, 2013-11-17, 21:37 | Сообщение # 536
Гангстер
Сообщений: 51
AgainstAllAutority, Картинка правда очень красивая,только SSAO какое то не совсем понятное,впечатление будто машина парит над асфальтом,но это лишь мое мнение.
Кстати,потестил вчера этот доф с которым ты мне помог,не особо то впечатлил,поставил доф от твоего енб мода enb build v0.5 порадовал :) clap После твоего вмешательства спокойно любой доф ставиться а до этого не в какю не один не хотел работать.
Подскажи пожалуйста как ты такие линзы сделал
[spoiler="Скрытый текст"]
http://fotki.yandex.ru/users/iamopezdl/view/642888/[/spoiler]
Я знаю что эти линзы работают чрез палитру и блум тоже очень влияет на эти линзы,есть палитра есть енбэффект с которым эта палитра работает,пробовал копировать код этих линз и прописывал в свой енбэффект,но они так и не заработали,думал из за блума,но тоже нет,мб я что то не то копировал или прописывал не там но вроде как то и где надо,во общем запутался к чертям с этими кодами :( Помоги пожалуйста,я точно знаю что ты знаешь как че делать. Вот этот енбэффект с кодами линз. (тот же енбэффект от куда я просил доф перенести)
[spoiler="енбэффект"]//Poorman's Enhancer 82R enbeffect file by SuperAria18

//Post Processing Method

#define POSTPROCESS_V1

//General Image Setting

float EBrightnessV1=10.0;
float Saturation=0.5;
float Exposure=0.4;
float Bloom1=0.1;
float Bloom2=0.1;
float Bloom3=0.0;
float Desaturate=0.0;
float Darkening=1.2;
float Diffcoloramount=1.0;//Do not touch
float BloomDistortionAmount=0.2;
float DirtAmount=0.5;

//Bloom Color Setting

float R=1.125;
float G=1.0;
float B=1.0;

//Depth of Field Setting - gp65cj04 2012

#define DEPTH_OF_FIELD;
//#define SSAA_ENABLE; // enable it when ForceAntialiasing=true

#define DepthOfFieldQuality 1.0 // 1.0=LQ(Default) 2.0=MQ 3.0=HQ 0.0=Off

float NearBlurDepth=-50.0;//Near Blur Radius
float FocalPlaneDepth=2.0;
float FarBlurDepth=200.0;//Blur Radius
float MaxBlurAmount=0.7;

///////////////////////////////////////>--------------------------------------------------------:]
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1

//quad
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};

//int4 _i0 : register(i0);

/*
float4 _c0 : register(c0);
float4 _c1 : register(c1);
float4 _c2 : register(c2);
float4 _c3 : register(c3);
float4 _c4 : register(c4);
float4 _c5 : register(c5);
float4 _c6 : register(c6);
*/
float4 _c44 : register(c44);
float4 _c66 : register(c66);
float4 _c72 : register(c72);
float4 _c73 : register(c73);
float4 _c74 : register(c74);
float4 _c75 : register(c75);
float4 _c76 : register(c76);
float4 _c77 : register(c77);
float4 _c78 : register(c78);
float4 _c79 : register(c79);
float4 _c80 : register(c80);
float4 _c81 : register(c81);
float4 _c82 : register(c82);
float4 _c83 : register(c83);
float4 _c84 : register(c84);
float4 _c85 : register(c85);

texture2D texs0 : register(s0);
texture2D texs1 : register(s1);
texture2D texs2 : register(s2);
texture2D texs3 : register(s3);
texture2D texs4 : register(s4);
texture2D texs5 : register(s5);
texture2D texs6 : register(s6);
texture2D texs7 : register(s7);
texture2D texs13 : register(s13);//palette
texture2D texs15 : register(s15);
//sampler2D s0=sampler_state { Texture=<texs0>; };
//sampler2D s1=sampler_state { Texture=<texs1>; };
sampler2D s2=sampler_state { Texture=<texs2>; };
//sampler2D s3=sampler_state { Texture=<texs3>; };
sampler2D s4=sampler_state { Texture=<texs4>; };
sampler2D s5=sampler_state { Texture=<texs5>; };
sampler2D s6=sampler_state { Texture=<texs6>; };
sampler2D s7=sampler_state { Texture=<texs7>; };
//sampler2D s13=sampler_state { Texture=<texs13>; };
sampler2D s15=sampler_state { Texture=<texs15>; };

//next samplers states fixing problems on ATI cards
sampler2D s0 = sampler_state
{
Texture = <texs0>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s13 = sampler_state
{
Texture = <texs13>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
float4 texDistorted(sampler2D tex, float2 uv, float2 offset)
{

float4 color=0;
float3 distortion=float3(-0.01, 0.0, 0.01);
color.x=tex2D(tex, uv.xy + offset.xy * distortion.x).x;
color.y=tex2D(tex, uv.xy + offset.xy * distortion.y).y;
color.z=tex2D(tex, uv.xy + offset.xy * distortion.z).z;
color.w=1.0;

return color;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
{
float4 _oC0=0.0; //output

float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
float4 _c1=float4(0.25, 1, 256, 0);
float4 _c2=float4(0, 2, 4, 8);
float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
float4 _c5=float4(2, -1, 0.125, 0);
float4 _c6=float4(256, 2, 4, 8);
//mine
float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7

float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;

float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r1=tex2D(s2, _v0.xy); //HDRSampler
r2=tex2D(s3, _v0.xy); //BloomSampler

//*************************

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r0.w=abs(_c79.w);

float depth=r0.z * r0.x - _c78.w; //dofDist.w
depth+=_c78.y * -0.5; //dofDist.y

//***************
#ifdef DEPTH_OF_FIELD

depth=max(depth, 0); //fix zoom bug

float4 vDofParams=float4(NearBlurDepth, FocalPlaneDepth, FarBlurDepth, MaxBlurAmount); //near blur depth, focal plane depth, far blur depth, blurriness cut off constant
float dist;

if(depth < vDofParams.y)
dist=(depth - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
dist=(depth - vDofParams.y)/(vDofParams.z - vDofParams.y);
dist=clamp(dist, 0, vDofParams.w);
}

dist=dist * 0.5 + 0.5;

float2 pixelSizeHigh;
float2 pixelSizeLow;

#ifdef SSAA_ENABLE
pixelSizeHigh.xy=2.0 / _c44.xy;
#else
pixelSizeHigh.xy=1.0 / _c44.xy;
#endif

pixelSizeLow.xy=pixelSizeHigh.xy;

float2 vMaxCoC=float2(5.0, 10.0);

float radiusScale=0.45;

float centerDepth=dist;

float discRadius=abs(centerDepth * vMaxCoC.y - vMaxCoC.x);
float discRadiusLow=discRadius * radiusScale;

r1.w=1.0;

int sampleCycle=0;
int sampleCycleCounter=0;
int sampleCounterInCycle=0;

int dofTaps=DepthOfFieldQuality * (DepthOfFieldQuality + 1) * 4;

for(int i=0; i < dofTaps; i++)
{
if(sampleCounterInCycle % sampleCycle == 0)
{
sampleCounterInCycle=0;
sampleCycle+=8;
sampleCycleCounter++;
}
sampleCounterInCycle++;

float sampleAngle=6.2831853 * sampleCounterInCycle / sampleCycle;
float2 sampleOffset;
sincos(sampleAngle, sampleOffset.y, sampleOffset.x);
sampleOffset*=sampleCycleCounter;
float2 coordLow=_v0.xy + (pixelSizeLow.xy * sampleOffset.xy * discRadiusLow);
float2 coordHigh=_v0.xy + (pixelSizeHigh.xy * sampleOffset.xy * discRadius);

float4 tapLow=texDistorted(s2, coordLow.xy, 0.05);
//float4 tapLow=tex2D(s2, coordLow.xy);
float4 tapHigh=tex2D(s2, coordHigh.xy);

float4 tdepth=tex2D(s1, coordHigh.xy); //GBufferTextureSampler3
tdepth.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
tdepth.y=1.0 / tdepth.y;
tdepth.z=tdepth.y * _c77.y; //dofProj.y
tdepth.z=tdepth.z * -_c77.x; //dofProj.x
tdepth.x=_c77.y * -tdepth.y + tdepth.x;
tdepth.x=1.0 / tdepth.x;

tdepth.w=tdepth.z * tdepth.x - _c78.w; //dofDist.w
tdepth.w+=_c78.y * -0.5; //dofDist.y

tdepth.w=max(tdepth.w, 0); //fix zoom bug

if(tdepth.w < vDofParams.y)
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
tapHigh.w=(tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);
tapHigh.w=clamp(tapHigh.w, 0, vDofParams.w);
}

tapHigh.w=tapHigh.w * 0.5 + 0.5;
tapLow.w=tapHigh.w;

float tapBlur=abs(tapHigh.w * 2.0 - 1.0);
float4 tap=lerp(tapHigh, tapLow, tapBlur);

tap.w=(tap.w >= centerDepth) ? 1.0 : abs(tap.w * 2.0 - 1.0);

r1.xyz+=tap.xyz * tap.w;
r1.w+=tap.w;

}


r1.xyz /= r1.w;


#endif

//***************

r3=r1;
r0.x=15.0;

r4.x=_v0.y * _c5.x + _c5.y;
r4.y=_v0.x * _c5.x + _c5.y;
r4.z=_v0.y * _c5.x + _c5.y;

r0.z=r4.y * _c77.z; //dofProj.z
r0.z=r0.y * r0.z;
r1.w=-r4.x * _c77.w; //dofProj.w
r1.w=r0.y * r1.w;
r5.xyz=r1.w * _c73.xyz; //motionBlurMatrix.2
r5.xyz+=r0.z * _c72.xyz; //motionBlurMatrix.1
r5.xyz+=-r0.y * _c74.xyz; //motionBlurMatrix.3
r5.xyz+=_c75.xyz; //motionBlurMatrix.4
r0.y=-r5.z * _c77.z; //dofProj.z
r0.y=1.0/r0.y;
r6.x=r5.x * r0.y;
r0.y=r5.z * _c77.w; //dofProj.w
r0.y=1.0/r0.y;
r6.y=r5.y * r0.y;
//r0.yz=-r4 + r6.xxyw;
r0.yz=-r4.yz + r6.xy;

//r0.yz=r0 * _c80.x; //gDirectionalMotionBlurLength.x
r0.y=r0.y * _c80.x;
r0.z=r0.z * _c80.x;
r4.xy=r0.yz * _c5.z; //0.125
r5=tex2D(s6, _v0.xy); //StencilCopySampler
r1.w=r5.x - _c85.x; //PLAYER_MASK.x
r4.zw=r3.xy * _c2.w; //8.0
r4.zw=_v0.xy * _c3.xy + r4.zw; //58.1640015, 47.1300011
r5=tex2D(s5, r4.zw); //JitterSampler
r4.zw=r4.xy * (r5.x - 4) + _v0.xy; //0.082 fixed
r5.xyz=r3.xyz;
r2.w=_c1.y; //1.0
r3.w=_c1.y; //1.0

//motion blur
for (int iii=0; iii<7; iii++)
{
r6.x=r4.x * r3.w + r4.z; //v2
r6.y=r4.y * r3.w + r4.w; //v2
r7=tex2D(s6, r6.xy);
r5.w=r7.x - _c85.x;
if (r5.w<-0.3)
{
r5.w=_c1.y; //1.0
} else r5.w=_c1.w; //0.0
r6=tex2D(s2, r6.xy);
r5.xyz=r6.xyz * r5.w + r5.xyz;
r2.w=r2.w + r5.w;
r3.w=r3.w + _c1.y; //1.0
}

r2.w = 1.0 / r2.w;
//r0.yz = r0 * _c44.xxyw; //globalScreenSize
r0.y = r0.y * _c44.x; //globalScreenSize
r0.z = r0.z * _c44.y; //globalScreenSize
r0.y = dot(r0.yz, r0.yz) + _c0.x; //dp2
//r0.y = sqrt(r0.y);
//r0.y = 1.0 / r0.y;
r0.y = pow(r0.y, _c4.w); //0.5
r0.y = r0.y * _c4.w; //0.5
r0.x = r0.x + _c1.y; //1.0
r0.x = 1.0 / r0.x;
r0.x = saturate(r0.y * r0.x);
r4.xyz = r5 * r2.w - r3;
r0.xyz = r0.x * r4 + r3;
//_oC0.xyz = 0.5*r0.xyz;
if (-r1.w<0.0) r0.xyz = r3.xyz;
if (-r0.w<0.0) r0.xyz = r1.xyz;

//for future use
r11=r0;

r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
r0.w=1.0/r1.x;
r0.w=r0.w * _c81.y; //ToneMapParams.y
r1.x=1/r0.w;
r1.x=r1.x * _c81.x; //ToneMapParams.x
r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
r2.xyz=max(r1, _c0.x); //0.0
r1.xyz=r2 * _c81.z; //ToneMapParams.z
r1.xyz=r1 * _c1.x; //0.25
r0.xyz=r0 * _c66.x + r1; //Exposure.x
r1.xyz=r0.w * r0;
r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721
r0.xyz=r0 * r0.w - r1.x;
r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x
r0.w=r1.x * _c84.w; //ColorShift.w
r1.yzw=r0.w * _c84.xxyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
r2.x=saturate(r0.w);
r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
r0.xyz=r2.x * r0.xyz + r1.yzww;

//coloring (green, brown, ...)
r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect

//keeps colors, changes luma
r1.x=saturate(r1.x);//luma
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r2.x=pow(r1.x, r0.w);

_oC0.xyz=r0.xyz * r2.x; //orig
_oC0.w=_c1.y; //1.0

//
#ifdef POSTPROCESS_V1

r5=tex2D(s4, _c0.x);//adaptation luminance
//r0=tex2D(s2, _v0.xy);

float4 color;
color=r11;

float luma=10*color.r + 10*color.g + 10*color.b;
float skyMask=tex2D(s0, _v0.xy).w;
float4 colorFog=_c84 * 1.0;

colorFog.w=dot(colorFog.xyz, 0.3333);

if(colorFog.w > 0 && (skyMask > 0 || depth < 1500))
{
depth=(depth - 100.0) / (5000.0 - 100.0);
r0.xyz=lerp(color.xyz, colorFog.xyz, clamp(depth, 0.0, 0.50));
}

//increase color
float cgray=dot(color.xyz, 0.333);//luma
float3 poweredcolor=pow(color.xyz, Saturation);
float newgray=dot(poweredcolor.xyz, 0.333);
r0.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);

//dirty lens code by john chapman_gp65_ice
float4 dirtPaletteTex=tex2D(s13, _v0.xy); //use the palette texture for the lens
float4 uvsrc=0.0; //set the UVs
float3 lensDirt=dirtPaletteTex.xyz;
float4 colorbloom=r5.w*texDistorted(s3, _v0.xy, BloomDistortionAmount);//0.5

//float4 colorbloom=r5.w*texDistorted(s3, _v0.xy, BloomDistortionAmount);//0.5
colorbloom.r*=R;
colorbloom.g*=G;
colorbloom.b*=B;
colorbloom.xyz+=colorbloom.xyz*lensDirt.xyz*DirtAmount;
r0=colorbloom* Bloom1 + r0;

//GP65's adaptation code
r5.w=r5.x;
r5.w=1.0/r5.w;
r0.xyz=r0.xyz * r5.w;
r3.xy=_c10.xwxw;
r3.xy=r3.xy * r5.w;
color.xyz=color.xyz * r5.w;
r0=r0 * _c7.y; //pre multiply
r1=r0 * _c7.z; //e multiply
r1=r1 + _c7.w;
//r0=Bloom2*colorbloom * r3.x + r0;
//r0=Bloom3 * colorbloom * r5.w + r0;

r10=dot(r0.xyz, _c12.xyz);
r9.y=r10.x * 10.0;
r9.x=r10.x * EBrightnessV1;//c199.x;
r10.x=1.0/r10.x;
r10=r10 * r9.x;
r0=r0 * r10.x;
r0=r0 * _c7.y;

r1.xyz=2.0/r1.xyz;
r0=r0 * r1;


color=color / r1;

//power from intensity
r0=Bloom2*colorbloom * r3.x + r0;
r0=Bloom3 * colorbloom * r5.w + r0;
float colorgray=dot(r0.xyz, 0.333);//luma//max(color.x, max(color.y, color.z));//
float3 middlecolor=(r0.xyz+0.0001)/(colorgray+0.000001);
middlecolor.xyz=lerp(middlecolor.xyz, dot(middlecolor.xyz, 0.333), Desaturate);//0.6 //color
r0.xyz=middlecolor.xyz*pow(colorgray, Darkening);//0.4*tempF2.z //darken

float middlegray=dot(r0.xyz, 0.333);
float3 diffcolor=r0.rgb-middlegray;
r0.rgb+=diffcolor*Diffcoloramount;

r0.xyz=saturate(r0.xyz);
r0.xyz=r0.xyz*0.6 + sin(r0.xyz*1.57079)*Exposure;
r0.xyz=(_v0.y > 0.05 && _v0.y < 0.95) ? r0.xyz : 0.0;

#endif

_oC0.xyz=r0.xyz;

//_oC0.w=1.0;
return _oC0;
}

//mine temporary post process
technique Shader_C215BE6E
{
pass p0
{
PixelShader = compile ps_3_0 PS_C215BE6E();
}
}

//original shader of post processing
technique Shader_ORIGINALPOSTPROCESS
{
pass p0
{

PixelShader=
asm
{
//
// Generated by Microsoft ® HLSL Shader Compiler 9.23.949.2378
//
// Parameters:
//
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1
//

ps_3_0
def c0, 0, 0.212500006, 0.715399981, 0.0720999986
def c1, 0.25, 1, 256, 0
def c2, 0, 2, 4, 8
def c3, 58.1640015, 47.1300011, 0, 0
def c4, -0.5, -1.5, 1.5, 0.5
def c5, 2, -1, 0.125, 0
def c6, 256, 2, 4, 8
def c180, 0.0, 0.0, 0.0, 100.5
def c181, 1.0, 0.0, 0.0, 20.01
def c183, 800.0, 600.0, 0.0, 100.5
defi i0, 7, 0, 0, 0
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_2d s4
dcl_2d s5
dcl_2d s6
texld r0, v0, s1
add r0.y, -c77.x, c77.y
rcp r0.y, r0.y
mul r0.z, r0.y, c77.y
mul r0.z, r0.z, -c77.x
mad r0.x, c77.y, -r0.y, r0.x
rcp r0.x, r0.x
mul r0.y, r0.z, r0.x
texld r1, v0, s2
texld r2, v0, s3
abs r0.w, c79.w
mov r3, c4
mad r4.xy, c76, r3, v0
texld r4, r4, s2
mad r5.xy, c76, r3.zxzw, v0
texld r5, r5, s2
mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
texld r6, r3.xzzw, s2
mad r3.xy, c76, r3.ywzw, v0
texld r7, r3, s2
dp3 r1.w, r4, r4
rcp r1.w, r1.w
cmp r3.xyz, -r1.w, c0.x, r4
dp3 r1.w, r5, r5
rcp r1.w, r1.w
cmp r4.xyz, -r1.w, c0.x, r5
dp3 r1.w, r6, r6
rcp r1.w, r1.w
cmp r5.xyz, -r1.w, c0.x, r6
dp3 r1.w, r7, r7
rcp r1.w, r1.w
cmp r6.xyz, -r1.w, c0.x, r7
dp3 r1.w, r1, r1
rcp r1.w, r1.w
cmp r7.xyz, -r1.w, c0.x, r1
mad r0.x, r0.z, r0.x, -c78.w
mad r0.x, c78.y, -r3.w, r0.x
max r1.w, r0.x, c0.x
rcp r0.x, c78.z
mul r0.x, r1.w, r0.x
lrp r1.w, r0.x, c79.z, c79.y
min r0.x, c79.z, r1.w
dp3 r0.z, r7, c0.yzww
dp3 r8.x, r3, c0.yzww
dp3 r8.y, r4, c0.yzww
dp3 r8.z, r5, c0.yzww
dp3 r8.w, r6, c0.yzww
dp4 r1.w, r8, c1.x
add r8, r8, -r1.w
dp4 r2.w, r8, r8
add r0.z, r0.z, -r1.w
mad r0.z, r0.z, r0.z, -r2.w
mul r0.x, r0.x, r0.x
cmp r0.x, r0.z, c1.y, r0.x
texld r8, v0, s0
mov r8.yz, c1
mad r9, r8.w, -r8.z, c2
cmp r9, r9, c1.y, c1.w
mad r10, r8.w, -c6.x, c6.yzwx
cmp r10, r10, -c1.y, -c1.w
add r9, r9, r10
mul r9, r9, c4.x
dp4 r0.z, r9, c1.y
add r0.z, r0.z, c4.w
rcp r0.z, r0.z
mul r8.xzw, r3.xyyz, r9.x
mad r7.xyz, r7, c4.w, r8.xzww
mad r7.xyz, r4, r9.y, r7
mad r7.xyz, r5, r9.z, r7
mad r7.xyz, r6, r9.w, r7
mul r7.xyz, r0.z, r7
add r0.z, -r0.x, c1.y
mul r1.w, r0.x, c1.x
mul r3.xyz, r3, r1.w
mad r3.xyz, r7, r0.z, r3
mad r3.xyz, r4, r1.w, r3
mad r3.xyz, r5, r1.w, r3
mad r3.xyz, r6, r1.w, r3
mad r4.xyz, v0.yxyw, c5.x, c5.y
mul r0.z, r4.y, c77.z
mul r0.z, r0.y, r0.z
mul r1.w, -r4.x, c77.w
mul r1.w, r0.y, r1.w
mul r5.xyz, r1.w, c73
mad r5.xyz, r0.z, c72, r5
mad r5.xyz, -r0.y, c74, r5
add r5.xyz, r5, c75
mul r0.y, -r5.z, c77.z
rcp r0.y, r0.y
mul r6.x, r5.x, r0.y
mul r0.y, r5.z, c77.w
rcp r0.y, r0.y
mul r6.y, r5.y, r0.y
add r0.yz, -r4, r6.xxyw
mul r0.yz, r0, c80.x
mul r4.xy, r0.yzzw, c5.z
texld r5, v0, s6
add r1.w, r5.x, -c85.x
mul r4.zw, r3.xyxy, c2.w
mad r4.zw, v0.xyxy, c3.xyxy, r4
texld r5, r4.zwzw, s5
add r2.w, r5.x, c4.x
mad r4.zw, r4.xyxy, r2.w, v0.xyxy
mov r5.xyz, r3
mov r2.w, c1.y
mov r3.w, c1.y

rep i0
mad r6.xy, r4, r3.w, r4.zwzw
texld r7, r6, s6
add r5.w, r7.x, -c85.x
cmp r5.w, r5.w, c1.w, c1.y
texld r6, r6, s2
mad r5.xyz, r6, r5.w, r5
add r2.w, r2.w, r5.w
add r3.w, r3.w, c1.y
endrep

rcp r2.w, r2.w
mul r0.yz, r0, c183.xxyw//c44.xxyw
dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
rsq r0.y, r0.y
rcp r0.y, r0.y
mul r0.y, r0.y, c4.w
add r0.x, r0.x, c1.y
rcp r0.x, r0.x
mul_sat r0.x, r0.y, r0.x
mad r4.xyz, r5, r2.w, -r3
mad r0.xyz, r0.x, r4, r3
cmp r0.xyz, r1.w, r3, r0
cmp r0.xyz, -r0.w, r0, r1

texld r1, c0.x, s4
rcp r0.w, r1.x
mul r0.w, r0.w, c81.y
rcp r1.x, r0.w
mul r1.x, r1.x, c81.x
mad r1.xyz, r2, c66.x, -r1.x
max r2.xyz, r1, c0.x
mul r1.xyz, r2, c81.z
mul r1.xyz, r1, c1.x
mad r0.xyz, r0, c66.x, r1
mul r1.xyz, r0.w, r0
dp3 r1.x, r1, c0.yzww
mad r0.xyz, r0, r0.w, -r1.x
mad r0.xyz, c82.x, r0, r1.x
mul r0.w, r1.x, c84.w
mul r1.yzw, r0.w, c84.xxyz
mov_sat r2.x, r0.w
mad r0.xyz, c84, -r0.w, r0
mad r0.xyz, r2.x, r0, r1.yzww
mul r0.xyz, r0, c83
add r0.xyz, r0, r0
mov_sat r1.x, r1.x
add r0.w, -r8.y, c82.z
pow r2.x, r1.x, r0.w
//mul r2.x, r2.x, c181.x
mul oC0.xyz, r0, r2.x
mov oC0.w, c1.y

//texld r1, v0, s2
//mul oC0.xyz, r1, c199.z
};
}
}

[/spoiler]

Добавлено (2013-11-17, 21:37)
---------------------------------------------
Хочу что бы эти линзы работали вот в этом енбэффекте
[spoiler="Скрытый текст"]//++++++++++++++++++++++++++++++++++++++++++++
// ENBSeries effect file
// visit http://enbdev.com for updates
// Copyright 2010 © Boris Vorontsov
//L3EVO by gp65cj04 & lpf312
// Using decompiled shader of GTA4 game by
// Rockstar Games.
//++++++++++++++++++++++++++++++++++++++++++++

//NOTE: enable or disable these
//to disable, write // symbols before #define

int PixelSizeMultiplier = 1.005;
int DoF_TAPS = 30;

int MotionBlurSamples=23;
int MBSteps = 8; // Quality of Motion Blur
int MBAmount = -0.40; // Strength of Motion Blur

//overall for two methods:
float Adaptation = 1.265;
float EColorSaturation = 1.185;
float ColorBloom_Red = 1.1;
float ColorBloom_Green = 1;
float ColorBloom_Blue = 0.9;

float EBrightnessV1 = 4.50;
float EBloomAmountV1 = 0;
float EBloomAmountAdditiveV1 = 1;

float EBrightnessV2 = 0.5;
float EBloomAmountV2 = 0.04;
float EColoringV2 = 0.5;
float EDarkeningV2 = 0.4;

///////////////////////////////////////>--------------------------------------------------------:]
// sampler2D AdapLumSampler;
// sampler2D BloomSampler;
// float4 ColorCorrect;
// float4 ColorShift;
// float Exposure;
// sampler2D GBufferTextureSampler2;
// sampler2D GBufferTextureSampler3;
// sampler2D HDRSampler;
// sampler2D JitterSampler;
// float PLAYER_MASK;
// sampler2D StencilCopySampler;
// float4 TexelSize;
// float4 ToneMapParams;
// float4 deSatContrastGamma;
// float4 dofBlur;
// float4 dofDist;
// float4 dofProj;
// float gDirectionalMotionBlurLength;
// float4 globalScreenSize;
// row_major float4x4 motionBlurMatrix;
//
//
// Registers:
//
// Name Reg Size
// ---------------------------- ----- ----
// globalScreenSize c44 1
// Exposure c66 1
// motionBlurMatrix c72 4
// TexelSize c76 1
// dofProj c77 1
// dofDist c78 1
// dofBlur c79 1
// gDirectionalMotionBlurLength c80 1
// ToneMapParams c81 1
// deSatContrastGamma c82 1
// ColorCorrect c83 1
// ColorShift c84 1
// PLAYER_MASK c85 1
// GBufferTextureSampler2 s0 1
// GBufferTextureSampler3 s1 1
// HDRSampler s2 1
// BloomSampler s3 1
// AdapLumSampler s4 1
// JitterSampler s5 1
// StencilCopySampler s6 1

//quad
struct VS_OUTPUT_POST
{
float4 vpos : POSITION;
float2 txcoord0 : TEXCOORD0;
};
struct VS_INPUT_POST
{
float3 pos : POSITION;
float2 txcoord0 : TEXCOORD0;
};

//int4 _i0 : register(i0);

/*
float4 _c0 : register(c0);
float4 _c1 : register(c1);
float4 _c2 : register(c2);
float4 _c3 : register(c3);
float4 _c4 : register(c4);
float4 _c5 : register(c5);
float4 _c6 : register(c6);
*/
float4 _c44 : register(c44);
float4 _c66 : register(c66);
float4 _c72 : register(c72);
float4 _c73 : register(c73);
float4 _c74 : register(c74);
float4 _c75 : register(c75);
float4 _c76 : register(c76);
float4 _c77 : register(c77);
float4 _c78 : register(c78);
float4 _c79 : register(c79);
float4 _c80 : register(c80);
float4 _c81 : register(c81);
float4 _c82 : register(c82);
float4 _c83 : register(c83);
float4 _c84 : register(c84);
float4 _c85 : register(c85);

texture2D texs0 : register(s0);
texture2D texs1 : register(s1);
texture2D texs2 : register(s2);
texture2D texs3 : register(s3);
texture2D texs4 : register(s4);
texture2D texs5 : register(s5);
texture2D texs6 : register(s6);
texture2D texs7 : register(s7);
texture2D texs13 : register(s13);//palette
texture2D texs15 : register(s15);
//sampler2D s0=sampler_state { Texture=<texs0>; };
//sampler2D s1=sampler_state { Texture=<texs1>; };
sampler2D s2=sampler_state { Texture=<texs2>; };
//sampler2D s3=sampler_state { Texture=<texs3>; };
sampler2D s4=sampler_state { Texture=<texs4>; };
sampler2D s5=sampler_state { Texture=<texs5>; };
sampler2D s6=sampler_state { Texture=<texs6>; };
sampler2D s7=sampler_state { Texture=<texs7>; };
//sampler2D s13=sampler_state { Texture=<texs13>; };
sampler2D s15=sampler_state { Texture=<texs15>; };

//next samplers states fixing problems on ATI cards
sampler2D s0 = sampler_state
{
Texture = <texs0>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s1 = sampler_state
{
Texture = <texs1>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s3 = sampler_state
{
Texture = <texs3>;
MinFilter = LINEAR;//
MagFilter = LINEAR;//
MipFilter = NONE;//NONE;//LINEAR;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};

sampler2D s13 = sampler_state
{
Texture = <texs13>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
SRGBTexture=FALSE;
MaxMipLevel=0;
MipMapLodBias=0;
};
float4 texDistorted(sampler2D tex, float2 uv, float2 offset)
{

float4 color=0;
float3 distortion=float3(-0.01, 0.0, 0.01);
color.x=tex2D(tex, uv.xy + offset.xy * distortion.x).x;
color.y=tex2D(tex, uv.xy + offset.xy * distortion.y).y;
color.z=tex2D(tex, uv.xy + offset.xy * distortion.z).z;
color.w=1.0;

return color;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
float4 PS_C215BE6E(VS_OUTPUT_POST IN) : COLOR
{
float4 _oC0=0.0; //output

float4 _c0=float4(0, 0.212500006, 0.715399981, 0.0720999986);
float4 _c1=float4(0.25, 1, 256, 0);
float4 _c2=float4(0, 2, 4, 8);
float4 _c3=float4(58.1640015, 47.1300011, 0, 0);
float4 _c4=float4(-0.5, -1.5, 1.5, 0.5);
float4 _c5=float4(2, -1, 0.125, 0);
float4 _c6=float4(256, 2, 4, 8);
//mine
float4 _c7=float4(1.0, 0.1, 0.8, 1.0);
float4 _c8=float4(0.0, 0.1, 0.8, 0.333);
float4 _c9=float4(0.06, 0.1, 0.8, 0.1);
float4 _c10=float4(0.01, 1.4, 0.0, 0.32);
float4 _c11=float4(0.333333, 1.0, 0.0, 0.0);
float4 _c12=float4(0.27, 0.67, 0.06, 0.0);
float4 _c13=float4(0.0, 0.0, 0.0, 0.00001);
float4 _c150=float4(0.55, 0.9, 0.85, 0.9);
float4 _c195=float4(0.0, 0.0, 0.0, 0.07);//0.7

float4 r0;
float4 r1;
float4 r2;
float4 r3;
float4 r4;
float4 r5;
float4 r6;
float4 r7;
float4 r8;
float4 r9;
float4 r10;
float4 r11;

float4 _v0=0.0;
_v0.xy=IN.txcoord0.xy;

r0=tex2D(s1, _v0.xy); //GBufferTextureSampler3
r0.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r0.y=1.0/r0.y;
r0.z=r0.y * _c77.y; //dofProj.y
r0.z=r0.z * -_c77.x; //dofProj.x
r0.x=_c77.y * -r0.y + r0.x;
r0.x=1.0/r0.x;
r0.y=r0.z * r0.x;

r1=tex2D(s2, _v0.xy); //HDRSampler
r2=tex2D(s3, _v0.xy); //BloomSampler

r1*=10.0;

r0.w=abs(_c79.w);
r3=_c4; //-0.5, -1.5, 1.5, 0.5

float2 center;
float depth;
float focus;

depth=r0.z * r0.x - _c78.w; //dofDist.w
depth+=_c78.y * -r3.w; //dofDist.y
depth+=148;//offset
center.x=_v0.x-0.5;
center.y=0.5-_v0.y;
focus = length(center.xy)*1.41421;
focus = pow(focus,2);

float4 vDofParams = float4(-5, 2.5, 5000.0, 1.0);

r4=tex2D(s1, float2(0.5, 0.5)); //GBufferTextureSampler3
r4.y=-_c77.x + _c77.y; //-dofProj.x + dofProj.y
r4.y=1.0/r4.y;
r4.z=r4.y * _c77.y; //dofProj.y
r4.z=r4.z * -_c77.x; //dofProj.x
r4.x=_c77.y * -r4.y + r4.x;
r4.x=1.0/r4.x;
r4.y=r4.z * r4.x;

float cdepth;

cdepth=r4.z * r4.x - _c78.w; //dofDist.w
cdepth+=_c78.y * -r3.w; //dofDist.y
cdepth+=148;//offset

r4.w = tex2D(s0, float2(0.5, 0.5)).w;
if(r4.w > 0)
{
vDofParams.y = cdepth;
vDofParams.z = cdepth*4.0;
}

depth = max(depth, 0); //fix zoom bug
float dist;

if(depth < vDofParams.y)
dist = (depth - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
dist = (depth - vDofParams.y)/(vDofParams.z - vDofParams.y);
dist = clamp(dist, 0, vDofParams.w);
}

dist = dist * 0.5 + 0.5;

/*
static float3 poisson[24]=
{
float3(1.0, 0.0, 1.0000 ), //0 degrees
float3(0.0, -1.0, 1.0000 ),
float3(-1.0, 0.0, 1.0000 ),
float3(0.0, 1.0, 1.0000 ),

float3(0.7071, 0.7071, 1.0000 ), //45 degrees
float3(0.7071, 0.7071, 1.0000 ),
float3(-0.7071, -0.7071, 1.0000 ),
float3(-0.7071, 0.7071, 1.0000 ),

float3(0.9659, 0.2588, 1.0000 ), //15 degrees
float3(0.2588, -0.9659, 1.0000 ),
float3(-0.9659, -0.2588, 1.0000 ),
float3(-0.2588, 0.9659, 1.0000 ),

float3(0.8660, 0.5000, 1.0000 ), //60 degrees
float3(0.5000, -0.8660, 1.0000 ),
float3(-0.8660, -0.5000, 1.0000 ),
float3(-0.5000, 0.8660, 1.0000 ),

float3(0.5000, 0.8660, 1.0000 ), //30 degrees
float3(0.8660, -0.5000, 1.0000 ),
float3(-0.5000, -0.8660, 1.0000 ),
float3(-0.8660, 0.5000, 1.0000 ),

float3(0.2588, 0.9659, 1.0000 ), //75 degrees
float3(0.9659, -0.2588, 1.0000 ),
float3(-0.2588, -0.9659, 1.0000 ),
float3(-0.9659, 0.2588, 1.0000 ),
};
*/

static float3 poisson[60] =
{
float3( 0.2165, 0.1250, 1.0000 ),
float3( 0.0000, 0.2500, 1.0000 ),
float3( -0.2165, 0.1250, 1.0000 ),
float3( -0.2165, -0.1250, 1.0000 ),
float3( -0.0000, -0.2500, 1.0000 ),
float3( 0.2165, -0.1250, 1.0000 ),
float3( 0.4330, 0.2500, 1.0000 ),
float3( 0.0000, 0.5000, 1.0000 ),
float3( -0.4330, 0.2500, 1.0000 ),
float3( -0.4330, -0.2500, 1.0000 ),
float3( -0.0000, -0.5000, 1.0000 ),
float3( 0.4330, -0.2500, 1.0000 ),
float3( 0.6495, 0.3750, 1.0000 ),
float3( 0.0000, 0.7500, 1.0000 ),
float3( -0.6495, 0.3750, 1.0000 ),
float3( -0.6495, -0.3750, 1.0000 ),
float3( -0.0000, -0.7500, 1.0000 ),
float3( 0.6495, -0.3750, 1.0000 ),
float3( 0.8660, 0.5000, 1.0000 ),
float3( 0.0000, 1.0000, 1.0000 ),
float3( -0.8660, 0.5000, 1.0000 ),
float3( -0.8660, -0.5000, 1.0000 ),
float3( -0.0000, -1.0000, 1.0000 ),
float3( 0.8660, -0.5000, 1.0000 ),
float3( 0.2163, 0.3754, 0.8670 ),
float3( -0.2170, 0.3750, 0.8670 ),
float3( -0.4333, -0.0004, 0.8670 ),
float3( -0.2163, -0.3754, 0.8670 ),
float3( 0.2170, -0.3750, 0.8670 ),
float3( 0.4333, 0.0004, 0.8670 ),
float3( 0.4328, 0.5004, 0.8847 ),
float3( -0.2170, 0.6250, 0.8847 ),
float3( -0.6498, 0.1246, 0.8847 ),
float3( -0.4328, -0.5004, 0.8847 ),
float3( 0.2170, -0.6250, 0.8847 ),
float3( 0.6498, -0.1246, 0.8847 ),
float3( 0.6493, 0.6254, 0.9065 ),
float3( -0.2170, 0.8750, 0.9065 ),
float3( -0.8663, 0.2496, 0.9065 ),
float3( -0.6493, -0.6254, 0.9065 ),
float3( 0.2170, -0.8750, 0.9065 ),
float3( 0.8663, -0.2496, 0.9065 ),
float3( 0.2160, 0.6259, 0.8851 ),
float3( -0.4340, 0.5000, 0.8851 ),
float3( -0.6500, -0.1259, 0.8851 ),
float3( -0.2160, -0.6259, 0.8851 ),
float3( 0.4340, -0.5000, 0.8851 ),
float3( 0.6500, 0.1259, 0.8851 ),
float3( 0.4325, 0.7509, 0.8670 ),
float3( -0.4340, 0.7500, 0.8670 ),
float3( -0.8665, -0.0009, 0.8670 ),
float3( -0.4325, -0.7509, 0.8670 ),
float3( 0.4340, -0.7500, 0.8670 ),
float3( 0.8665, 0.0009, 0.8670 ),
float3( 0.2158, 0.8763, 0.9070 ),
float3( -0.6510, 0.6250, 0.9070 ),
float3( -0.8668, -0.2513, 0.9070 ),
float3( -0.2158, -0.8763, 0.9070 ),
float3( 0.6510, -0.6250, 0.9070 ),
float3( 0.8668, 0.2513, 0.9070 )
};

float2 pixelSizeHigh;
float2 pixelSizeLow;

//pixelSizeHigh.x = 1.005 / _c44.x;
//pixelSizeHigh.y = 1.005 / _c44.y;

pixelSizeHigh.x = 2.0 / _c44.x;
pixelSizeHigh.y = 2.0 / _c44.y;
pixelSizeHigh.xy *= PixelSizeMultiplier;
pixelSizeLow.xy = pixelSizeHigh.xy;

float2 vMaxCoC = float2(5.0, 10.0);

float radiusScale = 0.45;

float discRadius;
float discRadiusLow;
float centerDepth;
float4 tdepth;

float4 tapHigh;
float4 tapLow;

centerDepth = dist;

discRadius = abs(centerDepth * vMaxCoC.y - vMaxCoC.x);
discRadiusLow = discRadius * radiusScale;

r1 = 0.0;

for(int t = 0; t < DoF_TAPS; t++)
{
float2 coordLow = _v0.xy + (pixelSizeLow.xy * poisson[t].xy * discRadiusLow);
float2 coordHigh = _v0.xy + (pixelSizeHigh.xy * poisson[t].xy * discRadius);

tapLow = tex2D(s2, coordLow.xy) * poisson[t].z;
tapHigh = tex2D(s2, coordHigh.xy) * poisson[t].z;

tdepth = tex2D(s1, coordHigh.xy); //GBufferTextureSampler3
tdepth.y = -_c77.x + _c77.y; //-dofProj.x + dofProj.y
tdepth.y = 1.0 / tdepth.y;
tdepth.z = tdepth.y * _c77.y; //dofProj.y
tdepth.z = tdepth.z * -_c77.x; //dofProj.x
tdepth.x = _c77.y * -tdepth.y + tdepth.x;
tdepth.x = 1.0 / tdepth.x;

tdepth.w = tdepth.z * tdepth.x - _c78.w; //dofDist.w
tdepth.w += _c78.y * -r3.w; //dofDist.y
tdepth.w += 108;//offset

tdepth.w = max(tdepth.w, 0); //fix zoom bug

if(tdepth.w < vDofParams.y)
tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.y - vDofParams.x);
else
{
tapHigh.w = (tdepth.w - vDofParams.y)/(vDofParams.z - vDofParams.y);
tapHigh.w = clamp(tapHigh.w, 0, vDofParams.w);
}

tapHigh.w = tapHigh.w * 0.5 + 0.5;

tapLow.w = tapHigh.w;

float tapBlur = abs(tapHigh.w * 2.0 - 1.0);
float4 tap = lerp(tapHigh, tapLow, tapBlur);

if(tap.w >= centerDepth) tap.w = 1.0;
else tap.w = abs(tap.w * 2.0 - 1.0);

r1.xyz += tap.xyz * tap.w;
r1.w += tap.w;

}

r1.xyz /= r1.w;

//float4 dofcolor = r1;

//dofcolor.w = r1.w / DoF_TAPS;

//***************

r3=r1;
r0.x=15.0;

r4.x=_v0.y * _c5.x + _c5.y;
r4.y=_v0.x * _c5.x + _c5.y;
r4.z=_v0.y * _c5.x + _c5.y;

r0.z=r4.y * _c77.z; //dofProj.z
r0.z=r0.y * r0.z;
r1.w=-r4.x * _c77.w; //dofProj.w
r1.w=r0.y * r1.w;
r5.xyz=r1.w * _c73; //motionBlurMatrix.2
r5.xyz=r0.z * _c72 + r5; //motionBlurMatrix.1
r5.xyz=-r0.y * _c74 + r5; //motionBlurMatrix.3
r5.xyz=r5 + _c75; //motionBlurMatrix.4
r0.y=-r5.z * _c77.z; //dofProj.z
r0.y=1.0/r0.y;
r6.x=r5.x * r0.y;
r0.y=r5.z * _c77.w; //dofProj.w
r0.y=1.0/r0.y;
r6.y=r5.y * r0.y;
//r0.yz=-r4 + r6.xxyw;
r0.yz=-r4.yz + r6.xy;

//MOTION BLUR - MasterKontrol 2012
//r0.xy=r0.xyw * _c80.zxyw; //MK - This One = just landscape blur
r0.xy=r0.xy * _c80.wxyz; //MK - LAST
r0.z=r0.z * _c80.x; //MK - LAST
r0.w=r0.w * _c80.y; //MK - LAST
//r0.y=r0.y * _c80.x;
//r0.z=r0.z * _c80.x;

r4.xy=r0.yz * _c5.z;
r5=tex2D(s6, _v0.xy);
//r1.w=r5.xy * _c85.xy + -_c85.wzx; //Player Mask, MK - This One = just landscape blur
r1.w=r5.x + -_c85.xy; //Player Mask, MK - This one = all objects blur
//r1.w=r5.x - _c85.x;
r4.zw=r3.xy * _c2.w;
r4.zw=_v0.xy * _c3.xy + r4.zw;
r5=tex2D(s5, r4.zw);
r4.zw=r4.xy * (r5.x - 4) + _v0.xy;
r5.xyz=r3.xyz;
r2.w=_c1.y;
r3.w=_c1.y;

//MOTION BLUR STRENGTH - Masterkontrol 2012
for (int iii=0; iii<MBSteps; iii++)
{
r6.x=r4.x * r3.w + r4.z;
r6.y=r4.y * r3.w + r4.w;
r7=tex2D(s6, r6.xy);
r5.w=r7.x - _c85.x;
if (r5.w<MBAmount)
{
r5.w=_c1.y; //1.0
} else r5.w=_c1.w; //0.0
r6=tex2D(s2, r6.xy);
r5.xyz=r6.xyz * r5.w + r5.xyz;
r2.w=r2.w + r5.w;
r3.w=r3.w + _c1.y; //1.0
}

r2.w=1.0/r2.w;

//r0.yz=r0 * _c44.xxyw; //globalScreenSize
r0.y=r0.y * _c44.x; //globalScreenSize
r0.z=r0.z * _c44.y; //globalScreenSize

r0.y=dot(r0.yz, r0.yz)+_c0.x;//dp2

//r0.y=sqrt(r0.y);
//r0.y=1.0/r0.y;
r0.y=pow(r0.y, _c4.w); //0.5

r0.y=r0.y * _c4.w; //0.5
r0.x=r0.x + _c1.y; //1.0
r0.x=1.0/r0.x;
//r0.y is wrong
r0.x=saturate(r0.y * r0.x);
r4.xyz=r5 * r2.w - r3;
r0.xyz=r0.x * r4 + r3;

//_oC0.xyz=0.5*r0.xyz;

if (-r1.w<0.0) r0.xyz=r3.xyz;
if (-r0.w<0.0) r0.xyz=r1.xyz;

//for future use
r11=r0;

r1=tex2D(s4, _c0.x); //AdapLumSampler , 0.0
r0.w=1.0/r1.x;
r0.w=r0.w * _c81.y; //ToneMapParams.y
r1.x=1.0/r0.w;
r1.x=r1.x * _c81.x; //ToneMapParams.x
r1.xyz=r2 * _c66.x - r1.x; //Exposure.x
r2.xyz=max(r1, _c0.x); //0.0
r1.xyz=r2 * _c81.z; //ToneMapParams.z
r1.xyz=r1 * _c1.x; //0.25
r0.xyz=r0 * _c66.x + r1; //Exposure.x
r1.xyz=r0.w * r0;
r1.x=dot(r1.xyz, _c0.yzw); //0.2125, 0.7154, 0.0721
r0.xyz=r0 * r0.w - r1.x;
r0.xyz=_c82.x * r0 + r1.x; //deSatContrastGamma.x
r0.w=r1.x * _c84.w; //ColorShift.w
r1.yzw=r0.w * _c84.xxyz; //ColorShift

//darken as DarkeningAmount, but keeps colors
r2.x=saturate(r0.w);
r0.xyz=r0.xyz - _c84.xyz * r0.w; //ColorShift
r0.xyz=r2.x * r0.xyz + r1.yzww;

//coloring (green, brown, ...)
r0.xyz=2.0 * r0.xyz * _c83.xyz; //ColorCorrect

//keeps colors, changes luma
r1.x=saturate(r1.x);//luma
r0.w=_c82.z - _c1.y; //deSatContrastGamma.z - 1.0
r2.x=pow(r1.x, r0.w);

_oC0.xyz=r0.xyz * r2.x; //orig
_oC0.w=_c1.y; //1.0

r5=tex2D(s4, _c0.x);//adaptation luminance
//r5=1.0;

float4 color;
//r0=tex2D(s2, _v0.xy);//hdr color
color=r11; //FROM ORIGINAL CODE AFTER BLUR
float luma=0.27*color.r + 0.67*color.g + 0.06*color.b;

//adaptation
r5.w=r5.x;
r5.w=Adaptation/r5.w;
color.xyz=color.xyz * r5.w;
r3.xy=_c10.xwxw;
r3.xy=r3.xy * r5.w;

//increase color
float cgray=dot(color.xyz, 0.333);//luma
float adaptcolor=smoothstep(0.35, 1.0, 1.0 - r5.x)*0.1;
float adaptluma=smoothstep(0.35, 1.0, 1.0 - r5.x)*0;
float adaptcontrast=(1-smoothstep(0.35, 1.0, 1.0 - r5.x))*0;

float3 poweredcolor=pow(color.xyz, EColorSaturation + adaptcolor);
float newgray=dot(poweredcolor.xyz, 0.333);
color.xyz=poweredcolor.xyz*cgray/(newgray+0.0001);

float4 colorbloom=tex2D(s3, _v0.xy); //bloom

//HERE 0.15 is bloom factor 1, soft bloom
color=colorbloom * EBloomAmountV1 + color;
colorbloom.r*=ColorBloom_Red;
colorbloom.g*=ColorBloom_Green;
colorbloom.b*=ColorBloom_Blue;

//power from intensity

r10=dot(color.xyz, _c12.xyz); //luminance

r9.x=r10.x * EBrightnessV1;//c199.x;
r10.x=1.0/r10.x;
r10=r10 * r9.x;
color=color * r10.x;
color=color * _c7.y; //pre multiply
r1=color * _c7.z; //e multiply
r1=r1 + _c7.w;

color=color / (r1 + _c7.w); //+1.0

//HERE 0.8 is bloom for additive mix
color=EBloomAmountAdditiveV1*colorbloom * r3.x + color;

//luma=saturate(dot(color.xyz, _c12.xyz));
//color.xyz*=pow(luma, -adaptluma);

//color.xyz=(_v0.x < 0.95) ? color.xyz : adaptcolor;

float4 decontrastcolor=2.0*color - color*color*(3.0 - 2.0*color);
color.xyz=lerp(color.xyz, decontrastcolor.xyz, adaptcontrast);

//Palette
//pallete texture (0.082 version feature)
#ifdef E_CC_PALETTE
r0.rgb=saturate(r0.rgb);
float3 brightness=0.001;//tex2D(s4, _c0.x);//adaptation luminance
brightness=brightness;
float3 palette;
float4 uvsrc=0.0;
uvsrc.y=brightness.r;
uvsrc.x=r0.r;
palette.r=tex2Dlod(s13, uvsrc).r;
uvsrc.x=r0.g;
uvsrc.y=brightness.g;
palette.g=tex2Dlod(s13, uvsrc).g;
uvsrc.x=r0.b;
uvsrc.y=brightness.b;
palette.b=tex2Dlod(s13, uvsrc).b;
r0.rgb=palette.rgb;
#endif //E_CC_PALETTE

if (_v0.y <0.0115)

{

color.xyz = 0;

}

if (_v0.y >0.985)

{

color.xyz = 0;

}
_oC0.xyz=color.xyz;

//_oC0.w=1.0;
return _oC0;
}

//mine temporary post process
technique Shader_C215BE6E
{
pass p0
{
PixelShader = compile ps_3_0 PS_C215BE6E();
}
}

//original shader of post processing
technique Shader_ORIGINALPOSTPROCESS
{
pass p0
{

PixelShader=
asm
{

ps_3_0
def c0, 0, 0.212500006, 0.715399981, 0.0720999986
def c1, 0.25, 1, 256, 0
def c2, 0, 2, 4, 8
def c3, 58.1640015, 47.1300011, 0, 0
def c4, -0.5, -1.5, 1.5, 0.5
def c5, 2, -1, 0.125, 0
def c6, 256, 2, 4, 8
def c180, 0.0, 0.0, 0.0, 100.5
def c181, 1.0, 0.0, 0.0, 20.01
def c183, 800.0, 600.0, 0.0, 100.5
defi i0, 7, 0, 0, 0
dcl_texcoord v0.xy
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_2d s4
dcl_2d s5
dcl_2d s6
texld r0, v0, s1
add r0.y, -c77.x, c77.y
rcp r0.y, r0.y
mul r0.z, r0.y, c77.y
mul r0.z, r0.z, -c77.x
mad r0.x, c77.y, -r0.y, r0.x
rcp r0.x, r0.x
mul r0.y, r0.z, r0.x
texld r1, v0, s2
texld r2, v0, s3
abs r0.w, c79.w
mov r3, c4
mad r4.xy, c76, r3, v0
texld r4, r4, s2
mad r5.xy, c76, r3.zxzw, v0
texld r5, r5, s2
mad r3.xz, c76.xyyw, r3.wyzw, v0.xyyw
texld r6, r3.xzzw, s2
mad r3.xy, c76, r3.ywzw, v0
texld r7, r3, s2
dp3 r1.w, r4, r4
rcp r1.w, r1.w
cmp r3.xyz, -r1.w, c0.x, r4
dp3 r1.w, r5, r5
rcp r1.w, r1.w
cmp r4.xyz, -r1.w, c0.x, r5
dp3 r1.w, r6, r6
rcp r1.w, r1.w
cmp r5.xyz, -r1.w, c0.x, r6
dp3 r1.w, r7, r7
rcp r1.w, r1.w
cmp r6.xyz, -r1.w, c0.x, r7
dp3 r1.w, r1, r1
rcp r1.w, r1.w
cmp r7.xyz, -r1.w, c0.x, r1
mad r0.x, r0.z, r0.x, -c78.w
mad r0.x, c78.y, -r3.w, r0.x
max r1.w, r0.x, c0.x
rcp r0.x, c78.z
mul r0.x, r1.w, r0.x
lrp r1.w, r0.x, c79.z, c79.y
min r0.x, c79.z, r1.w
dp3 r0.z, r7, c0.yzww
dp3 r8.x, r3, c0.yzww
dp3 r8.y, r4, c0.yzww
dp3 r8.z, r5, c0.yzww
dp3 r8.w, r6, c0.yzww
dp4 r1.w, r8, c1.x
add r8, r8, -r1.w
dp4 r2.w, r8, r8
add r0.z, r0.z, -r1.w
mad r0.z, r0.z, r0.z, -r2.w
mul r0.x, r0.x, r0.x
cmp r0.x, r0.z, c1.y, r0.x
texld r8, v0, s0
mov r8.yz, c1
mad r9, r8.w, -r8.z, c2
cmp r9, r9, c1.y, c1.w
mad r10, r8.w, -c6.x, c6.yzwx
cmp r10, r10, -c1.y, -c1.w
add r9, r9, r10
mul r9, r9, c4.x
dp4 r0.z, r9, c1.y
add r0.z, r0.z, c4.w
rcp r0.z, r0.z
mul r8.xzw, r3.xyyz, r9.x
mad r7.xyz, r7, c4.w, r8.xzww
mad r7.xyz, r4, r9.y, r7
mad r7.xyz, r5, r9.z, r7
mad r7.xyz, r6, r9.w, r7
mul r7.xyz, r0.z, r7
add r0.z, -r0.x, c1.y
mul r1.w, r0.x, c1.x
mul r3.xyz, r3, r1.w
mad r3.xyz, r7, r0.z, r3
mad r3.xyz, r4, r1.w, r3
mad r3.xyz, r5, r1.w, r3
mad r3.xyz, r6, r1.w, r3
mad r4.xyz, v0.yxyw, c5.x, c5.y
mul r0.z, r4.y, c77.z
mul r0.z, r0.y, r0.z
mul r1.w, -r4.x, c77.w
mul r1.w, r0.y, r1.w
mul r5.xyz, r1.w, c73
mad r5.xyz, r0.z, c72, r5
mad r5.xyz, -r0.y, c74, r5
add r5.xyz, r5, c75
mul r0.y, -r5.z, c77.z
rcp r0.y, r0.y
mul r6.x, r5.x, r0.y
mul r0.y, r5.z, c77.w
rcp r0.y, r0.y
mul r6.y, r5.y, r0.y
add r0.yz, -r4, r6.xxyw
mul r0.yz, r0, c80.x
mul r4.xy, r0.yzzw, c5.z
texld r5, v0, s6
add r1.w, r5.x, -c85.x
mul r4.zw, r3.xyxy, c2.w
mad r4.zw, v0.xyxy, c3.xyxy, r4
texld r5, r4.zwzw, s5
add r2.w, r5.x, c4.x
mad r4.zw, r4.xyxy, r2.w, v0.xyxy
mov r5.xyz, r3
mov r2.w, c1.y
mov r3.w, c1.y

rep i0
mad r6.xy, r4, r3.w, r4.zwzw
texld r7, r6, s6
add r5.w, r7.x, -c85.x
cmp r5.w, r5.w, c1.w, c1.y
texld r6, r6, s2
mad r5.xyz, r6, r5.w, r5
add r2.w, r2.w, r5.w
add r3.w, r3.w, c1.y
endrep

rcp r2.w, r2.w
mul r0.yz, r0, c183.xxyw//c44.xxyw
dp2add r0.y, r0.yzzw, r0.yzzw, c0.x
rsq r0.y, r0.y
rcp r0.y, r0.y
mul r0.y, r0.y, c4.w
add r0.x, r0.x, c1.y
rcp r0.x, r0.x
mul_sat r0.x, r0.y, r0.x
mad r4.xyz, r5, r2.w, -r3
mad r0.xyz, r0.x, r4, r3
cmp r0.xyz, r1.w, r3, r0
cmp r0.xyz, -r0.w, r0, r1

texld r1, c0.x, s4
rcp r0.w, r1.x
mul r0.w, r0.w, c81.y
rcp r1.x, r0.w
mul r1.x, r1.x, c81.x
mad r1.xyz, r2, c66.x, -r1.x
max r2.xyz, r1, c0.x
mul r1.xyz, r2, c81.z
mul r1.xyz, r1, c1.x
mad r0.xyz, r0, c66.x, r1
mul r1.xyz, r0.w, r0
dp3 r1.x, r1, c0.yzww
mad r0.xyz, r0, r0.w, -r1.x
mad r0.xyz, c82.x, r0, r1.x
mul r0.w, r1.x, c84.w
mul r1.yzw, r0.w, c84.xxyz
mov_sat r2.x, r0.w
mad r0.xyz, c84, -r0.w, r0
mad r0.xyz, r2.x, r0, r1.yzww
mul r0.xyz, r0, c83
add r0.xyz, r0, r0
mov_sat r1.x, r1.x
add r0.w, -r8.y, c82.z
pow r2.x, r1.x, r0.w
//mul r2.x, r2.x, c181.x
mul oC0.xyz, r0, r2.x
mov oC0.w, c1.y

//texld r1, v0, s2
//mul oC0.xyz, r1, c199.z
};
}
}

[/spoiler]

Вот палитра
[spoiler="палитра"][/spoiler]



My Gallery
Самое большое заблуждение детства - мы думали, что быть взрослыми здорово...
 
offline
 Vitos
Дата: Воскресенье, 2013-11-17, 22:09 | Сообщение # 537
Гангстер
Сообщений: 569
Да кстати, можно ли грязные линзы запилить в эффект от дп3?
 
offline
 portal-2x2
Дата: Понедельник, 2013-11-18, 06:10 | Сообщение # 538
Гангстер
Сообщений: 1253
Vitos, Его куда угодно можно запихнуть. Делай все по пунктам и обязательно прокатит.
1- С верху енбэффекта где все переменные суешь это :
float DirtyLensEffect = 3.5;
#define BLOOM_DISTORTION
float BloomDAmount = 0.25;
2- Ищешь у себя строчку :
float4 (имя блума) tex2D(s3, _v0.xy); и сразу под нее вставляешь этот код, чаще всего строчка называется colorbloom, или народная r7.
//////////////////////////////////////////////////////
float4 dirtPaletteTex=tex2D(s13, _v0.xy);
float4 uvsrc=0.0;
float3 lensDirt=dirtPaletteTex.xyz;
#ifdef BLOOM_DISTORTION
блум.r=tex2D(s3, _v0.xy + BloomDAmount * -0.01).x;
блум.g=tex2D(s3, _v0.xy + BloomDAmount * 0).y;
блум.b=tex2D(s3, _v0.xy + BloomDAmount * 0.01).z;
блум = r5.x * блум;
//#else
//блум = tex2D(s3, _v0.xy);//float2(0.5,0.5) * _v0.xy);
#endif
блум.xyz+=блум.xyz*lensDirt.xyz*DirtyLensEffect;
цвет += 0.15 * блум;
3- То что помечено строчкой "блум" имеет название которое у тебя под пунктом 2-.
4- То что помечено строчкой "цвет" имеет название либо color либо r0 в енбэффекте.
5- В енб.ини включаешь использование палитры.
6- Если енбэффект уже ранее использовал палитру (ее код нужно удалить).
Код простой палитры удаляется просто :
Находим строчку #ifdef ECC_PALETTE и ставим перед ней /* (пример /*#ifdef ECC_PALETTE)
Далее чуть ниже мотаем и видим #endif //ECC_PALETTE и ставим уже после этой строчки */ Тем самым закрывая (отключая код).
В некоторых енбэффектах этих строчек нету, а в место них идет напрямую код. В таком случае мы
просто ищем опять же таки нужную строчку и закрываем код, именно с этих строчек начинается код :
r0.rgb=saturate(r0.rgb);
float3 brightness=0.0001;
Также закрываем его /* код шейдера */ Нечего сложного :) Останется только запихнуть в папку с игрой нужную линзу (enbpalette.bmp) И можно играть.

Добавлено (2013-11-18, 06:10)
---------------------------------------------
Не удержавшись решил убить двух зайцев, взял себе этот код, и смешал лучи в блуме, очень даже не плохо получается.
[spoiler="Скриншоты"]

http://fotki.yandex.ru/users/gabe-2x2/view/916430/

http://fotki.yandex.ru/users/gabe-2x2/view/916431/
[/spoiler]
Лучи статичные, но пока еще нужно дорабатывать, зато не жрут фпс. Из багов только то что они идут от ярких предметов типа белой машины, но это можно поправить.
Скачать блум можно тут. http://rghost.ru/50252901



GA-Z87X-OC,32gb DDRIII 2.4ghz,I7 4770k,Corsair H100i,GTX 690,SSD 256gb, 2XWD Velociraptor 1tb, Corsair RM1000w, Corsair Obsidian 900D
46.174.54.213:55555 CSS
 
offline
 dax1
Дата: Понедельник, 2013-11-18, 06:46 | Сообщение # 539
Гангстер
Сообщений: 112
вот видео с лучами
[spoiler="только требуется настроить"][/spoiler]
portal-2x2, молоток, давно не было ни чего нового, то что реально видно без лупы.


Я счастлив по умолчанию! Пожалуйста, не лезьте в настройки.
 
offline
 portal-2x2
Дата: Понедельник, 2013-11-18, 07:11 | Сообщение # 540
Гангстер
Сообщений: 1253
dax1, Спс. Но за это девелоперов невидии благодорить надо, по большей степени crazy Тебе нужно уменьшать экспосьюр до 0.05 гдето, также лучи реагируют на любые другие параметры связанные с освещением, будь то лайтспрайты или блум от окон. ЗЫ видео опять в 360.


GA-Z87X-OC,32gb DDRIII 2.4ghz,I7 4770k,Corsair H100i,GTX 690,SSD 256gb, 2XWD Velociraptor 1tb, Corsair RM1000w, Corsair Obsidian 900D
46.174.54.213:55555 CSS


Сообщение отредактировал portal-2x2 - Понедельник, 2013-11-18, 07:13
 
Форум GtaMania.ru » Общение » Свободный форум » ENB Series GTA 4 (Часть V) (Ваши настройки, инструкции, вопросы и т.д.)
Страница 36 из 174«123435363738173174»
Поиск:

Реклама:
GtaMania.ru - это открытый ресурс, позволяющий публиковать материалы любому пользователю сети интернет. Администрация не несет ответственности за опубликованные пользователями материалы. Любой материал может быть удален по просьбе автора, при предъявлении сканированных копий документов подтверждающих авторские права на конкретный материал.
При копировании материалов, гиперссылка на http://gtamania.ru/ ОБЯЗАТЕЛЬНА!
| Design by SandWicH | Copyright GtaMania.ru © 2008 - 2016
Rambler's Top100