include/rays/shader.h in rays-0.1.28 vs include/rays/shader.h in rays-0.1.29
- old
+ new
@@ -2,31 +2,40 @@
#pragma once
#ifndef __RAYS_SHADER_H__
#define __RAYS_SHADER_H__
+#include <vector>
#include <xot/pimpl.h>
#include <rays/defs.h>
#include <rays/coord.h>
namespace Rays
{
class Image;
+ class ShaderEnv;
class Shader
{
typedef Shader This;
public:
- Shader (const char* source = NULL);
+ Shader (
+ const char* fragment_shader_source = NULL,
+ const char* vertex_shader_source = NULL);
+ Shader (
+ const char* fragment_shader_source,
+ const char* vertex_shader_source,
+ ShaderEnv env);
+
~Shader ();
void set_uniform (const char* name, int arg1);
void set_uniform (const char* name, int arg1, int arg2);
@@ -53,10 +62,14 @@
void set_uniform (const char* name, const Coord4& vec4);
void set_uniform (const char* name, const Image& texture);
+ const char* vertex_shader_source () const;
+
+ const char* fragment_shader_source () const;
+
operator bool () const;
bool operator ! () const;
friend bool operator == (const This& lhs, const This& rhs);
@@ -66,9 +79,43 @@
struct Data;
Xot::PSharedImpl<Data> self;
};// Shader
+
+
+ class ShaderEnv
+ {
+
+ public:
+
+ typedef std::vector<String> NameList;
+
+ enum Flags
+ {
+ IGNORE_NO_UNIFORM_LOCATION_ERROR = 0x1 << 0,
+ };
+
+ ShaderEnv (
+ const NameList& attribute_position_names = {},
+ const NameList& attribute_texcoord_names = {},
+ const NameList& attribute_color_names = {},
+ const char* varying_position_name = NULL,
+ const char* varying_texcoord_name = NULL,
+ const char* varying_color_name = NULL,
+ const NameList& uniform_position_matrix_names = {},
+ const NameList& uniform_texcoord_matrix_names = {},
+ const NameList& uniform_texcoord_min_names = {},
+ const NameList& uniform_texcoord_max_names = {},
+ const NameList& uniform_texcoord_offset_names = {},
+ const NameList& uniform_texture_names = {},
+ uint flags = 0);
+
+ struct Data;
+
+ Xot::PSharedImpl<Data> self;
+
+ };// ShaderEnv
}// Rays