Author Topic: Pixel shader effects for FS2_open (DL)  (Read 20103 times)

0 Members and 1 Guest are viewing this topic.

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
Perhaps you disable the HDRish effect ^^
So, i try the Motion Blur , the Ghost.pss from the pssEffect.zip and The blur are everywhere.
But, they are too many that after 5 min playing with these, i got a headack.

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
I think I've found the problem. But test the small pice of code before I post the fixed code.
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
I've just tested and Fs 2 crashes too :\

 

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
I notice nothing new in the TBP 3.0.

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
Ok, last try for now:

Code: [Select]

shader samplePixelShader =
"!!ARBfp1.0

TEMP Temp;

TEX result.color, fragment.texcoord[0], texture[0], 2D;

END";

shader gaussianXPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[3]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader gaussianYPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[3]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader outputPixelShader =
"!!ARBfp1.0

PARAM thresh = {0.5, 0.5, 0.5, 0.5};

TEMP back, blur, temp;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;

ADD blur, blur, blur;
 
SUB temp, back, thresh;

KIL blur;

ADD result.color, back, blur;

END";


surface blur0 = allocsurf(width/4, height/4);
surface blur1 = allocsurf(width/4, height/4);

gaussianXPixelShader.constant[ 0] = { (4.0*ds_dx)* 1.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 1] = { (4.0*ds_dx)* 3.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 2] = { (4.0*ds_dx)* 5.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 3] = { (4.0*ds_dx)* 7.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 4] = { (4.0*ds_dx)* 9.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 5] = { (4.0*ds_dx)*11.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 6] = { (4.0*ds_dx)*13.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 7] = { (4.0*ds_dx)*15.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 8] = { (4.0*ds_dx)*17.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 9] = { (4.0*ds_dx)*19.45, 0, 0, 0 };
gaussianXPixelShader.constant[10] = { (4.0*ds_dx)*21.45, 0, 0, 0 };

gaussianYPixelShader.constant[ 0] = { 0, (4.0*dt_dy)* 1.45, 0, 0 };
gaussianYPixelShader.constant[ 1] = { 0, (4.0*dt_dy)* 3.45, 0, 0 };
gaussianYPixelShader.constant[ 2] = { 0, (4.0*dt_dy)* 5.45, 0, 0 };
gaussianYPixelShader.constant[ 3] = { 0, (4.0*dt_dy)* 7.45, 0, 0 };
gaussianYPixelShader.constant[ 4] = { 0, (4.0*dt_dy)* 9.45, 0, 0 };
gaussianYPixelShader.constant[ 5] = { 0, (4.0*dt_dy)*11.45, 0, 0 };
gaussianYPixelShader.constant[ 6] = { 0, (4.0*dt_dy)*13.45, 0, 0 };
gaussianYPixelShader.constant[ 7] = { 0, (4.0*dt_dy)*15.45, 0, 0 };
gaussianYPixelShader.constant[ 8] = { 0, (4.0*dt_dy)*17.45, 0, 0 };
gaussianYPixelShader.constant[ 9] = { 0, (4.0*dt_dy)*19.45, 0, 0 };
gaussianYPixelShader.constant[10] = { 0, (4.0*dt_dy)*21.45, 0, 0 };

texture[0].magfilter = "linear";

texture[0].source = backbuffer;
destination blur0;
apply samplePixelShader;

texture[0].source = blur0;
destination blur1;
apply gaussianXPixelShader;

texture[0].source = blur1;
destination blur0;
apply gaussianYPixelShader;

texture[0].source =  blur0;
texture[1].source =  backbuffer;
destination backbuffer;
apply outputPixelShader;
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
Nothing new in TBP 3.0 and it crashes Fs2_open when playing a fs2 mission.

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
I've absolutely no hope this one will work:
Code: [Select]

shader samplePixelShader =
"!!ARBfp1.0

TEMP Temp;

TEX result.color, fragment.texcoord[0], texture[0], 2D;

END";

