Replaced KRReverbZone with KRAmbientSphere, to support Siren audio engine reverb zones
This commit is contained in:
@@ -168,10 +168,10 @@
|
||||
E4924C2715EE95E800B965C6 /* KROctree.h in Headers */ = {isa = PBXBuildFile; fileRef = E4924C2515EE95E800B965C6 /* KROctree.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E4924C2B15EE96AB00B965C6 /* KROctreeNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */; };
|
||||
E4924C2C15EE96AB00B965C6 /* KROctreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E4924C2A15EE96AA00B965C6 /* KROctreeNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E4943231169E08D200BCB891 /* KRReverbZone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRReverbZone.cpp */; };
|
||||
E4943232169E08D200BCB891 /* KRReverbZone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRReverbZone.cpp */; };
|
||||
E4943233169E08D200BCB891 /* KRReverbZone.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRReverbZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E4943234169E08D200BCB891 /* KRReverbZone.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRReverbZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E4943231169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */; };
|
||||
E4943232169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */; };
|
||||
E4943233169E08D200BCB891 /* KRAmbientSphere.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRAmbientSphere.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E4943234169E08D200BCB891 /* KRAmbientSphere.h in Headers */ = {isa = PBXBuildFile; fileRef = E4943230169E08D200BCB891 /* KRAmbientSphere.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
E497B946151BA99500D3DC67 /* KRVector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E497B945151BA99400D3DC67 /* KRVector2.cpp */; };
|
||||
E497B947151BA99500D3DC67 /* KRVector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E497B945151BA99400D3DC67 /* KRVector2.cpp */; };
|
||||
E497B948151BB89D00D3DC67 /* KRVector2.h in Headers */ = {isa = PBXBuildFile; fileRef = E497B943151BA93400D3DC67 /* KRVector2.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@@ -467,8 +467,8 @@
|
||||
E4924C2515EE95E800B965C6 /* KROctree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KROctree.h; sourceTree = "<group>"; };
|
||||
E4924C2915EE96AA00B965C6 /* KROctreeNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KROctreeNode.cpp; sourceTree = "<group>"; };
|
||||
E4924C2A15EE96AA00B965C6 /* KROctreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KROctreeNode.h; sourceTree = "<group>"; };
|
||||
E494322F169E08D200BCB891 /* KRReverbZone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = KRReverbZone.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||
E4943230169E08D200BCB891 /* KRReverbZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRReverbZone.h; sourceTree = "<group>"; };
|
||||
E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = KRAmbientSphere.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
|
||||
E4943230169E08D200BCB891 /* KRAmbientSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KRAmbientSphere.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||
E497B943151BA93400D3DC67 /* KRVector2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KRVector2.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||
E497B945151BA99400D3DC67 /* KRVector2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRVector2.cpp; sourceTree = "<group>"; };
|
||||
E497B949151BCEE900D3DC67 /* KRResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRResource.h; sourceTree = "<group>"; };
|
||||
@@ -891,8 +891,8 @@
|
||||
children = (
|
||||
E48B68131697794F00D99917 /* KRAudioSource.cpp */,
|
||||
E48B68141697794F00D99917 /* KRAudioSource.h */,
|
||||
E494322F169E08D200BCB891 /* KRReverbZone.cpp */,
|
||||
E4943230169E08D200BCB891 /* KRReverbZone.h */,
|
||||
E494322F169E08D200BCB891 /* KRAmbientSphere.cpp */,
|
||||
E4943230169E08D200BCB891 /* KRAmbientSphere.h */,
|
||||
);
|
||||
name = Audio;
|
||||
sourceTree = "<group>";
|
||||
@@ -1197,7 +1197,7 @@
|
||||
E4F027C916979CCD00D4427D /* KRAudioManager.h in Headers */,
|
||||
E4F027D016979CE200D4427D /* KRAudioSample.h in Headers */,
|
||||
E4F027E01697BFFF00D4427D /* KRAudioBuffer.h in Headers */,
|
||||
E4943233169E08D200BCB891 /* KRReverbZone.h in Headers */,
|
||||
E4943233169E08D200BCB891 /* KRAmbientSphere.h in Headers */,
|
||||
E499BF1B16AE747C007FCDBE /* KRVector2.h in Headers */,
|
||||
E499BF1E16AE751E007FCDBE /* KRSceneManager.h in Headers */,
|
||||
E499BF2016AE755B007FCDBE /* KRPointLight.h in Headers */,
|
||||
@@ -1268,7 +1268,7 @@
|
||||
E4F027CA16979CCD00D4427D /* KRAudioManager.h in Headers */,
|
||||
E4F027D116979CE200D4427D /* KRAudioSample.h in Headers */,
|
||||
E4F027E11697BFFF00D4427D /* KRAudioBuffer.h in Headers */,
|
||||
E4943234169E08D200BCB891 /* KRReverbZone.h in Headers */,
|
||||
E4943234169E08D200BCB891 /* KRAmbientSphere.h in Headers */,
|
||||
E414F9AF1694DA37000B3D58 /* KRUnknown.h in Headers */,
|
||||
E499BF2216AE760F007FCDBE /* krengine_osx.h in Headers */,
|
||||
E4FE6AA916B21D660058B8CE /* forsyth.h in Headers */,
|
||||
@@ -1535,7 +1535,7 @@
|
||||
E4F027C716979CCD00D4427D /* KRAudioManager.cpp in Sources */,
|
||||
E4F027CE16979CE200D4427D /* KRAudioSample.cpp in Sources */,
|
||||
E4F027DE1697BFFF00D4427D /* KRAudioBuffer.cpp in Sources */,
|
||||
E4943231169E08D200BCB891 /* KRReverbZone.cpp in Sources */,
|
||||
E4943231169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */,
|
||||
E4FE6AAB16B21D7E0058B8CE /* forsyth.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -1606,7 +1606,7 @@
|
||||
E4F027C816979CCD00D4427D /* KRAudioManager.cpp in Sources */,
|
||||
E4F027CF16979CE200D4427D /* KRAudioSample.cpp in Sources */,
|
||||
E4F027DF1697BFFF00D4427D /* KRAudioBuffer.cpp in Sources */,
|
||||
E4943232169E08D200BCB891 /* KRReverbZone.cpp in Sources */,
|
||||
E4943232169E08D200BCB891 /* KRAmbientSphere.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
172
KREngine/kraken/KRAmbientSphere.cpp
Normal file
172
KREngine/kraken/KRAmbientSphere.cpp
Normal file
@@ -0,0 +1,172 @@
|
||||
//
|
||||
// KRAmbientSphere.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 2012-12-06.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include "KRAmbientSphere.h"
|
||||
#include "KRContext.h"
|
||||
|
||||
KRAmbientSphere::KRAmbientSphere(KRScene &scene, std::string name) : KRNode(scene, name)
|
||||
{
|
||||
m_ambient = "";
|
||||
m_reverb = "";
|
||||
m_ambient_gain = 1.0f;
|
||||
m_reverb_gain = 1.0f;
|
||||
m_gradient_distance = 1.0f;
|
||||
|
||||
}
|
||||
|
||||
KRAmbientSphere::~KRAmbientSphere()
|
||||
{
|
||||
}
|
||||
|
||||
std::string KRAmbientSphere::getElementName() {
|
||||
return "ambient_sphere";
|
||||
}
|
||||
|
||||
tinyxml2::XMLElement *KRAmbientSphere::saveXML( tinyxml2::XMLNode *parent)
|
||||
{
|
||||
tinyxml2::XMLElement *e = KRNode::saveXML(parent);
|
||||
e->SetAttribute("zone", m_zone.c_str());
|
||||
e->SetAttribute("ambient", m_ambient.c_str());
|
||||
e->SetAttribute("ambient_gain", m_ambient_gain);
|
||||
e->SetAttribute("reverb", m_reverb.c_str());
|
||||
e->SetAttribute("reverb_gain", m_reverb_gain);
|
||||
e->SetAttribute("gradient", m_gradient_distance);
|
||||
return e;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::loadXML(tinyxml2::XMLElement *e)
|
||||
{
|
||||
KRNode::loadXML(e);
|
||||
|
||||
m_zone = e->Attribute("zone");
|
||||
|
||||
m_gradient_distance = 1.0f;
|
||||
if(e->QueryFloatAttribute("gradient", &m_gradient_distance) != tinyxml2::XML_SUCCESS) {
|
||||
m_gradient_distance = 1.0f;
|
||||
}
|
||||
|
||||
m_reverb = e->Attribute("reverb");
|
||||
|
||||
m_reverb_gain = 1.0f;
|
||||
if(e->QueryFloatAttribute("reverb_gain", &m_reverb_gain) != tinyxml2::XML_SUCCESS) {
|
||||
m_reverb_gain = 1.0f;
|
||||
}
|
||||
|
||||
m_ambient = e->Attribute("ambient");
|
||||
|
||||
m_ambient_gain = 1.0f;
|
||||
if(e->QueryFloatAttribute("ambient_gain", &m_ambient_gain) != tinyxml2::XML_SUCCESS) {
|
||||
m_ambient_gain = 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
std::string KRAmbientSphere::getReverb()
|
||||
{
|
||||
return m_reverb;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setReverb(const std::string &reverb)
|
||||
{
|
||||
m_reverb = reverb;
|
||||
}
|
||||
|
||||
float KRAmbientSphere::getReverbGain()
|
||||
{
|
||||
return m_reverb_gain;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setReverbGain(float reverb_gain)
|
||||
{
|
||||
m_reverb_gain = reverb_gain;
|
||||
}
|
||||
|
||||
std::string KRAmbientSphere::getAmbient()
|
||||
{
|
||||
return m_ambient;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setAmbient(const std::string &ambient)
|
||||
{
|
||||
m_ambient = ambient;
|
||||
}
|
||||
|
||||
float KRAmbientSphere::getAmbientGain()
|
||||
{
|
||||
return m_ambient_gain;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setAmbientGain(float ambient_gain)
|
||||
{
|
||||
m_ambient_gain = ambient_gain;
|
||||
}
|
||||
|
||||
std::string KRAmbientSphere::getZone()
|
||||
{
|
||||
return m_zone;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setZone(const std::string &zone)
|
||||
{
|
||||
m_zone = zone;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KRViewport &viewport, KRNode::RenderPass renderPass)
|
||||
{
|
||||
|
||||
KRNode::render(pCamera, lights, viewport, renderPass);
|
||||
|
||||
bool bVisualize = false;
|
||||
|
||||
if(renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) {
|
||||
KRMat4 sphereModelMatrix = getModelMatrix();
|
||||
|
||||
KRShader *pShader = getContext().getShaderManager()->getShader("visualize_overlay", pCamera, lights, 0, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, renderPass);
|
||||
|
||||
if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, sphereModelMatrix, lights, 0, renderPass)) {
|
||||
|
||||
// Enable additive blending
|
||||
GLDEBUG(glEnable(GL_BLEND));
|
||||
GLDEBUG(glBlendFunc(GL_ONE, GL_ONE));
|
||||
|
||||
|
||||
// Disable z-buffer write
|
||||
GLDEBUG(glDepthMask(GL_FALSE));
|
||||
|
||||
// Enable z-buffer test
|
||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
||||
std::vector<KRMesh *> sphereModels = getContext().getModelManager()->getModel("__sphere");
|
||||
if(sphereModels.size()) {
|
||||
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
||||
sphereModels[0]->renderSubmesh(i);
|
||||
}
|
||||
}
|
||||
|
||||
// Enable alpha blending
|
||||
GLDEBUG(glEnable(GL_BLEND));
|
||||
GLDEBUG(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float KRAmbientSphere::getGradientDistance()
|
||||
{
|
||||
return m_gradient_distance;
|
||||
}
|
||||
|
||||
void KRAmbientSphere::setGradientDistance(float gradient_distance)
|
||||
{
|
||||
m_gradient_distance = gradient_distance;
|
||||
}
|
||||
|
||||
KRAABB KRAmbientSphere::getBounds() {
|
||||
// Reverb zones always have a -1, -1, -1 to 1, 1, 1 bounding box
|
||||
return KRAABB(-KRVector3::One(), KRVector3::One(), getModelMatrix());
|
||||
}
|
||||
59
KREngine/kraken/KRAmbientSphere.h
Normal file
59
KREngine/kraken/KRAmbientSphere.h
Normal file
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// KRAmbientSphere.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 2012-12-06.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KRAMBIENT_ZONE_H
|
||||
#define KRAMBIENT_ZONE_H
|
||||
|
||||
#include "KRResource.h"
|
||||
#include "KRNode.h"
|
||||
#include "KRTexture.h"
|
||||
|
||||
class KRAmbientSphere : public KRNode {
|
||||
public:
|
||||
KRAmbientSphere(KRScene &scene, std::string name);
|
||||
virtual ~KRAmbientSphere();
|
||||
virtual std::string getElementName();
|
||||
virtual tinyxml2::XMLElement *saveXML( tinyxml2::XMLNode *parent);
|
||||
virtual void loadXML(tinyxml2::XMLElement *e);
|
||||
|
||||
void render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KRViewport &viewport, KRNode::RenderPass renderPass);
|
||||
|
||||
std::string getZone();
|
||||
void setZone(const std::string &zone);
|
||||
|
||||
float getGradientDistance();
|
||||
void setGradientDistance(float gradient_distance);
|
||||
|
||||
std::string getReverb();
|
||||
void setReverb(const std::string &reverb);
|
||||
|
||||
float getReverbGain();
|
||||
void setReverbGain(float reverb_gain);
|
||||
|
||||
std::string getAmbient();
|
||||
void setAmbient(const std::string &ambient);
|
||||
|
||||
float getAmbientGain();
|
||||
void setAmbientGain(float ambient_gain);
|
||||
|
||||
virtual KRAABB getBounds();
|
||||
|
||||
private:
|
||||
std::string m_zone;
|
||||
|
||||
float m_gradient_distance;
|
||||
|
||||
std::string m_reverb;
|
||||
float m_reverb_gain;
|
||||
|
||||
std::string m_ambient;
|
||||
float m_ambient_gain;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "KRQuaternion.h"
|
||||
#include "KRBone.h"
|
||||
#include "KRAudioSource.h"
|
||||
#include "KRReverbZone.h"
|
||||
#include "KRAmbientSphere.h"
|
||||
|
||||
|
||||
KRNode::KRNode(KRScene &scene, std::string name) : KRContextObject(scene.getContext())
|
||||
@@ -241,8 +241,8 @@ KRNode *KRNode::LoadXML(KRScene &scene, tinyxml2::XMLElement *e) {
|
||||
new_node = new KRBone(scene, szName);
|
||||
} else if(strcmp(szElementName, "audio_source") == 0) {
|
||||
new_node = new KRAudioSource(scene, szName);
|
||||
} else if(strcmp(szElementName, "reverb_zone") == 0) {
|
||||
new_node = new KRReverbZone(scene, szName);
|
||||
} else if(strcmp(szElementName, "ambient_sphere") == 0) {
|
||||
new_node = new KRAmbientSphere(scene, szName);
|
||||
}
|
||||
|
||||
if(new_node) {
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
//
|
||||
// KRReverbZone.cpp
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 2012-12-06.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#include "KRReverbZone.h"
|
||||
#include "KRContext.h"
|
||||
|
||||
KRReverbZone::KRReverbZone(KRScene &scene, std::string name) : KRNode(scene, name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
KRReverbZone::~KRReverbZone()
|
||||
{
|
||||
}
|
||||
|
||||
std::string KRReverbZone::getElementName() {
|
||||
return "reverb_zone";
|
||||
}
|
||||
|
||||
tinyxml2::XMLElement *KRReverbZone::saveXML( tinyxml2::XMLNode *parent)
|
||||
{
|
||||
tinyxml2::XMLElement *e = KRNode::saveXML(parent);
|
||||
return e;
|
||||
}
|
||||
|
||||
void KRReverbZone::loadXML(tinyxml2::XMLElement *e)
|
||||
{
|
||||
KRNode::loadXML(e);
|
||||
}
|
||||
|
||||
std::string KRReverbZone::getReverbPreset()
|
||||
{
|
||||
return m_reverb_preset_name;
|
||||
}
|
||||
|
||||
void KRReverbZone::setReverbPreset(const std::string &reverb_preset_name)
|
||||
{
|
||||
m_reverb_preset_name = reverb_preset_name;
|
||||
}
|
||||
|
||||
|
||||
unsigned int KRReverbZone::getReverbSettingId()
|
||||
{
|
||||
if(m_reverb_preset_name.compare("small_room") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_SmallRoom;
|
||||
} else if(m_reverb_preset_name.compare("medium_room") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_MediumRoom;
|
||||
} else if(m_reverb_preset_name.compare("large_room") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_LargeRoom;
|
||||
} else if(m_reverb_preset_name.compare("medium_hall") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_MediumHall;
|
||||
} else if(m_reverb_preset_name.compare("large_hall") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_LargeHall;
|
||||
} else if(m_reverb_preset_name.compare("plate") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_Plate;
|
||||
} else if(m_reverb_preset_name.compare("medium_chamber") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_MediumChamber;
|
||||
} else if(m_reverb_preset_name.compare("large_chamber") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_LargeChamber;
|
||||
} else if(m_reverb_preset_name.compare("cathedral") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_Cathedral;
|
||||
} else if(m_reverb_preset_name.compare("large_room2") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_LargeRoom2;
|
||||
} else if(m_reverb_preset_name.compare("medium_hall2") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_MediumHall2;
|
||||
} else if(m_reverb_preset_name.compare("medium_hall3") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_MediumHall3;
|
||||
} else if(m_reverb_preset_name.compare("large_hall2") == 0) {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_LargeHall2;
|
||||
} else {
|
||||
return ALC_ASA_REVERB_ROOM_TYPE_SmallRoom;
|
||||
}
|
||||
}
|
||||
|
||||
void KRReverbZone::render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KRViewport &viewport, KRNode::RenderPass renderPass)
|
||||
{
|
||||
|
||||
KRNode::render(pCamera, lights, viewport, renderPass);
|
||||
|
||||
bool bVisualize = false;
|
||||
|
||||
if(renderPass == KRNode::RENDER_PASS_FORWARD_TRANSPARENT && bVisualize) {
|
||||
KRMat4 sphereModelMatrix = getModelMatrix();
|
||||
|
||||
KRShader *pShader = getContext().getShaderManager()->getShader("visualize_overlay", pCamera, lights, 0, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, renderPass);
|
||||
|
||||
if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, sphereModelMatrix, lights, 0, renderPass)) {
|
||||
|
||||
// Enable additive blending
|
||||
GLDEBUG(glEnable(GL_BLEND));
|
||||
GLDEBUG(glBlendFunc(GL_ONE, GL_ONE));
|
||||
|
||||
|
||||
// Disable z-buffer write
|
||||
GLDEBUG(glDepthMask(GL_FALSE));
|
||||
|
||||
// Enable z-buffer test
|
||||
GLDEBUG(glEnable(GL_DEPTH_TEST));
|
||||
GLDEBUG(glDepthFunc(GL_LEQUAL));
|
||||
GLDEBUG(glDepthRangef(0.0, 1.0));
|
||||
std::vector<KRMesh *> sphereModels = getContext().getModelManager()->getModel("__sphere");
|
||||
if(sphereModels.size()) {
|
||||
for(int i=0; i < sphereModels[0]->getSubmeshCount(); i++) {
|
||||
sphereModels[0]->renderSubmesh(i);
|
||||
}
|
||||
}
|
||||
|
||||
// Enable alpha blending
|
||||
GLDEBUG(glEnable(GL_BLEND));
|
||||
GLDEBUG(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float KRReverbZone::getGradientDistance()
|
||||
{
|
||||
return m_gradient_distance;
|
||||
}
|
||||
|
||||
void KRReverbZone::setGradientDistance(float gradient_distance)
|
||||
{
|
||||
m_gradient_distance = gradient_distance;
|
||||
}
|
||||
|
||||
KRAABB KRReverbZone::getBounds() {
|
||||
// Reverb zones always have a -1, -1, -1 to 1, 1, 1 bounding box
|
||||
return KRAABB(-KRVector3::One(), KRVector3::One(), getModelMatrix());
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
//
|
||||
// KRReverbZone.h
|
||||
// KREngine
|
||||
//
|
||||
// Created by Kearwood Gilbert on 2012-12-06.
|
||||
// Copyright (c) 2012 Kearwood Software. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef KRREVERB_ZONE_H
|
||||
#define KRREVERB_ZONE_H
|
||||
|
||||
#include "KRResource.h"
|
||||
#include "KRNode.h"
|
||||
#include "KRTexture.h"
|
||||
|
||||
class KRReverbZone : public KRNode {
|
||||
public:
|
||||
KRReverbZone(KRScene &scene, std::string name);
|
||||
virtual ~KRReverbZone();
|
||||
virtual std::string getElementName();
|
||||
virtual tinyxml2::XMLElement *saveXML( tinyxml2::XMLNode *parent);
|
||||
virtual void loadXML(tinyxml2::XMLElement *e);
|
||||
|
||||
void render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KRViewport &viewport, KRNode::RenderPass renderPass);
|
||||
|
||||
float getGradientDistance();
|
||||
void setGradientDistance(float gradient_distance);
|
||||
|
||||
std::string getReverbPreset();
|
||||
void setReverbPreset(const std::string &reverb_preset_name);
|
||||
|
||||
unsigned int getReverbSettingId();
|
||||
|
||||
virtual KRAABB getBounds();
|
||||
|
||||
private:
|
||||
float m_gradient_distance;
|
||||
std::string m_reverb_preset_name;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user