summaryrefslogtreecommitdiff
path: root/src/core/shader.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-12-08 10:59:54 +0800
committerchai <chaifix@163.com>2019-12-08 10:59:54 +0800
commitfb2791c41847d76327b6665398b44be41a44c02d (patch)
treee6083a40093f04520079b89e87fbcc47caf5f598 /src/core/shader.h
parent8518e135ff5c312bd5a3b496d400c751aa3bd5b3 (diff)
*misc
Diffstat (limited to 'src/core/shader.h')
-rw-r--r--src/core/shader.h80
1 files changed, 44 insertions, 36 deletions
diff --git a/src/core/shader.h b/src/core/shader.h
index 224ebb4..f663a47 100644
--- a/src/core/shader.h
+++ b/src/core/shader.h
@@ -3,6 +3,7 @@
#include "../math/math.h"
#include "vert.h"
+#include "texture.h"
typedef struct UniformCollection {
/*built in varaibles*/
@@ -12,6 +13,7 @@ typedef struct UniformCollection {
Mat4* mvp;
Mat4* mv;
/*extra variables*/
+ Texture* var_tex[12];
Mat4 var_mat4[8];
Vec4 var_vec4[8];
Vec3 var_vec3[8];
@@ -21,6 +23,7 @@ typedef struct UniformCollection {
void* userdata;
} UniformCollection;
+#define TEX(i) (&uniforms->var_tex[i])
#define UM4(i) (&uniforms->var_mat4[i])
#define UV2(i) (&uniforms->var_vec2[i])
#define UV3(i) (&uniforms->var_vec3[i])
@@ -59,56 +62,55 @@ typedef struct Program {
#define VARYING_NONE (0)
-#define VARYING_POSITION (1 << 31)
-#define VARYING_NORMAL (1 << 30)
-#define VARYING_TANGENT (1 << 29)
-#define VARYING_TEXCOORD (1 << 28)
-#define VARYING_COLOR (1 << 27)
-#define VARYING_JOINT (1 << 26)
-#define VARYING_WEIGHT (1 << 25)
+#define VARYING_POSITION (1U << 31)
+#define VARYING_NORMAL (1U << 30)
+#define VARYING_TANGENT (1U << 29)
+#define VARYING_TEXCOORD (1U << 28)
+#define VARYING_COLOR (1U << 27)
+#define VARYING_JOINT (1U << 26)
+#define VARYING_WEIGHT (1U << 25)
-#define VARYING_UNUSED (1 << 24)
+#define VARYING_UNUSED (1U << 24)
#define VARYING_BASIC ( VARYING_UNUSED | VARYING_POSITION | VARYING_NORMAL | VARYING_TANGENT | VARYING_TEXCOORD | VARYING_COLOR | VARYING_JOINT | VARYING_WEIGHT )
-#define VARYING_NUM_00 (1 << 20)
-#define VARYING_NUM_01 (1 << 21)
-#define VARYING_NUM_02 (1 << 22)
-#define VARYING_NUM_03 (1 << 23)
+#define VARYING_NUM_00 (1U << 20)
+#define VARYING_NUM_01 (1U << 21)
+#define VARYING_NUM_02 (1U << 22)
+#define VARYING_NUM_03 (1U << 23)
#define VARYING_NUM (VARYING_NUM_00 | VARYING_NUM_01 | VARYING_NUM_02 | VARYING_NUM_03 )
-
-#define VARYING_V2_00 (1)
-#define VARYING_V2_01 (1 << 1)
-#define VARYING_V2_02 (1 << 2)
-#define VARYING_V2_03 (1 << 3)
-#define VARYING_V2_04 (1 << 4)
-#define VARYING_V2_05 (1 << 5)
+
+#define VARYING_V2_00 (1U)
+#define VARYING_V2_01 (1U << 1)
+#define VARYING_V2_02 (1U << 2)
+#define VARYING_V2_03 (1U << 3)
+#define VARYING_V2_04 (1U << 4)
+#define VARYING_V2_05 (1U << 5)
#define VARYING_V2 (VARYING_V2_00 | VARYING_V2_01 | VARYING_V2_02 | VARYING_V2_03 | VARYING_V2_04 | VARYING_V2_05)
-
-#define VARYING_V3_00 (1 << 6)
-#define VARYING_V3_01 (1 << 7)
-#define VARYING_V3_02 (1 << 8)
-#define VARYING_V3_03 (1 << 9)
-#define VARYING_V3_04 (1 << 10)
-#define VARYING_V3_05 (1 << 11)
-#define VARYING_V3_06 (1 << 12)
-#define VARYING_V3_07 (1 << 13)
+
+#define VARYING_V3_00 (1U << 6)
+#define VARYING_V3_01 (1U << 7)
+#define VARYING_V3_02 (1U << 8)
+#define VARYING_V3_03 (1U << 9)
+#define VARYING_V3_04 (1U << 10)
+#define VARYING_V3_05 (1U << 11)
+#define VARYING_V3_06 (1U << 12)
+#define VARYING_V3_07 (1U << 13)
#define VARYING_V3 (VARYING_V3_00 | VARYING_V3_01 | VARYING_V3_02 | VARYING_V3_03 | VARYING_V3_04 | VARYING_V3_05| VARYING_V3_06| VARYING_V3_07)
-
-#define VARYING_V4_00 (1 << 14)
-#define VARYING_V4_01 (1 << 15)
-#define VARYING_V4_02 (1 << 16)
-#define VARYING_V4_03 (1 << 17)
-#define VARYING_V4_04 (1 << 18)
-#define VARYING_V4_05 (1 << 19)
+
+#define VARYING_V4_00 (1U << 14)
+#define VARYING_V4_01 (1U << 15)
+#define VARYING_V4_02 (1U << 16)
+#define VARYING_V4_03 (1U << 17)
+#define VARYING_V4_04 (1U << 18)
+#define VARYING_V4_05 (1U << 19)
#define VARYING_V4 (VARYING_V4_00 | VARYING_V4_01 | VARYING_V4_02 | VARYING_V4_03 | VARYING_V4_04 | VARYING_V4_05)
#define VARYING_EXTRA (VARYING_NUM | VARYING_V2 | VARYING_V3 | VARYING_V4)
-
float* ssrS_bcpnum(Vec3* bc, float A, float B, float C, float* out);
Color* ssrS_bcpcolor(Vec3* bc, Color A, Color B, Color C, Color* out);
Vec2* ssrS_bcpvec2(Vec3* bc, Vec2* A, Vec2* B, Vec2* C, Vec2* out);
@@ -193,4 +195,10 @@ void ssrS_setupregisterpoints(uint extra_varying_flag, int idx);
/*设置寄存器指针,指向fragIn结构*/
void ssrS_setregtofragin(uint extra_varying_flag, FragmentShaderIn* frag_in);
+
+/*
+** texture
+*/
+Color32 texture2d(float x, float y);
+
#endif \ No newline at end of file