forked from teamnwah/openmw-tes3coop
Merge remote branch 'scrawl/graphics'
Conflicts: apps/openmw/mwrender/renderingmanager.cppactorid
commit
7938566004
@ -0,0 +1,49 @@
|
|||||||
|
#include "compositors.hpp"
|
||||||
|
|
||||||
|
#include <OgreViewport.h>
|
||||||
|
#include <OgreCompositorManager.h>
|
||||||
|
|
||||||
|
using namespace MWRender;
|
||||||
|
|
||||||
|
Compositors::Compositors(Ogre::Viewport* vp) :
|
||||||
|
mViewport(vp)
|
||||||
|
, mEnabled(true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Compositors::~Compositors()
|
||||||
|
{
|
||||||
|
Ogre::CompositorManager::getSingleton().removeCompositorChain(mViewport);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Compositors::setEnabled (const bool enabled)
|
||||||
|
{
|
||||||
|
for (CompositorMap::iterator it=mCompositors.begin();
|
||||||
|
it != mCompositors.end(); ++it)
|
||||||
|
{
|
||||||
|
Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, it->first, enabled && it->second.first);
|
||||||
|
}
|
||||||
|
mEnabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Compositors::addCompositor (const std::string& name, const int priority)
|
||||||
|
{
|
||||||
|
int id = 0;
|
||||||
|
|
||||||
|
for (CompositorMap::iterator it=mCompositors.begin();
|
||||||
|
it != mCompositors.end(); ++it)
|
||||||
|
{
|
||||||
|
if (it->second.second > priority)
|
||||||
|
break;
|
||||||
|
++id;
|
||||||
|
}
|
||||||
|
Ogre::CompositorManager::getSingleton().addCompositor (mViewport, name, id);
|
||||||
|
|
||||||
|
mCompositors[name] = std::make_pair(false, priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Compositors::setCompositorEnabled (const std::string& name, const bool enabled)
|
||||||
|
{
|
||||||
|
mCompositors[name].first = enabled;
|
||||||
|
Ogre::CompositorManager::getSingleton().setCompositorEnabled (mViewport, name, enabled && mEnabled);
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
#ifndef GAME_MWRENDER_COMPOSITORS_H
|
||||||
|
#define GAME_MWRENDER_COMPOSITORS_H
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace Ogre
|
||||||
|
{
|
||||||
|
class Viewport;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MWRender
|
||||||
|
{
|
||||||
|
typedef std::map < std::string, std::pair<bool, int> > CompositorMap;
|
||||||
|
|
||||||
|
/// \brief Manages a set of compositors for one viewport
|
||||||
|
class Compositors
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Compositors(Ogre::Viewport* vp);
|
||||||
|
virtual ~Compositors();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable or disable all compositors globally
|
||||||
|
*/
|
||||||
|
void setEnabled (const bool enabled);
|
||||||
|
|
||||||
|
bool toggle() { setEnabled(!mEnabled); return mEnabled; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable or disable a specific compositor
|
||||||
|
* @note enable has no effect if all compositors are globally disabled
|
||||||
|
*/
|
||||||
|
void setCompositorEnabled (const std::string& name, const bool enabled);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param name of compositor
|
||||||
|
* @param priority, lower number will be first in the chain
|
||||||
|
*/
|
||||||
|
void addCompositor (const std::string& name, const int priority);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/// maps compositor name to its "enabled" state
|
||||||
|
CompositorMap mCompositors;
|
||||||
|
|
||||||
|
bool mEnabled;
|
||||||
|
|
||||||
|
Ogre::Viewport* mViewport;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -1,67 +1,73 @@
|
|||||||
vertex_program depth_shadow_caster_vs cg
|
vertex_program depth_shadow_caster_vs cg
|
||||||
{
|
{
|
||||||
source depthshadowcaster.cg
|
source depthshadowcaster.cg
|
||||||
profiles vs_1_1 arbvp1
|
profiles vs_1_1 arbvp1
|
||||||
entry_point main_vp
|
entry_point main_vp
|
||||||
|
|
||||||
default_params
|
default_params
|
||||||
{
|
{
|
||||||
param_named_auto wvpMat worldviewproj_matrix
|
param_named_auto wvpMat worldviewproj_matrix
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment_program depth_shadow_caster_ps cg
|
fragment_program depth_shadow_caster_ps cg
|
||||||
{
|
{
|
||||||
source depthshadowcaster.cg
|
source depthshadowcaster.cg
|
||||||
profiles ps_2_0 arbfp1
|
profiles ps_2_0 arbfp1
|
||||||
entry_point main_fp
|
entry_point main_fp
|
||||||
|
|
||||||
default_params
|
default_params
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment_program depth_shadow_caster_ps_noalpha cg
|
fragment_program depth_shadow_caster_ps_noalpha cg
|
||||||
{
|
{
|
||||||
source depthshadowcaster.cg
|
source depthshadowcaster.cg
|
||||||
profiles ps_2_0 arbfp1
|
profiles ps_2_0 arbfp1
|
||||||
entry_point main_fp_noalpha
|
entry_point main_fp_noalpha
|
||||||
|
|
||||||
default_params
|
default_params
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
material depth_shadow_caster
|
material depth_shadow_caster
|
||||||
{
|
{
|
||||||
technique
|
technique
|
||||||
{
|
{
|
||||||
pass
|
pass
|
||||||
{
|
{
|
||||||
vertex_program_ref depth_shadow_caster_vs
|
// force-disable fog (relevant for DirectX profiles below SM3 that always apply fixed function fog)
|
||||||
{
|
fog_override true
|
||||||
}
|
|
||||||
|
|
||||||
fragment_program_ref depth_shadow_caster_ps
|
vertex_program_ref depth_shadow_caster_vs
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
fragment_program_ref depth_shadow_caster_ps
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
material depth_shadow_caster_noalpha
|
material depth_shadow_caster_noalpha
|
||||||
{
|
{
|
||||||
technique
|
technique
|
||||||
{
|
{
|
||||||
pass
|
pass
|
||||||
{
|
{
|
||||||
vertex_program_ref depth_shadow_caster_vs
|
// force-disable fog (relevant for DirectX profiles below SM3 that always apply fixed function fog)
|
||||||
{
|
fog_override true
|
||||||
}
|
|
||||||
|
vertex_program_ref depth_shadow_caster_vs
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
fragment_program_ref depth_shadow_caster_ps_noalpha
|
fragment_program_ref depth_shadow_caster_ps_noalpha
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue