48 lines
1.0 KiB
C++
48 lines
1.0 KiB
C++
/* -----------------------------------------------------------------------------
|
|
nEngine - GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __GPU_SHADER_COMPILER__
|
|
#define __GPU_SHADER_COMPILER__
|
|
|
|
|
|
#include "gpu/gpu_shader_object.h"
|
|
|
|
|
|
namespace GS {
|
|
class String;
|
|
|
|
namespace Core { struct Shader; }
|
|
namespace GPU {
|
|
struct Shader;
|
|
class Renderer;
|
|
|
|
/*!
|
|
@short GPU shader compiler interface.
|
|
@author Emmanuel Julien (ejulien@owloh.com)
|
|
*/
|
|
class IShaderCompiler
|
|
{
|
|
protected:
|
|
|
|
Renderer &renderer;
|
|
|
|
virtual bool Link(const Core::Shader &, Shader &) = 0;
|
|
virtual bool CompileObject(const char *source, ShaderObject &, ShaderObject::Type, const char *source_name, String *error_log) = 0;
|
|
|
|
public:
|
|
|
|
virtual bool Compile(const Core::Shader &, Shader &, const char *binary_cache_id = 0);
|
|
|
|
IShaderCompiler(Renderer &r) : renderer(r) {}
|
|
virtual ~IShaderCompiler() {}
|
|
};
|
|
|
|
} // GPU
|
|
} // GS
|
|
|
|
|
|
#endif // __GPU_SHADER_COMPILER__
|