mirror of https://github.com/AxioDL/metaforce.git
CGraphics: Fix light params in LoadLight
This commit is contained in:
parent
eab2c577dd
commit
e69a4fdd98
|
@ -88,7 +88,8 @@ void CGraphics::LoadLight(ERglLight light, const CLight& info) {
|
||||||
if (info.GetType() == ELightType::Directional) {
|
if (info.GetType() == ELightType::Directional) {
|
||||||
return;
|
return;
|
||||||
dir = -(g_CameraMatrix.buildMatrix3f() * dir);
|
dir = -(g_CameraMatrix.buildMatrix3f() * dir);
|
||||||
GXInitLightPos(&g_LightObjs[static_cast<u32>(light)], dir.x() * 1048576.f, dir.y() * 1048576.f, dir.z() * 1048576.f);
|
GXInitLightPos(&g_LightObjs[static_cast<u32>(light)], dir.x() * 1048576.f, dir.y() * 1048576.f,
|
||||||
|
dir.z() * 1048576.f);
|
||||||
GXInitLightAttn(&g_LightObjs[static_cast<u32>(light)], 1.f, 0.f, 0.f, 1.f, 0.f, 0.f);
|
GXInitLightAttn(&g_LightObjs[static_cast<u32>(light)], 1.f, 0.f, 0.f, 1.f, 0.f, 0.f);
|
||||||
} else if (info.GetType() == ELightType::Spot) {
|
} else if (info.GetType() == ELightType::Spot) {
|
||||||
pos = g_CameraMatrix * pos;
|
pos = g_CameraMatrix * pos;
|
||||||
|
@ -96,7 +97,7 @@ void CGraphics::LoadLight(ERglLight light, const CLight& info) {
|
||||||
GXInitLightPos(obj, pos.x(), pos.y(), pos.z());
|
GXInitLightPos(obj, pos.x(), pos.y(), pos.z());
|
||||||
dir = g_CameraMatrix.buildMatrix3f() * dir;
|
dir = g_CameraMatrix.buildMatrix3f() * dir;
|
||||||
GXInitLightDir(obj, dir.x(), dir.y(), dir.z());
|
GXInitLightDir(obj, dir.x(), dir.y(), dir.z());
|
||||||
GXInitLightAttn(obj, 1.f, 0.f, 0.f, info.GetAttenuationConstant(), info.GetAngleAttenuationLinear(),
|
GXInitLightAttn(obj, 1.f, 0.f, 0.f, info.GetAttenuationConstant(), info.GetAttenuationLinear(),
|
||||||
info.GetAttenuationQuadratic());
|
info.GetAttenuationQuadratic());
|
||||||
GXInitLightSpot(obj, info.GetSpotCutoff(), GX::SP_COS2);
|
GXInitLightSpot(obj, info.GetSpotCutoff(), GX::SP_COS2);
|
||||||
} else if (info.GetType() == ELightType::Custom) {
|
} else if (info.GetType() == ELightType::Custom) {
|
||||||
|
@ -106,13 +107,13 @@ void CGraphics::LoadLight(ERglLight light, const CLight& info) {
|
||||||
dir = g_CameraMatrix.buildMatrix3f() * dir;
|
dir = g_CameraMatrix.buildMatrix3f() * dir;
|
||||||
GXInitLightDir(obj, dir.x(), dir.y(), dir.z());
|
GXInitLightDir(obj, dir.x(), dir.y(), dir.z());
|
||||||
GXInitLightAttn(obj, info.GetAngleAttenuationConstant(), info.GetAngleAttenuationLinear(),
|
GXInitLightAttn(obj, info.GetAngleAttenuationConstant(), info.GetAngleAttenuationLinear(),
|
||||||
info.GetAngleAttenuationQuadratic(), info.GetAttenuationConstant(),
|
info.GetAngleAttenuationQuadratic(), info.GetAttenuationConstant(), info.GetAttenuationLinear(),
|
||||||
info.GetAngleAttenuationLinear(), info.GetAttenuationQuadratic());
|
info.GetAttenuationQuadratic());
|
||||||
} else if (info.GetType() == ELightType::LocalAmbient) {
|
} else if (info.GetType() == ELightType::LocalAmbient) {
|
||||||
pos = g_CameraMatrix * pos;
|
pos = g_CameraMatrix * pos;
|
||||||
GXInitLightPos(&g_LightObjs[static_cast<u32>(light)], pos.x(), pos.y(), pos.z());
|
GXInitLightPos(&g_LightObjs[static_cast<u32>(light)], pos.x(), pos.y(), pos.z());
|
||||||
GXInitLightAttn(&g_LightObjs[static_cast<u32>(light)], 1.f, 0.f, 0.f, info.GetAttenuationConstant(),
|
GXInitLightAttn(&g_LightObjs[static_cast<u32>(light)], 1.f, 0.f, 0.f, info.GetAttenuationConstant(),
|
||||||
info.GetAngleAttenuationLinear(), info.GetAttenuationQuadratic());
|
info.GetAttenuationLinear(), info.GetAttenuationQuadratic());
|
||||||
}
|
}
|
||||||
|
|
||||||
g_LightTypes[static_cast<u32>(light)] = info.GetType();
|
g_LightTypes[static_cast<u32>(light)] = info.GetType();
|
||||||
|
|
Loading…
Reference in New Issue