shader gaussianXPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.182008, 0.116053, 0.073999, 0.047184 },
{ 0.030086, 0.019183, 0.012232, 0.007799 },
{ 0.004973, 0.003171, 0.002022, 0.001289 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader gaussianYPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.182008, 0.116053, 0.073999, 0.047184 },
{ 0.030086, 0.019183, 0.012232, 0.007799 },
{ 0.004973, 0.003171, 0.002022, 0.001289 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader outputPixelShader =
"!!ARBfp1.0

TEMP back, blur;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;

ADD blur, blur, blur;
ADD result.color, back, blur;

END";

surface blur0 = allocsurf(width/5, height/5);
surface blur1 = allocsurf(width/5, height/5);

gaussianXPixelShader.constant[ 0] = { (4.0*ds_dx)* 1.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 1] = { (4.0*ds_dx)* 3.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 2] = { (4.0*ds_dx)* 5.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 3] = { (4.0*ds_dx)* 7.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 4] = { (4.0*ds_dx)* 9.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 5] = { (4.0*ds_dx)*11.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 6] = { (4.0*ds_dx)*13.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 7] = { (4.0*ds_dx)*15.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 8] = { (4.0*ds_dx)*17.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 9] = { (4.0*ds_dx)*19.45, 0, 0, 0 };
gaussianXPixelShader.constant[10] = { (4.0*ds_dx)*21.45, 0, 0, 0 };

gaussianYPixelShader.constant[ 0] = { 0, (4.0*dt_dy)* 1.45, 0, 0 };
gaussianYPixelShader.constant[ 1] = { 0, (4.0*dt_dy)* 3.45, 0, 0 };
gaussianYPixelShader.constant[ 2] = { 0, (4.0*dt_dy)* 5.45, 0, 0 };
gaussianYPixelShader.constant[ 3] = { 0, (4.0*dt_dy)* 7.45, 0, 0 };
gaussianYPixelShader.constant[ 4] = { 0, (4.0*dt_dy)* 9.45, 0, 0 };
gaussianYPixelShader.constant[ 5] = { 0, (4.0*dt_dy)*11.45, 0, 0 };
gaussianYPixelShader.constant[ 6] = { 0, (4.0*dt_dy)*13.45, 0, 0 };
gaussianYPixelShader.constant[ 7] = { 0, (4.0*dt_dy)*15.45, 0, 0 };
gaussianYPixelShader.constant[ 8] = { 0, (4.0*dt_dy)*17.45, 0, 0 };
gaussianYPixelShader.constant[ 9] = { 0, (4.0*dt_dy)*19.45, 0, 0 };
gaussianYPixelShader.constant[10] = { 0, (4.0*dt_dy)*21.45, 0, 0 };

texture[0].magfilter = "linear";

texture[0].source = backbuffer;
destination blur0;
apply samplePixelShader;

texture[0].source = blur0;
destination blur1;
apply gaussianXPixelShader;

texture[0].source = blur1;
destination blur0;
apply gaussianYPixelShader;

texture[0].source =  blur0;
texture[1].source =  backbuffer;
destination backbuffer;
apply outputPixelShader;
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by DaBrain
Ok, last try for now:
 


This one's effect is similar to the original HDRish.pss   It does work. I'll test the rest, soon.
Freelance Modeler | Amateur Artist

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by DaBrain
The other files from the zip will have other effects.
But I think HDRish is the best.

I really don't understad why this doesn't work.
 :(


The last code should at least give some result.

Edit: Please try this one:
Code: [Select]
shader outputPixelShader =
"!!ARBfp1.0

# threshold for tag shader (try different values)
PARAM thresh = {0.5, 0.5, 0.5, 0.5};

TEMP back, blur, temp;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;

ADD blur, blur, blur;

# subtract threshold value from the 'back' value
SUB temp, back, thresh;

# if temp value is smaller than threshold, kill fragment
KIL blur;

ADD result.color, back, blur;

END";



If this works I'll replace the blurs with gaussian filters. [/B]



This one makes everything look like stock, until a very bright highlight is shown, when it blooms. I like this one, so far. :)


...edit. Actually. I'm not seeing a difference in game, where aws I was in the tech room. Perhaps my mind id decieveing me.
« Last Edit: January 07, 2005, 11:21:32 am by 273 »
Freelance Modeler | Amateur Artist

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
That's good news. ;)

Well, then this might work too.
It detects darker parts and will not add blooom to them.
It's also a little test of reducing the gaussian size again.
But this time a bit more.

(I think I've broken the total sum, but I think that's ok, as it worked before with an altered total sum.)

BTW the code I've posted before may have a similar outcome, but it's not exactly the same the HDRish.pss.
I've increased the surface size, to see what happens. I think the boom quality (detail) should be higher.

I think I'll try higher values (8x8) later. But I'm sure that this will affect the performance.

Code: [Select]

shader samplePixelShader =
"!!ARBfp1.0

TEMP Temp;

TEX result.color, fragment.texcoord[0], texture[0], 2D;

END";

shader gaussianXPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.3, 0.2, 1, 0.0 },
{ 0.03, 0.02, 0.01, 0.0 },
{ 0.003, 0.002, 0.001, 0.0 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader gaussianYPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.3, 0.2, 1, 0.0 },
{ 0.03, 0.02, 0.01, 0.0 },
{ 0.003, 0.002, 0.001, 0.0 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader outputPixelShader =
"!!ARBfp1.0

TEMP back, blur;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;

ADD blur, blur, blur;

SUB temp, back, thresh;

KIL blur;

ADD result.color, back, blur;

END";

surface blur0 = allocsurf(width/5, height/5);
surface blur1 = allocsurf(width/5, height/5);

gaussianXPixelShader.constant[ 0] = { (4.0*ds_dx)* 1.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 1] = { (4.0*ds_dx)* 3.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 2] = { (4.0*ds_dx)* 5.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 3] = { (4.0*ds_dx)* 7.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 4] = { (4.0*ds_dx)* 9.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 5] = { (4.0*ds_dx)*11.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 6] = { (4.0*ds_dx)*13.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 7] = { (4.0*ds_dx)*15.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 8] = { (4.0*ds_dx)*17.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 9] = { (4.0*ds_dx)*19.45, 0, 0, 0 };
gaussianXPixelShader.constant[10] = { (4.0*ds_dx)*21.45, 0, 0, 0 };

gaussianYPixelShader.constant[ 0] = { 0, (4.0*dt_dy)* 1.45, 0, 0 };
gaussianYPixelShader.constant[ 1] = { 0, (4.0*dt_dy)* 3.45, 0, 0 };
gaussianYPixelShader.constant[ 2] = { 0, (4.0*dt_dy)* 5.45, 0, 0 };
gaussianYPixelShader.constant[ 3] = { 0, (4.0*dt_dy)* 7.45, 0, 0 };
gaussianYPixelShader.constant[ 4] = { 0, (4.0*dt_dy)* 9.45, 0, 0 };
gaussianYPixelShader.constant[ 5] = { 0, (4.0*dt_dy)*11.45, 0, 0 };
gaussianYPixelShader.constant[ 6] = { 0, (4.0*dt_dy)*13.45, 0, 0 };
gaussianYPixelShader.constant[ 7] = { 0, (4.0*dt_dy)*15.45, 0, 0 };
gaussianYPixelShader.constant[ 8] = { 0, (4.0*dt_dy)*17.45, 0, 0 };
gaussianYPixelShader.constant[ 9] = { 0, (4.0*dt_dy)*19.45, 0, 0 };
gaussianYPixelShader.constant[10] = { 0, (4.0*dt_dy)*21.45, 0, 0 };

texture[0].magfilter = "linear";

texture[0].source = backbuffer;
destination blur0;
apply samplePixelShader;

texture[0].source = blur0;
destination blur1;
apply gaussianXPixelShader;

texture[0].source = blur1;
destination blur0;
apply gaussianYPixelShader;

texture[0].source =  blur0;
texture[1].source =  backbuffer;
destination backbuffer;
apply outputPixelShader;
« Last Edit: January 07, 2005, 11:29:05 am by 1688 »
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by Raa



This one makes everything look like stock, until a very bright highlight is shown, when it blooms. I like this one, so far. :)


