summaryrefslogtreecommitdiff
path: root/graphics.h
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-09-01 12:20:21 +0000
committerrodri <rgl@antares-labs.eu>2024-09-01 12:20:21 +0000
commit406aa46cad83725c4560737aa6f2d4a40277a108 (patch)
treed20ed19fd7c4a79f9aed8f89944d8b5d44f7ef8c /graphics.h
parenta28c8cb09e4e1e6357e3b594fad33071e3224efb (diff)
downloadlibgraphics-406aa46cad83725c4560737aa6f2d4a40277a108.tar.gz
libgraphics-406aa46cad83725c4560737aa6f2d4a40277a108.tar.bz2
libgraphics-406aa46cad83725c4560737aa6f2d4a40277a108.zip
unify shaders into a single interface.
Diffstat (limited to 'graphics.h')
-rw-r--r--graphics.h30
1 files changed, 12 insertions, 18 deletions
diff --git a/graphics.h b/graphics.h
index 106f467..a361491 100644
--- a/graphics.h
+++ b/graphics.h
@@ -53,9 +53,7 @@ typedef struct Primitive Primitive;
typedef struct Model Model;
typedef struct Entity Entity;
typedef struct Scene Scene;
-typedef struct VSparams VSparams;
-typedef struct FSoutput FSoutput;
-typedef struct FSparams FSparams;
+typedef struct Shaderparams Shaderparams;
typedef struct SUparams SUparams;
typedef struct Shadertab Shadertab;
typedef struct Renderer Renderer;
@@ -198,21 +196,17 @@ struct Scene
Entity *(*getent)(Scene*, char*);
};
-/* shader params */
-struct VSparams
+struct Shaderparams
{
SUparams *su;
Vertex *v;
- uint idx;
-};
-
-struct FSparams
-{
- SUparams *su;
- Point p;
- Vertex v; /* only for the attributes (varyings) */
+ Point p; /* fragment position (fshader-only) */
+ uint idx; /* vertex index (vshader-only) */
- void (*toraster)(FSparams*, char*, void*);
+ Vertexattr *(*getuniform)(Shaderparams*, char*);
+ Vertexattr *(*getattr)(Shaderparams*, char*);
+ void (*setattr)(Shaderparams*, char*, int, void*);
+ void (*toraster)(Shaderparams*, char*, void*);
};
/* shader unit params */
@@ -226,15 +220,15 @@ struct SUparams
uvlong uni_time;
- Point3 (*vshader)(VSparams*);
- Color (*fshader)(FSparams*);
+ Point3 (*vshader)(Shaderparams*);
+ Color (*fshader)(Shaderparams*);
};
struct Shadertab
{
char *name;
- Point3 (*vshader)(VSparams*); /* vertex shader */
- Color (*fshader)(FSparams*); /* fragment shader */
+ Point3 (*vshader)(Shaderparams*); /* vertex shader */
+ Color (*fshader)(Shaderparams*); /* fragment shader */
};
struct Renderer