Working on fog, 2nd level, locations, dialogs

This commit is contained in:
Vladislav Khorev committed 2026-04-25 19:56:00 +03:00
1 parent eac914e073
commit c7b3f04cd4
38 files changed
+150471 -145

No files matched your search

+18 -7
View File
@@ -421,8 +421,10 @@ void Character::draw(Renderer& renderer) {
auto it = animations.find(drawState);
if (it == animations.end()) return;
renderer.shaderManager.PushShader(defaultShaderName);
renderer.shaderManager.PushShader("fog");
renderer.RenderUniform1i(textureUniformName, 0);
const float playerEyePos[3] = { 0.0f, 0.0f, -Environment::zoom };
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5,
static_cast<float>(Environment::width) / static_cast<float>(Environment::height),
@@ -473,11 +475,13 @@ void Character::drawGpuSkinning(Renderer& renderer) {
if (anim.gpuSkinningShaderData.skinningMatrices.empty()) return;
}
static const std::string skinningShaderName = "skinning";
static const std::string skinningShaderName = "fog_skinning";
static const std::string boneMatricesUniform = "uBoneMatrices[0]";
renderer.shaderManager.PushShader(skinningShaderName);
renderer.RenderUniform1i(textureUniformName, 0);
const float playerEyePosSkin[3] = { 0.0f, 0.0f, -Environment::zoom };
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkin);
renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5,
static_cast<float>(Environment::width) / static_cast<float>(Environment::height),
@@ -505,8 +509,9 @@ void Character::drawGpuSkinning(Renderer& renderer) {
renderer.PopMatrix();
renderer.shaderManager.PushShader(defaultShaderName);
renderer.shaderManager.PushShader("fog");
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkin);
drawAttachedWeapon(renderer);
renderer.shaderManager.PopShader();
@@ -688,13 +693,15 @@ void Character::drawCpuWithShadow(Renderer& renderer, const Eigen::Matrix4f& lig
auto it = animations.find(drawState);
if (it == animations.end()) return;
static const std::string shadowShader = "default_shadow";
static const std::string shadowShader = "fog_shadow";
renderer.shaderManager.PushShader(shadowShader);
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform1i("uShadowMap", 1);
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
const float playerEyePosShadow[3] = { 0.0f, 0.0f, -Environment::zoom };
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosShadow);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, shadowMapTex);
@@ -724,8 +731,9 @@ void Character::drawCpuWithShadow(Renderer& renderer, const Eigen::Matrix4f& lig
renderer.PopMatrix();
renderer.shaderManager.PushShader(defaultShaderName);
renderer.shaderManager.PushShader("fog");
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosShadow);
drawAttachedWeapon(renderer);
renderer.shaderManager.PopShader();
@@ -744,7 +752,7 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
CheckGlError(__FILE__, __LINE__);
static const std::string skinningShadowShader = "skinning_shadow";
static const std::string skinningShadowShader = "fog_skinning_shadow";
static const std::string boneMatricesUniform = "uBoneMatrices[0]";
renderer.shaderManager.PushShader(skinningShadowShader);
@@ -752,6 +760,8 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
renderer.RenderUniform1i("uShadowMap", 1);
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
const float playerEyePosSkinShadow[3] = { 0.0f, 0.0f, -Environment::zoom };
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkinShadow);
CheckGlError(__FILE__, __LINE__);
@@ -789,8 +799,9 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
renderer.PopMatrix();
renderer.shaderManager.PushShader(defaultShaderName);
renderer.shaderManager.PushShader("fog");
renderer.RenderUniform1i(textureUniformName, 0);
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkinShadow);
drawAttachedWeapon(renderer);
renderer.shaderManager.PopShader();