Custom planets now support normal maps, with specular on their alpha channel.
This commit is contained in:
parent
6cf1826e1f
commit
938d49eeca
@ -64,6 +64,21 @@
|
|||||||
OOSTD_CUBE_MAP = 0;
|
OOSTD_CUBE_MAP = 0;
|
||||||
OOSTD_HARSH_MISTRESS = 1;
|
OOSTD_HARSH_MISTRESS = 1;
|
||||||
};
|
};
|
||||||
|
"planet-customized-normspec-macros" =
|
||||||
|
{
|
||||||
|
IS_OOLITE = 1;
|
||||||
|
OOSTD_DIFFUSE_MAP = 1;
|
||||||
|
OOSTD_CUBE_MAP = 0;
|
||||||
|
OOSTD_NORMAL_AND_SPECULAR_MAP = 1;
|
||||||
|
};
|
||||||
|
"moon-customized-normspec-macros" =
|
||||||
|
{
|
||||||
|
IS_OOLITE = 1;
|
||||||
|
OOSTD_DIFFUSE_MAP = 1;
|
||||||
|
OOSTD_CUBE_MAP = 0;
|
||||||
|
OOSTD_HARSH_MISTRESS = 1;
|
||||||
|
OOSTD_NORMAL_AND_SPECULAR_MAP = 1;
|
||||||
|
};
|
||||||
"planet-customized-cubemap-macros" =
|
"planet-customized-cubemap-macros" =
|
||||||
{
|
{
|
||||||
IS_OOLITE = 1;
|
IS_OOLITE = 1;
|
||||||
@ -77,6 +92,21 @@
|
|||||||
OOSTD_CUBE_MAP = 1;
|
OOSTD_CUBE_MAP = 1;
|
||||||
OOSTD_HARSH_MISTRESS = 1;
|
OOSTD_HARSH_MISTRESS = 1;
|
||||||
};
|
};
|
||||||
|
"planet-customized-cubemap-normspec-macros" =
|
||||||
|
{
|
||||||
|
IS_OOLITE = 1;
|
||||||
|
OOSTD_DIFFUSE_MAP = 1;
|
||||||
|
OOSTD_CUBE_MAP = 1;
|
||||||
|
OOSTD_NORMAL_AND_SPECULAR_MAP = 1;
|
||||||
|
};
|
||||||
|
"moon-customized-cubemap-normspec-macros" =
|
||||||
|
{
|
||||||
|
IS_OOLITE = 1;
|
||||||
|
OOSTD_DIFFUSE_MAP = 1;
|
||||||
|
OOSTD_CUBE_MAP = 1;
|
||||||
|
OOSTD_HARSH_MISTRESS = 1;
|
||||||
|
OOSTD_NORMAL_AND_SPECULAR_MAP = 1;
|
||||||
|
};
|
||||||
"atmosphere-material" =
|
"atmosphere-material" =
|
||||||
{
|
{
|
||||||
vertex_shader = "oolite-default-atmosphere.vertex";
|
vertex_shader = "oolite-default-atmosphere.vertex";
|
||||||
|
@ -58,6 +58,7 @@ MA 02110-1301, USA.
|
|||||||
|
|
||||||
NSDictionary *_materialParameters;
|
NSDictionary *_materialParameters;
|
||||||
NSString *_textureName;
|
NSString *_textureName;
|
||||||
|
NSString *_normSpecMapName;
|
||||||
|
|
||||||
NSString *_name;
|
NSString *_name;
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,8 @@ static const double kMesosphere = 10.0 * ATMOSPHERE_DEPTH; // atmosphere effect
|
|||||||
|
|
||||||
_mesopause2 = (atmosphere) ? (kMesosphere + collision_radius) * (kMesosphere + collision_radius) : 0.0;
|
_mesopause2 = (atmosphere) ? (kMesosphere + collision_radius) * (kMesosphere + collision_radius) : 0.0;
|
||||||
|
|
||||||
|
_normSpecMapName = [[dict oo_stringForKey:@"texture_normspec"] retain]; // must be set up before _textureName
|
||||||
|
|
||||||
_textureName = [[dict oo_stringForKey:@"texture"] retain];
|
_textureName = [[dict oo_stringForKey:@"texture"] retain];
|
||||||
[self setUpPlanetFromTexture:_textureName];
|
[self setUpPlanetFromTexture:_textureName];
|
||||||
[_planetDrawable setRadius:collision_radius];
|
[_planetDrawable setRadius:collision_radius];
|
||||||
@ -450,6 +452,7 @@ static OOColor *ColorWithHSBColor(Vector c)
|
|||||||
//DESTROY(_airColor); // this CTDs on loading savegames.. :(
|
//DESTROY(_airColor); // this CTDs on loading savegames.. :(
|
||||||
DESTROY(_materialParameters);
|
DESTROY(_materialParameters);
|
||||||
DESTROY(_textureName);
|
DESTROY(_textureName);
|
||||||
|
DESTROY(_normSpecMapName);
|
||||||
|
|
||||||
[[OOGraphicsResetManager sharedManager] unregisterClient:self];
|
[[OOGraphicsResetManager sharedManager] unregisterClient:self];
|
||||||
|
|
||||||
@ -842,6 +845,27 @@ static OOColor *ColorWithHSBColor(Vector c)
|
|||||||
}
|
}
|
||||||
else textureName = @"dynamic";
|
else textureName = @"dynamic";
|
||||||
|
|
||||||
|
// let's try giving some love to normalMap too
|
||||||
|
if (_normSpecMapName)
|
||||||
|
{
|
||||||
|
NSDictionary *nspec = [NSDictionary dictionaryWithObjectsAndKeys:_normSpecMapName, @"name", @"yes", @"repeat_s", @"linear", @"min_filter", @"yes", @"cube_map", nil];
|
||||||
|
normalMap = [OOTexture textureWithConfiguration:nspec];
|
||||||
|
if (normalMap != nil) // OOTexture will have logged a file-not-found warning.
|
||||||
|
{
|
||||||
|
if (shadersOn)
|
||||||
|
{
|
||||||
|
[normalMap ensureFinishedLoading]; // only know if it is a cube map if it's loaded
|
||||||
|
if ([normalMap isCubeMap])
|
||||||
|
{
|
||||||
|
macros = [materialDefaults oo_dictionaryForKey:isMoon ? @"moon-customized-cubemap-normspec-macros" : @"planet-customized-cubemap-normspec-macros"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
macros = [materialDefaults oo_dictionaryForKey:isMoon ? @"moon-customized-normspec-macros" : @"planet-customized-normspec-macros"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user