Added dawn
This commit is contained in:
1 parent
83b92e9881
commit
c8d743b932
13 files changed
+88
-40
No files matched your search
+22
-10
@@ -903,7 +903,7 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
|
||||
|
||||
// ==================== Night pass with point lights ====================
|
||||
|
||||
void Character::drawNight(Renderer& renderer, const float* pointLightPosEye, const float* pointLightDirEye, const float* pointLightColors, int pointLightCount) {
|
||||
void Character::drawNight(Renderer& renderer, const float* pointLightPosEye, const float* pointLightDirEye, const float* pointLightColors, int pointLightCount, const float* ambientColor, const float* fogColor) {
|
||||
if (!enabled) return;
|
||||
if (hitSparkEmitter.isConfigured() && hitSparkEmitter.getActiveParticleCount() > 0) {
|
||||
hitSparkEmitter.draw(renderer, 1.0f, Environment::width, Environment::height, false);
|
||||
@@ -915,13 +915,13 @@ void Character::drawNight(Renderer& renderer, const float* pointLightPosEye, con
|
||||
if (!isPlayer && hp <= 0) return;
|
||||
|
||||
if (useGpuSkinning) {
|
||||
drawNightGpuSkinning(renderer, pointLightPosEye, pointLightDirEye, pointLightColors, pointLightCount);
|
||||
drawNightGpuSkinning(renderer, pointLightPosEye, pointLightDirEye, pointLightColors, pointLightCount, ambientColor, fogColor);
|
||||
} else {
|
||||
drawNightCpu(renderer, pointLightPosEye, pointLightDirEye, pointLightColors, pointLightCount);
|
||||
drawNightCpu(renderer, pointLightPosEye, pointLightDirEye, pointLightColors, pointLightCount, ambientColor, fogColor);
|
||||
}
|
||||
}
|
||||
|
||||
void Character::drawNightGpuSkinning(Renderer& renderer, const float* plPosEye, const float* plDirEye, const float* plColors, int plCount) {
|
||||
void Character::drawNightGpuSkinning(Renderer& renderer, const float* plPosEye, const float* plDirEye, const float* plColors, int plCount, const float* ambientColor, const float* fogColor) {
|
||||
AnimationState drawState = resolveActiveState();
|
||||
auto it = animations.find(drawState);
|
||||
if (it == animations.end()) return;
|
||||
@@ -933,6 +933,8 @@ void Character::drawNightGpuSkinning(Renderer& renderer, const float* plPosEye,
|
||||
|
||||
renderer.shaderManager.PushShader(nightSkinningShader);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
const float playerEyePosNight[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosNight);
|
||||
renderer.RenderUniform1i("uPointLightCount", plCount);
|
||||
@@ -969,6 +971,8 @@ void Character::drawNightGpuSkinning(Renderer& renderer, const float* plPosEye,
|
||||
|
||||
renderer.shaderManager.PushShader("night_fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosNight);
|
||||
renderer.RenderUniform1i("uPointLightCount", plCount);
|
||||
if (plCount > 0) {
|
||||
@@ -983,7 +987,7 @@ void Character::drawNightGpuSkinning(Renderer& renderer, const float* plPosEye,
|
||||
renderer.shaderManager.PopShader();
|
||||
}
|
||||
|
||||
void Character::drawNightCpu(Renderer& renderer, const float* plPosEye, const float* plDirEye, const float* plColors, int plCount) {
|
||||
void Character::drawNightCpu(Renderer& renderer, const float* plPosEye, const float* plDirEye, const float* plColors, int plCount, const float* ambientColor, const float* fogColor) {
|
||||
AnimationState drawState = resolveActiveState();
|
||||
auto it = animations.find(drawState);
|
||||
if (it == animations.end()) return;
|
||||
@@ -992,6 +996,8 @@ void Character::drawNightCpu(Renderer& renderer, const float* plPosEye, const fl
|
||||
|
||||
renderer.shaderManager.PushShader(nightShader);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
const float playerEyePosNight[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosNight);
|
||||
renderer.RenderUniform1i("uPointLightCount", plCount);
|
||||
@@ -1036,7 +1042,7 @@ void Character::drawNightCpu(Renderer& renderer, const float* plPosEye, const fl
|
||||
|
||||
void Character::drawNightWithShadow(Renderer& renderer,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex)
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const float* ambientColor, const float* fogColor)
|
||||
{
|
||||
if (!enabled) return;
|
||||
if (hitSparkEmitter.isConfigured() && hitSparkEmitter.getActiveParticleCount() > 0) {
|
||||
@@ -1047,15 +1053,15 @@ void Character::drawNightWithShadow(Renderer& renderer,
|
||||
if (!isPlayer && hp <= 0) return;
|
||||
|
||||
if (useGpuSkinning) {
|
||||
drawNightGpuSkinningWithShadow(renderer, plPosEye, plDirEye, plColors, plCount, lightFromCamera, shadowMapTex);
|
||||
drawNightGpuSkinningWithShadow(renderer, plPosEye, plDirEye, plColors, plCount, lightFromCamera, shadowMapTex, ambientColor, fogColor);
|
||||
} else {
|
||||
drawNightCpuWithShadow(renderer, plPosEye, plDirEye, plColors, plCount, lightFromCamera, shadowMapTex);
|
||||
drawNightCpuWithShadow(renderer, plPosEye, plDirEye, plColors, plCount, lightFromCamera, shadowMapTex, ambientColor, fogColor);
|
||||
}
|
||||
}
|
||||
|
||||
void Character::drawNightGpuSkinningWithShadow(Renderer& renderer,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex)
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const float* ambientColor, const float* fogColor)
|
||||
{
|
||||
AnimationState drawState = resolveActiveState();
|
||||
auto it = animations.find(drawState);
|
||||
@@ -1068,6 +1074,8 @@ void Character::drawNightGpuSkinningWithShadow(Renderer& renderer,
|
||||
renderer.shaderManager.PushShader(nightShadowSkinningShader);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
// First light's eye-space direction used for shadow bias
|
||||
if (plCount > 0) renderer.RenderUniform3fv("uLightDir", plDirEye);
|
||||
@@ -1114,6 +1122,8 @@ void Character::drawNightGpuSkinningWithShadow(Renderer& renderer,
|
||||
renderer.shaderManager.PushShader("night_fog_shadow");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
if (plCount > 0) renderer.RenderUniform3fv("uLightDir", plDirEye);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosNightShadow);
|
||||
@@ -1132,7 +1142,7 @@ void Character::drawNightGpuSkinningWithShadow(Renderer& renderer,
|
||||
|
||||
void Character::drawNightCpuWithShadow(Renderer& renderer,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex)
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const float* ambientColor, const float* fogColor)
|
||||
{
|
||||
AnimationState drawState = resolveActiveState();
|
||||
auto it = animations.find(drawState);
|
||||
@@ -1143,6 +1153,8 @@ void Character::drawNightCpuWithShadow(Renderer& renderer,
|
||||
renderer.shaderManager.PushShader(nightShadowShader);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniform3fv("uAmbientColor", ambientColor);
|
||||
renderer.RenderUniform3fv("uFogColor", fogColor);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
if (plCount > 0) renderer.RenderUniform3fv("uLightDir", plDirEye);
|
||||
|
||||
|
||||
Reference in new issue
Block a user