...edit. Actually. I'm not seeing a difference in game, where aws I was in the tech room. Perhaps my mind id decieveing me.


No crash? Perfect! That's even better.


Edit: Let's play a bit around with this one.

Code: [Select]

shader outputPixelShader =
"!!ARBfp1.0

# threshold for tag shader (try different values)
PARAM thresh = {0.25, 0.25, 0.25, 0.25};

TEMP back, blur, temp;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;

ADD blur, blur, blur;

# subtract threshold value from the 'back' value
SUB temp, back, thresh;

# if temp value is smaller than threshold, kill fragment
KIL blur;

ADD result.color, back, blur;

END";
« Last Edit: January 07, 2005, 11:34:05 am by 1688 »
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Well, id doesn't crash anything (I suspect those crashes where their PCor version of FSO''s fault. Or that they are using newer cats, and support hasn't been continued for them. Or even that the memory leak that was mentioned on that other forum applies to them, and not to 4.4 )


In either case, it doesn't really do anything.
Freelance Modeler | Amateur Artist

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
If the second version doesn't have any effect too, try to remove the SUB line. If that doesn't work also, there is something wrong in the first lines.
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Ok, removing sub makes it a bit more pronounced. Do you think you could get the blur to overshoot the model a little bit, though? As it is, it's not gaussian enough.
Freelance Modeler | Amateur Artist

 

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by Raa
Well, id doesn't crash anything (I suspect those crashes where their PCor version of FSO''s fault. Or that they are using newer cats, and support hasn't been continued for them. Or even that the memory leak that was mentioned on that other forum applies to them, and not to 4.4 )


