Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Converter/BlenderWorldInfo.cpp
| Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
| #include "BKE_global.h" | #include "BKE_global.h" | ||||
| #include "BKE_scene.h" | #include "BKE_scene.h" | ||||
| /* end of blender include block */ | /* end of blender include block */ | ||||
| BlenderWorldInfo::BlenderWorldInfo(Scene *blenderscene, World *blenderworld) | BlenderWorldInfo::BlenderWorldInfo(Scene *blenderscene, World *blenderworld) | ||||
| { | { | ||||
| if (blenderworld) { | if (blenderworld) { | ||||
| m_do_color_management = BKE_scene_check_color_management_enabled(blenderscene); | |||||
| m_hasworld = true; | m_hasworld = true; | ||||
| m_hasmist = ((blenderworld->mode) & WO_MIST ? true : false); | m_hasmist = ((blenderworld->mode) & WO_MIST ? true : false); | ||||
| m_misttype = blenderworld->mistype; | m_misttype = blenderworld->mistype; | ||||
| m_miststart = blenderworld->miststa; | m_miststart = blenderworld->miststa; | ||||
| m_mistdistance = blenderworld->mistdist; | m_mistdistance = blenderworld->mistdist; | ||||
| m_mistintensity = blenderworld->misi; | m_mistintensity = blenderworld->misi; | ||||
| copy_v3_v3(m_mistcolor, &blenderworld->horr); | setMistColor(blenderworld->horr, blenderworld->horg, blenderworld->horb); | ||||
| copy_v3_v3(m_backgroundcolor, &blenderworld->horr); | setBackColor(blenderworld->horr, blenderworld->horg, blenderworld->horb); | ||||
| copy_v3_v3(m_ambientcolor, &blenderworld->ambr); | setAmbientColor(blenderworld->ambr, blenderworld->ambg, blenderworld->ambb); | ||||
| if (BKE_scene_check_color_management_enabled(blenderscene)) { | |||||
| linearrgb_to_srgb_v3_v3(m_mistcolor, m_mistcolor); | |||||
| linearrgb_to_srgb_v3_v3(m_backgroundcolor, m_backgroundcolor); | |||||
| linearrgb_to_srgb_v3_v3(m_ambientcolor, m_ambientcolor); | |||||
| } | |||||
| } | } | ||||
| else { | else { | ||||
| m_hasworld = false; | m_hasworld = false; | ||||
| } | } | ||||
| } | } | ||||
| BlenderWorldInfo::~BlenderWorldInfo() | BlenderWorldInfo::~BlenderWorldInfo() | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | float BlenderWorldInfo::getMistColorBlue() | ||||
| return m_mistcolor[2]; | return m_mistcolor[2]; | ||||
| } | } | ||||
| void BlenderWorldInfo::setBackColor(float r, float g, float b) | void BlenderWorldInfo::setBackColor(float r, float g, float b) | ||||
| { | { | ||||
| m_backgroundcolor[0] = r; | m_backgroundcolor[0] = r; | ||||
| m_backgroundcolor[1] = g; | m_backgroundcolor[1] = g; | ||||
| m_backgroundcolor[2] = b; | m_backgroundcolor[2] = b; | ||||
| if (m_do_color_management) { | |||||
| linearrgb_to_srgb_v3_v3(m_con_backgroundcolor, m_backgroundcolor); | |||||
| } | |||||
| else { | |||||
| copy_v3_v3(m_con_backgroundcolor, m_backgroundcolor); | |||||
| } | |||||
| } | } | ||||
| void BlenderWorldInfo::setMistType(short type) | void BlenderWorldInfo::setMistType(short type) | ||||
| { | { | ||||
| m_misttype = type; | m_misttype = type; | ||||
| } | } | ||||
| void BlenderWorldInfo::setUseMist(bool enable) | void BlenderWorldInfo::setUseMist(bool enable) | ||||
| Show All 15 Lines | |||||
| { | { | ||||
| m_mistintensity = intensity; | m_mistintensity = intensity; | ||||
| } | } | ||||
| void BlenderWorldInfo::setMistColor(float r, float g, float b) | void BlenderWorldInfo::setMistColor(float r, float g, float b) | ||||
| { | { | ||||
| m_mistcolor[0] = r; | m_mistcolor[0] = r; | ||||
| m_mistcolor[1] = g; | m_mistcolor[1] = g; | ||||
| m_mistcolor[2] = b; | m_mistcolor[2] = b; | ||||
| if (m_do_color_management) { | |||||
| linearrgb_to_srgb_v3_v3(m_con_mistcolor, m_mistcolor); | |||||
| } | |||||
| else { | |||||
| copy_v3_v3(m_con_mistcolor, m_mistcolor); | |||||
| } | |||||
| } | } | ||||
| void BlenderWorldInfo::setAmbientColor(float r, float g, float b) | void BlenderWorldInfo::setAmbientColor(float r, float g, float b) | ||||
| { | { | ||||
| m_ambientcolor[0] = r; | m_ambientcolor[0] = r; | ||||
| m_ambientcolor[1] = g; | m_ambientcolor[1] = g; | ||||
| m_ambientcolor[2] = b; | m_ambientcolor[2] = b; | ||||
| if (m_do_color_management) { | |||||
| linearrgb_to_srgb_v3_v3(m_con_ambientcolor, m_ambientcolor); | |||||
| } | |||||
| else { | |||||
| copy_v3_v3(m_con_ambientcolor, m_ambientcolor); | |||||
| } | |||||
| } | } | ||||
| void BlenderWorldInfo::UpdateBackGround() | void BlenderWorldInfo::UpdateBackGround() | ||||
| { | { | ||||
| if (m_hasworld) { | if (m_hasworld) { | ||||
| RAS_IRasterizer *m_rasterizer = KX_GetActiveEngine()->GetRasterizer(); | RAS_IRasterizer *m_rasterizer = KX_GetActiveEngine()->GetRasterizer(); | ||||
| if (m_rasterizer->GetDrawingMode() >= RAS_IRasterizer::KX_SOLID) { | if (m_rasterizer->GetDrawingMode() >= RAS_IRasterizer::KX_SOLID) { | ||||
| m_rasterizer->SetBackColor(m_backgroundcolor); | m_rasterizer->SetBackColor(m_con_backgroundcolor); | ||||
| GPU_horizon_update_color(m_backgroundcolor); | GPU_horizon_update_color(m_backgroundcolor); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void BlenderWorldInfo::UpdateWorldSettings() | void BlenderWorldInfo::UpdateWorldSettings() | ||||
| { | { | ||||
| if (m_hasworld) { | if (m_hasworld) { | ||||
| RAS_IRasterizer *m_rasterizer = KX_GetActiveEngine()->GetRasterizer(); | RAS_IRasterizer *m_rasterizer = KX_GetActiveEngine()->GetRasterizer(); | ||||
| if (m_rasterizer->GetDrawingMode() >= RAS_IRasterizer::KX_SOLID) { | if (m_rasterizer->GetDrawingMode() >= RAS_IRasterizer::KX_SOLID) { | ||||
| m_rasterizer->SetAmbientColor(m_ambientcolor); | m_rasterizer->SetAmbientColor(m_con_ambientcolor); | ||||
| GPU_ambient_update_color(m_ambientcolor); | GPU_ambient_update_color(m_ambientcolor); | ||||
| if (m_hasmist) { | if (m_hasmist) { | ||||
| m_rasterizer->SetFog(m_misttype, m_miststart, m_mistdistance, m_mistintensity, m_mistcolor); | m_rasterizer->SetFog(m_misttype, m_miststart, m_mistdistance, m_mistintensity, m_con_mistcolor); | ||||
| GPU_mist_update_values(m_misttype, m_miststart, m_mistdistance, m_mistintensity, m_mistcolor); | GPU_mist_update_values(m_misttype, m_miststart, m_mistdistance, m_mistintensity, m_mistcolor); | ||||
| m_rasterizer->EnableFog(true); | m_rasterizer->EnableFog(true); | ||||
| GPU_mist_update_enable(true); | GPU_mist_update_enable(true); | ||||
| } | } | ||||
| else { | else { | ||||
| m_rasterizer->EnableFog(false); | m_rasterizer->EnableFog(false); | ||||
| GPU_mist_update_enable(false); | GPU_mist_update_enable(false); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||