• Advertisement

Archived

This topic is now archived and is closed to further replies.

Gamma Fading

This topic is 5992 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I''m trying to make my screen fade out, to no avail. I know that there are a lot of optimizations I could use in the below code, but I wrote it without optimizations for clarity.
    
}
// in game loop

	for(int blu = 255; blu > 0; blu--)
	{
		 MyGammaRamp.red[blu] = blu*257 - phade*257;
		 MyGammaRamp.blue[blu] = blu*257 - phade*257;
		 MyGammaRamp.green[blu] = blu*257 - phade*257;
	}

phade++;
if(phade == 255)
	phade = 1;
lp3dd->SetGammaRamp(D3DSGR_CALIBRATE, &MyGammaRamp);
}

  
I want the screen to fade out, but instead I get the mescaline affect. What''s wrong? -Forcas
"Elvis is alive. He is Barney the purple dinosaur. He is the pied piper that leads our children into the wages of sin and eternal damnation."

Share this post


Link to post
Share on other sites
Advertisement
*bump*

-Forcas


"Elvis is alive. He is Barney the purple dinosaur. He is the pied piper that leads our children into the wages of sin and eternal damnation."



Share this post


Link to post
Share on other sites
What can''t you just do this ?


static int StartGamma;

for (int i = 255; i >= 0; i--) {
GammaRamp.red = i - StartGamma;
GammaRamp.red[i] = i - StartGamma;
GammaRamp.red[i] = i - StartGamma;
}
StartGamma--;

D3DDevice->SetGammaRamp(D3DSGR_CALIBRATE, &GammaRamp);



Or is that the same thing?

Share this post


Link to post
Share on other sites
Becuase StartGamma = 65535

-Forcas


"Elvis is alive. He is Barney the purple dinosaur. He is the pied piper that leads our children into the wages of sin and eternal damnation."



Share this post


Link to post
Share on other sites
Why not draw two triangles over the whole screen with the color you want, but use alpha blending? Many games do this for the injured red flash sortof effect, or for when looking at the sun and everything gets all bright and white.

Share this post


Link to post
Share on other sites
First thought:
if phade is grater than blu the equtation will result in a negative number and because the values are stored as words, the value wraps to 65535 + blu*257 - phade*257.

Try something like this:
  
for(int blu = 255; blu > 0; blu--)
{
float v = (float)blu / (float)phade;
v *= 65535.0f;
MyGammaRamp.red[blu] = v;
MyGammaRamp.blue[blu] = v;
MyGammaRamp.green[blu] = v;
}


This will change the gamma relative to the value of phade.

Bjørn.

Share this post


Link to post
Share on other sites

  • Advertisement