2017-01-03 14:57:46 +00:00
|
|
|
#pragma once
|
2017-01-07 15:46:51 +00:00
|
|
|
#include <map>
|
2017-01-07 09:40:50 +00:00
|
|
|
#include <vector>
|
2017-01-03 14:57:46 +00:00
|
|
|
#include "CombinerKey.h"
|
|
|
|
|
|
|
|
namespace graphics {
|
|
|
|
|
|
|
|
class CombinerProgram
|
|
|
|
{
|
|
|
|
public:
|
2017-01-07 09:40:50 +00:00
|
|
|
virtual ~CombinerProgram() {}
|
2017-01-03 14:57:46 +00:00
|
|
|
virtual void activate() = 0;
|
|
|
|
virtual void update(bool _force) = 0;
|
2017-01-10 11:15:35 +00:00
|
|
|
|
2017-12-14 08:45:41 +00:00
|
|
|
virtual const CombinerKey & getKey() const = 0;
|
2017-01-10 11:15:35 +00:00
|
|
|
|
2017-01-05 11:05:47 +00:00
|
|
|
virtual bool usesTexture() const = 0;
|
|
|
|
virtual bool usesTile(u32 _t) const = 0;
|
|
|
|
virtual bool usesShade() const = 0;
|
|
|
|
virtual bool usesLOD() const = 0;
|
2017-01-10 14:58:09 +00:00
|
|
|
virtual bool usesHwLighting() const = 0;
|
2017-01-05 11:05:47 +00:00
|
|
|
|
2017-01-07 15:46:51 +00:00
|
|
|
virtual bool getBinaryForm(std::vector<char> & _buffer) = 0;
|
2017-01-07 09:40:50 +00:00
|
|
|
|
2017-10-29 08:49:44 +00:00
|
|
|
static u32 getShaderCombinerOptionsBits();
|
2017-01-03 14:57:46 +00:00
|
|
|
};
|
|
|
|
|
2017-01-07 15:46:51 +00:00
|
|
|
typedef std::map<CombinerKey, graphics::CombinerProgram *> Combiners;
|
2017-01-03 14:57:46 +00:00
|
|
|
}
|