Added korean location
This commit is contained in:
1 parent
d5ef126264
commit
96e748715b
80 files changed
+18949
-80
No files matched your search
+68
-1
@@ -106,7 +106,11 @@ namespace FRG
|
||||
{
|
||||
|
||||
// Load static game objects
|
||||
gameObjects = GameObjectLoader::loadAndCreateGameObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
|
||||
{
|
||||
StaticObjectSet staticObjects = GameObjectLoader::loadAndCreateGameObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
|
||||
gameObjects = std::move(staticObjects.single);
|
||||
instancedBatches = std::move(staticObjects.batches);
|
||||
}
|
||||
SDL_PumpEvents();
|
||||
|
||||
// Load interactive objects
|
||||
@@ -683,6 +687,27 @@ namespace FRG
|
||||
}
|
||||
|
||||
|
||||
void Location::drawInstancedStatics(const std::string& instancedShaderName, InstancedTexture textureKind,
|
||||
const std::function<void()>& setUniforms)
|
||||
{
|
||||
if (instancedBatches.empty()) return;
|
||||
|
||||
renderer.shaderManager.PushShader(instancedShaderName);
|
||||
if (setUniforms) setUniforms();
|
||||
renderer.SetMatrix();
|
||||
|
||||
for (auto& batch : instancedBatches) {
|
||||
if (textureKind != InstancedTexture::None) {
|
||||
const auto& texture = (textureKind == InstancedTexture::Darklands) ? batch.textureDarklands : batch.texture;
|
||||
if (!texture) continue;
|
||||
glBindTexture(GL_TEXTURE_2D, texture->getTexID());
|
||||
}
|
||||
renderer.DrawInstanced(batch);
|
||||
}
|
||||
|
||||
renderer.shaderManager.PopShader();
|
||||
}
|
||||
|
||||
void Location::drawGame()
|
||||
{
|
||||
|
||||
@@ -718,6 +743,11 @@ namespace FRG
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
drawInstancedStatics("fog_inst", InstancedTexture::Color, [&]() {
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
renderer.RenderUniform1f("uAlpha", 1.0f);
|
||||
});
|
||||
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
if (intObj.state.isActive) {
|
||||
@@ -812,6 +842,7 @@ namespace FRG
|
||||
for (auto& [name, gameObj] : gameObjects) {
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
drawInstancedStatics("shadow_depth_inst", InstancedTexture::None);
|
||||
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
if (intObj.state.castShadow && intObj.loadedObject.texture) {
|
||||
@@ -907,6 +938,16 @@ namespace FRG
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
#ifndef DEBUG_LIGHT
|
||||
drawInstancedStatics("fog_shadow_inst", InstancedTexture::Color, [&]() {
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
|
||||
renderer.RenderUniform1f("uAlpha", 1.0f);
|
||||
});
|
||||
#endif
|
||||
|
||||
CheckGlError(__FILE__, __LINE__);
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
@@ -1004,6 +1045,11 @@ namespace FRG
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.textureDarklands->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
drawInstancedStatics("darklands_fog_inst", InstancedTexture::Darklands, [&]() {
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
renderer.RenderUniform1f("uAlpha", 1.0f);
|
||||
});
|
||||
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
if (intObj.state.isActive) {
|
||||
@@ -1067,6 +1113,7 @@ namespace FRG
|
||||
for (auto& [name, gameObj] : gameObjects) {
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
drawInstancedStatics("shadow_depth_inst", InstancedTexture::None);
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
if (intObj.state.castShadowNight && intObj.loadedObject.texture) {
|
||||
renderer.PushMatrix();
|
||||
@@ -1279,6 +1326,26 @@ namespace FRG
|
||||
glBindTexture(GL_TEXTURE_2D, gameObj.texture->getTexID());
|
||||
renderer.DrawVertexRenderStruct(gameObj.mesh);
|
||||
}
|
||||
drawInstancedStatics(hasShadows ? "night_fog_shadow_inst" : "night_fog_inst", InstancedTexture::Color, [&]() {
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
if (hasShadows) {
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
renderer.RenderUniform3fv("uLightDir", plDirEye);
|
||||
}
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
renderer.RenderUniform1i("uPointLightCount", lightCount);
|
||||
if (lightCount > 0) {
|
||||
renderer.RenderUniform3fvArray("uPointLightPos[0]", lightCount, plPosEye);
|
||||
renderer.RenderUniform3fvArray("uPointLightDir[0]", lightCount, plDirEye);
|
||||
renderer.RenderUniform3fvArray("uPointLightColor[0]", lightCount, plColors);
|
||||
renderer.RenderUniform2fvArray("uPointLightWorldXZ[0]", lightCount, plWorldXZ);
|
||||
renderer.RenderUniform2fvArray("uPointLightLimitXZ[0]", lightCount, plLimitXZ);
|
||||
}
|
||||
renderer.RenderUniform1f("uAlpha", 1.0f);
|
||||
});
|
||||
|
||||
for (auto& intObj : interactiveObjects) {
|
||||
if (intObj.state.isActive) {
|
||||
|
||||
Reference in new issue
Block a user