In either case, it doesn't really do anything.


Hmmm, Rhaa which version of fso and Cat do you use ?

I try 3 exe, the 01032005, the 12302005 and another one i forgot.
I use the latest Media VP 3.6.5.

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
Well, uhm... I've added the gaussian filters again.

And I've left out the sampleshader.

So it could work. But perhaps I'll have to reorganize the structure.

Code: [Select]

shader gaussianXPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader gaussianYPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader outputPixelShader =
"!!ARBfp1.0

# threshold for tag shader (try different values)
PARAM thresh = {0.5, 0.5, 0.5, 0.5};

TEMP back, blur, temp;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;


ADD blur, blur, blur;


# if temp value is smaller than threshold, kill fragment
KIL blur;

ADD result.color, back, blur;

END";

surface blur0 = allocsurf(width/4, height/4);
surface blur1 = allocsurf(width/4, height/4);

gaussianXPixelShader.constant[ 0] = { (4.0*ds_dx)* 1.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 1] = { (4.0*ds_dx)* 3.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 2] = { (4.0*ds_dx)* 5.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 3] = { (4.0*ds_dx)* 7.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 4] = { (4.0*ds_dx)* 9.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 5] = { (4.0*ds_dx)*11.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 6] = { (4.0*ds_dx)*13.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 7] = { (4.0*ds_dx)*15.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 8] = { (4.0*ds_dx)*17.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 9] = { (4.0*ds_dx)*19.45, 0, 0, 0 };
gaussianXPixelShader.constant[10] = { (4.0*ds_dx)*21.45, 0, 0, 0 };

gaussianYPixelShader.constant[ 0] = { 0, (4.0*dt_dy)* 1.45, 0, 0 };
gaussianYPixelShader.constant[ 1] = { 0, (4.0*dt_dy)* 3.45, 0, 0 };
gaussianYPixelShader.constant[ 2] = { 0, (4.0*dt_dy)* 5.45, 0, 0 };
gaussianYPixelShader.constant[ 3] = { 0, (4.0*dt_dy)* 7.45, 0, 0 };
gaussianYPixelShader.constant[ 4] = { 0, (4.0*dt_dy)* 9.45, 0, 0 };
gaussianYPixelShader.constant[ 5] = { 0, (4.0*dt_dy)*11.45, 0, 0 };
gaussianYPixelShader.constant[ 6] = { 0, (4.0*dt_dy)*13.45, 0, 0 };
gaussianYPixelShader.constant[ 7] = { 0, (4.0*dt_dy)*15.45, 0, 0 };
gaussianYPixelShader.constant[ 8] = { 0, (4.0*dt_dy)*17.45, 0, 0 };
gaussianYPixelShader.constant[ 9] = { 0, (4.0*dt_dy)*19.45, 0, 0 };
gaussianYPixelShader.constant[10] = { 0, (4.0*dt_dy)*21.45, 0, 0 };

texture[0].magfilter = "linear";


texture[0].source = blur0;
destination blur1;
apply gaussianXPixelShader;

texture[0].source = blur1;
destination blur0;
apply gaussianYPixelShader;

texture[0].source =  blur0;
texture[1].source =  backbuffer;
destination backbuffer;
apply outputPixelShader;
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by MetalDestroyer


Hmmm, Rhaa which version of fso and Cat do you use ?

I try 3 exe, the 01032005, the 12302005 and another one i forgot.
I use the latest Media VP 3.6.5.


20050103 - exe
Cat 4.4
No media VP's I assemble my owb effects, so I have freespace looking exactly how I want it to look, and not how everyone else likes. :)


@DaB - Not a big effect there... See?
Freelance Modeler | Amateur Artist

 

Offline MetalDestroyer

  • Starwars reborn!
  • 210
