mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-25 12:23:45 +00:00
fixed clouds render
This commit is contained in:
parent
afed831aed
commit
2a0a508a10
1 changed files with 43 additions and 41 deletions
|
@ -78,6 +78,43 @@ CClouds::Update(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float StarCoorsX[9] = { 0.0f, 0.05f, 0.12f, 0.5f, 0.8f, 0.6f, 0.27f, 0.55f, 0.75f };
|
||||||
|
float StarCoorsY[9] = { 0.0f, 0.45f, 0.9f, 1.0f, 0.85f, 0.52f, 0.48f, 0.35f, 0.2f };
|
||||||
|
float StarSizes[9] = { 1.0f, 1.4f, 0.9f, 1.0f, 0.6f, 1.5f, 1.3f, 1.0f, 0.8f };
|
||||||
|
|
||||||
|
float LowCloudsX[12] = { 1.0f, 0.7f, 0.0f, -0.7f, -1.0f, -0.7f, 0.0f, 0.7f, 0.8f, -0.8f, 0.4f, -0.4f };
|
||||||
|
float LowCloudsY[12] = { 0.0f, -0.7f, -1.0f, -0.7f, 0.0f, 0.7f, 1.0f, 0.7f, 0.4f, 0.4f, -0.8f, -0.8f };
|
||||||
|
float LowCloudsZ[12] = { 0.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0.3f, 0.9f, 0.4f, 1.3f, 1.4f, 1.2f, 1.7f };
|
||||||
|
|
||||||
|
float CoorsOffsetX[37] = {
|
||||||
|
0.0f, 60.0f, 72.0f, 48.0f, 21.0f, 12.0f,
|
||||||
|
9.0f, -3.0f, -8.4f, -18.0f, -15.0f, -36.0f,
|
||||||
|
-40.0f, -48.0f, -60.0f, -24.0f, 100.0f, 100.0f,
|
||||||
|
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
||||||
|
100.0f, 100.0f, -30.0f, -20.0f, 10.0f, 30.0f,
|
||||||
|
0.0f, -100.0f, -100.0f, -100.0f, -100.0f, -100.0f, -100.0f
|
||||||
|
};
|
||||||
|
float CoorsOffsetY[37] = {
|
||||||
|
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
||||||
|
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
||||||
|
100.0f, 100.0f, 100.0f, 100.0f, -30.0f, 10.0f,
|
||||||
|
-25.0f, -5.0f, 28.0f, -10.0f, 10.0f, 0.0f,
|
||||||
|
15.0f, 40.0f, -100.0f, -100.0f, -100.0f, -100.0f,
|
||||||
|
-100.0f, -40.0f, -20.0f, 0.0f, 10.0f, 30.0f, 35.0f
|
||||||
|
};
|
||||||
|
float CoorsOffsetZ[37] = {
|
||||||
|
2.0f, 1.0f, 0.0f, 0.3f, 0.7f, 1.4f,
|
||||||
|
1.7f, 0.24f, 0.7f, 1.3f, 1.6f, 1.0f,
|
||||||
|
1.2f, 0.3f, 0.7f, 1.4f, 0.0f, 0.1f,
|
||||||
|
0.5f, 0.4f, 0.55f, 0.75f, 1.0f, 1.4f,
|
||||||
|
1.7f, 2.0f, 2.0f, 2.3f, 1.9f, 2.4f,
|
||||||
|
2.0f, 2.0f, 1.5f, 1.2f, 1.7f, 1.5f, 2.1f
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8 BowRed[6] = { 30, 30, 30, 10, 0, 15 };
|
||||||
|
uint8 BowGreen[6] = { 0, 15, 30, 30, 0, 0 };
|
||||||
|
uint8 BowBlue[6] = { 0, 0, 0, 10, 30, 30 };
|
||||||
|
|
||||||
void
|
void
|
||||||
CClouds::Render(void)
|
CClouds::Render(void)
|
||||||
{
|
{
|
||||||
|
@ -98,11 +135,10 @@ CClouds::Render(void)
|
||||||
int minute = CClock::GetHours()*60 + CClock::GetMinutes();
|
int minute = CClock::GetHours()*60 + CClock::GetMinutes();
|
||||||
RwV3d campos = *(RwV3d*)&TheCamera.GetPosition();
|
RwV3d campos = *(RwV3d*)&TheCamera.GetPosition();
|
||||||
|
|
||||||
float coverage = Max(CWeather::Foggyness, CWeather::Foggyness);
|
|
||||||
|
|
||||||
// Moon
|
// Moon
|
||||||
int moonfadeout = Abs(minute - 180); // fully visible at 3AM
|
int moonfadeout = Abs(minute - 180); // fully visible at 3AM
|
||||||
if(moonfadeout < 180){ // fade in/out 3 hours
|
if(moonfadeout < 180){ // fade in/out 3 hours
|
||||||
|
float coverage = Max(CWeather::Foggyness, CWeather::CloudCoverage);
|
||||||
int brightness = (1.0f - coverage) * (180 - moonfadeout);
|
int brightness = (1.0f - coverage) * (180 - moonfadeout);
|
||||||
RwV3d pos = { 0.0f, -100.0f, 15.0f };
|
RwV3d pos = { 0.0f, -100.0f, 15.0f };
|
||||||
RwV3dAdd(&worldpos, &campos, &pos);
|
RwV3dAdd(&worldpos, &campos, &pos);
|
||||||
|
@ -131,11 +167,10 @@ CClouds::Render(void)
|
||||||
else if(CClock::GetHours() == 5)
|
else if(CClock::GetHours() == 5)
|
||||||
starintens = 255 * (60 - CClock::GetMinutes())/60.0f;
|
starintens = 255 * (60 - CClock::GetMinutes())/60.0f;
|
||||||
if(starintens != 0){
|
if(starintens != 0){
|
||||||
// R
|
float coverage = Max(CWeather::Foggyness, CWeather::CloudCoverage);
|
||||||
static float StarCoorsX[9] = { 0.0f, 0.05f, 0.12f, 0.5f, 0.8f, 0.6f, 0.27f, 0.55f, 0.75f };
|
|
||||||
static float StarCoorsY[9] = { 0.0f, 0.45f, 0.9f, 1.0f, 0.85f, 0.52f, 0.48f, 0.35f, 0.2f };
|
|
||||||
static float StarSizes[9] = { 1.0f, 1.4f, 0.9f, 1.0f, 0.6f, 1.5f, 1.3f, 1.0f, 0.8f };
|
|
||||||
int brightness = (1.0f - coverage) * starintens;
|
int brightness = (1.0f - coverage) * starintens;
|
||||||
|
|
||||||
|
// R
|
||||||
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0]));
|
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0]));
|
||||||
for(i = 0; i < 11; i++){
|
for(i = 0; i < 11; i++){
|
||||||
RwV3d pos = { 100.0f, 0.0f, 10.0f };
|
RwV3d pos = { 100.0f, 0.0f, 10.0f };
|
||||||
|
@ -164,13 +199,7 @@ CClouds::Render(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Low clouds
|
// Low clouds
|
||||||
static float LowCloudsX[12] = { 1.0f, 0.7f, 0.0f, -0.7f, -1.0f, -0.7f,
|
float lowcloudintensity = 1.0f - Max(CWeather::Foggyness, CWeather::CloudCoverage);
|
||||||
0.0f, 0.7f, 0.8f, -0.8f, 0.4f, -0.4f };
|
|
||||||
static float LowCloudsY[12] = { 0.0f, -0.7f, -1.0f, -0.7f, 0.0f, 0.7f,
|
|
||||||
1.0f, 0.7f, 0.4f, 0.4f, -0.8f, -0.8f };
|
|
||||||
static float LowCloudsZ[12] = { 0.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0.3f,
|
|
||||||
0.9f, 0.4f, 1.3f, 1.4f, 1.2f, 1.7f };
|
|
||||||
float lowcloudintensity = 1.0f - coverage;
|
|
||||||
int r = CTimeCycle::GetLowCloudsRed() * lowcloudintensity;
|
int r = CTimeCycle::GetLowCloudsRed() * lowcloudintensity;
|
||||||
int g = CTimeCycle::GetLowCloudsGreen() * lowcloudintensity;
|
int g = CTimeCycle::GetLowCloudsGreen() * lowcloudintensity;
|
||||||
int b = CTimeCycle::GetLowCloudsBlue() * lowcloudintensity;
|
int b = CTimeCycle::GetLowCloudsBlue() * lowcloudintensity;
|
||||||
|
@ -193,30 +222,6 @@ CClouds::Render(void)
|
||||||
float rot_cos = Cos(CloudRotation);
|
float rot_cos = Cos(CloudRotation);
|
||||||
int fluffyalpha = 160 * (1.0f - CWeather::Foggyness);
|
int fluffyalpha = 160 * (1.0f - CWeather::Foggyness);
|
||||||
if(fluffyalpha != 0){
|
if(fluffyalpha != 0){
|
||||||
static float CoorsOffsetX[37] = {
|
|
||||||
0.0f, 60.0f, 72.0f, 48.0f, 21.0f, 12.0f,
|
|
||||||
9.0f, -3.0f, -8.4f, -18.0f, -15.0f, -36.0f,
|
|
||||||
-40.0f, -48.0f, -60.0f, -24.0f, 100.0f, 100.0f,
|
|
||||||
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
|
||||||
100.0f, 100.0f, -30.0f, -20.0f, 10.0f, 30.0f,
|
|
||||||
0.0f, -100.0f, -100.0f, -100.0f, -100.0f, -100.0f, -100.0f
|
|
||||||
};
|
|
||||||
static float CoorsOffsetY[37] = {
|
|
||||||
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
|
||||||
100.0f, 100.0f, 100.0f, 100.0f, 100.0f, 100.0f,
|
|
||||||
100.0f, 100.0f, 100.0f, 100.0f, -30.0f, 10.0f,
|
|
||||||
-25.0f, -5.0f, 28.0f, -10.0f, 10.0f, 0.0f,
|
|
||||||
15.0f, 40.0f, -100.0f, -100.0f, -100.0f, -100.0f,
|
|
||||||
-100.0f, -40.0f, -20.0f, 0.0f, 10.0f, 30.0f, 35.0f
|
|
||||||
};
|
|
||||||
static float CoorsOffsetZ[37] = {
|
|
||||||
2.0f, 1.0f, 0.0f, 0.3f, 0.7f, 1.4f,
|
|
||||||
1.7f, 0.24f, 0.7f, 1.3f, 1.6f, 1.0f,
|
|
||||||
1.2f, 0.3f, 0.7f, 1.4f, 0.0f, 0.1f,
|
|
||||||
0.5f, 0.4f, 0.55f, 0.75f, 1.0f, 1.4f,
|
|
||||||
1.7f, 2.0f, 2.0f, 2.3f, 1.9f, 2.4f,
|
|
||||||
2.0f, 2.0f, 1.5f, 1.2f, 1.7f, 1.5f, 2.1f
|
|
||||||
};
|
|
||||||
static bool bCloudOnScreen[37];
|
static bool bCloudOnScreen[37];
|
||||||
float hilight;
|
float hilight;
|
||||||
|
|
||||||
|
@ -238,7 +243,7 @@ CClouds::Render(void)
|
||||||
int bg = CTimeCycle::GetFluffyCloudsBottomGreen();
|
int bg = CTimeCycle::GetFluffyCloudsBottomGreen();
|
||||||
int bb = CTimeCycle::GetFluffyCloudsBottomBlue();
|
int bb = CTimeCycle::GetFluffyCloudsBottomBlue();
|
||||||
if(sundist < SCREEN_WIDTH/2){
|
if(sundist < SCREEN_WIDTH/2){
|
||||||
hilight = (1.0f - coverage) * (1.0f - sundist/(SCREEN_WIDTH/2));
|
hilight = (1.0f - Max(CWeather::Foggyness, CWeather::CloudCoverage)) * (1.0f - sundist/(SCREEN_WIDTH/2));
|
||||||
tr = tr*(1.0f-hilight) + 255*hilight;
|
tr = tr*(1.0f-hilight) + 255*hilight;
|
||||||
tg = tg*(1.0f-hilight) + 190*hilight;
|
tg = tg*(1.0f-hilight) + 190*hilight;
|
||||||
tb = tb*(1.0f-hilight) + 190*hilight;
|
tb = tb*(1.0f-hilight) + 190*hilight;
|
||||||
|
@ -286,9 +291,6 @@ CClouds::Render(void)
|
||||||
|
|
||||||
// Rainbow
|
// Rainbow
|
||||||
if(CWeather::Rainbow != 0.0f){
|
if(CWeather::Rainbow != 0.0f){
|
||||||
static uint8 BowRed[6] = { 30, 30, 30, 10, 0, 15 };
|
|
||||||
static uint8 BowGreen[6] = { 0, 15, 30, 30, 0, 0 };
|
|
||||||
static uint8 BowBlue[6] = { 0, 0, 0, 10, 30, 30 };
|
|
||||||
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0]));
|
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpCoronaTexture[0]));
|
||||||
for(i = 0; i < 6; i++){
|
for(i = 0; i < 6; i++){
|
||||||
RwV3d pos = { i*1.5f, 100.0f, 5.0f };
|
RwV3d pos = { i*1.5f, 100.0f, 5.0f };
|
||||||
|
|
Loading…
Reference in a new issue