summaryrefslogtreecommitdiff
path: root/Runtime/GfxDevice/opengl/GpuProgramsGL.h
blob: f9649dd0d73b7a66f4d78b449ca9e569a40c63d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include "Runtime/GfxDevice/GpuProgram.h"
#include "Runtime/GfxDevice/ChannelAssigns.h"

class ShaderErrors;

class GlslGpuProgram : public GpuProgramGL {
public:
	GlslGpuProgram( const std::string& source, CreateGpuProgramOutput& output );
	virtual ~GlslGpuProgram();
	
	virtual void ApplyGpuProgram (const GpuProgramParameters& params, const UInt8* buffer);

	GLShaderID	GetGLProgram (FogMode fog, GpuProgramParameters& outParams);
	
private:
	bool		Create( const std::string& source, ShaderErrors& outErrors );
	static void FillParams (GLShaderID programID, GpuProgramParameters& params, PropertyNamesSet* outNames);
	void		FillChannels (ChannelAssigns& channels);

private:
	GLShaderID	m_GLSLVertexShader[kFogModeCount];
	GLShaderID	m_GLSLFragmentShader[kFogModeCount];
	int			m_FogColorIndex[kFogModeCount];
	int			m_FogParamsIndex[kFogModeCount];
	bool		m_FogFailed[kFogModeCount];
};