Pixel shader effects for FS2_open (DL)
:( I try all the Dabrain version and all make Fs1_open crashes except his first modif.
And if i run his modif into TBP 3.0 i see no difference with the original version of TBP. :(

 

Offline DaBrain

  • Screensniper
  • 212
    • Shadows of Lylat board
Pixel shader effects for FS2_open (DL)
Quote
Originally posted by Raa


20050103 - exe
Cat 4.4
No media VP's I assemble my owb effects, so I have freespace looking exactly how I want it to look, and not how everyone else likes. :)


@DaB - Not a big effect there... See?



Ok, looks like it won't work without the sampleshader.

Well, ok. I've readded the entries:

Code: [Select]
shader samplePixelShader =
"!!ARBfp1.0

TEMP Temp;

TEX result.color, fragment.texcoord[0], texture[0], 2D;

END";

shader gaussianXPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader gaussianYPixelShader =
"!!ARBfp1.0

PARAM Offset[11]={ program.local[0..10] };

PARAM Weight[2]=
{
{ 0.2056, 0.13455275, 0.05549925, 0.023592 },
{ 0.0339855, 0.022268, 0.009174, 0.0038995 },
{ 0.0056175, 0.0036765, 0.0015165, 0.0006445 }
};

TEMP s0, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;

ADD r0,  -Offset[10], fragment.texcoord[0];
ADD r1,  -Offset[ 9], fragment.texcoord[0];
ADD r2,  -Offset[ 8], fragment.texcoord[0];
ADD r3,  -Offset[ 7], fragment.texcoord[0];
ADD r4,  -Offset[ 6], fragment.texcoord[0];
ADD r5,  -Offset[ 5], fragment.texcoord[0];
ADD r6,  -Offset[ 4], fragment.texcoord[0];
ADD r7,  -Offset[ 3], fragment.texcoord[0];
ADD r8,  -Offset[ 2], fragment.texcoord[0];
ADD r9,  -Offset[ 1], fragment.texcoord[0];
ADD r10, -Offset[ 0], fragment.texcoord[0];
MOV s0, fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

TEX s0,  s0,  texture[0], 2D;

MUL s0, s0,  Weight[0].x;
MAD s0, r0,  Weight[2].w, s0;
MAD s0, r1,  Weight[2].z, s0;
MAD s0, r2,  Weight[2].y, s0;
MAD s0, r3,  Weight[2].x, s0;
MAD s0, r4,  Weight[1].w, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].y, s0;
MAD s0, r7,  Weight[1].x, s0;
MAD s0, r8,  Weight[0].w, s0;
MAD s0, r9,  Weight[0].z, s0;
MAD s0, r10, Weight[0].y, s0;

ADD r0,  Offset[ 0], fragment.texcoord[0];
ADD r1,  Offset[ 1], fragment.texcoord[0];
ADD r2,  Offset[ 2], fragment.texcoord[0];
ADD r3,  Offset[ 3], fragment.texcoord[0];
ADD r4,  Offset[ 4], fragment.texcoord[0];
ADD r5,  Offset[ 5], fragment.texcoord[0];
ADD r6,  Offset[ 6], fragment.texcoord[0];
ADD r7,  Offset[ 7], fragment.texcoord[0];
ADD r8,  Offset[ 8], fragment.texcoord[0];
ADD r9,  Offset[ 9], fragment.texcoord[0];
ADD r10, Offset[10], fragment.texcoord[0];

TEX r0,  r0,  texture[0], 2D;
TEX r1,  r1,  texture[0], 2D;
TEX r2,  r2,  texture[0], 2D;
TEX r3,  r3,  texture[0], 2D;
TEX r4,  r4,  texture[0], 2D;
TEX r5,  r5,  texture[0], 2D;
TEX r6,  r6,  texture[0], 2D;
TEX r7,  r7,  texture[0], 2D;
TEX r8,  r8,  texture[0], 2D;
TEX r9,  r9,  texture[0], 2D;
TEX r10, r10, texture[0], 2D;

MAD s0, r0,  Weight[0].y, s0;
MAD s0, r1,  Weight[0].z, s0;
MAD s0, r2,  Weight[0].w, s0;
MAD s0, r3,  Weight[1].x, s0;
MAD s0, r4,  Weight[1].y, s0;
MAD s0, r5,  Weight[1].z, s0;
MAD s0, r6,  Weight[1].w, s0;
MAD s0, r7,  Weight[2].x, s0;
MAD s0, r8,  Weight[2].y, s0;
MAD s0, r9,  Weight[2].z, s0;
MAD s0, r10, Weight[2].w, s0;

MOV result.color, s0;

END";

shader outputPixelShader =
"!!ARBfp1.0

# threshold for tag shader (try different values)
PARAM thresh = {0.5, 0.5, 0.5, 0.5};

TEMP back, blur, temp;

TEX blur, fragment.texcoord[0], texture[0], 2D;
TEX back, fragment.texcoord[0], texture[1], 2D;


ADD blur, blur, blur;


# if temp value is smaller than threshold, kill fragment
KIL blur;

ADD result.color, back, blur;

END";

surface blur0 = allocsurf(width/4, height/4);
surface blur1 = allocsurf(width/4, height/4);

gaussianXPixelShader.constant[ 0] = { (4.0*ds_dx)* 1.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 1] = { (4.0*ds_dx)* 3.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 2] = { (4.0*ds_dx)* 5.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 3] = { (4.0*ds_dx)* 7.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 4] = { (4.0*ds_dx)* 9.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 5] = { (4.0*ds_dx)*11.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 6] = { (4.0*ds_dx)*13.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 7] = { (4.0*ds_dx)*15.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 8] = { (4.0*ds_dx)*17.45, 0, 0, 0 };
gaussianXPixelShader.constant[ 9] = { (4.0*ds_dx)*19.45, 0, 0, 0 };
gaussianXPixelShader.constant[10] = { (4.0*ds_dx)*21.45, 0, 0, 0 };

gaussianYPixelShader.constant[ 0] = { 0, (4.0*dt_dy)* 1.45, 0, 0 };
gaussianYPixelShader.constant[ 1] = { 0, (4.0*dt_dy)* 3.45, 0, 0 };
gaussianYPixelShader.constant[ 2] = { 0, (4.0*dt_dy)* 5.45, 0, 0 };
gaussianYPixelShader.constant[ 3] = { 0, (4.0*dt_dy)* 7.45, 0, 0 };
gaussianYPixelShader.constant[ 4] = { 0, (4.0*dt_dy)* 9.45, 0, 0 };
gaussianYPixelShader.constant[ 5] = { 0, (4.0*dt_dy)*11.45, 0, 0 };
gaussianYPixelShader.constant[ 6] = { 0, (4.0*dt_dy)*13.45, 0, 0 };
gaussianYPixelShader.constant[ 7] = { 0, (4.0*dt_dy)*15.45, 0, 0 };
gaussianYPixelShader.constant[ 8] = { 0, (4.0*dt_dy)*17.45, 0, 0 };
gaussianYPixelShader.constant[ 9] = { 0, (4.0*dt_dy)*19.45, 0, 0 };
gaussianYPixelShader.constant[10] = { 0, (4.0*dt_dy)*21.45, 0, 0 };

texture[0].magfilter = "linear";

texture[0].source = backbuffer;
destination blur0;
apply samplePixelShader;

texture[0].source = blur0;
destination blur1;
apply gaussianXPixelShader;

texture[0].source = blur1;
destination blur0;
apply gaussianYPixelShader;

texture[0].source =  blur0;
texture[1].source =  backbuffer;
destination backbuffer;
apply outputPixelShader;


Quote
Originally posted by MetalDestroyer
:( I try all the Dabrain version and all make Fs1_open crashes except his first modif.
And if i run his modif into TBP 3.0 i see no difference with the original version of TBP. :(


Very strange. Well, most of the code I've posted doesn't work.
Try the code on the bottom of the first page. It should give you a slightly better result than the original HDRish effect.

If it doesn't have any effect, something is wrong with either you machine or your drivers. Cause the postfilters have nothing to do with the engine they're used with.


Edit2: Ok, I think I made a mistake. I think I have to place the gaussians behind the selective filter.
But try the code above anyway.
« Last Edit: January 07, 2005, 01:18:00 pm by 1688 »
--------------------------------------------------
SoL is looking for a sound effect artist
Please PM me in case you want to apply
---------------------------------
Shadows of Lylat - A Freespace 2 total conversion
(hosted by Game-Warden)
----------------------------------

 

Offline Taristin

  • Snipes
  • 213
  • BlueScalie
    • Skelkwank Shipyards
Pixel shader effects for FS2_open (DL)
Nah. DaB I think we're just wasting eachother's time with this. Let's just wait until the FSO guys get it working, because as it is, we'll never get the effet we're trying to.
Freelance Modeler | Amateur Artist