summaryrefslogtreecommitdiff
path: root/src/core/shader.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-12-23 23:59:02 +0800
committerchai <chaifix@163.com>2019-12-23 23:59:02 +0800
commitd49f3d3f73709a9a7c0bce53aa13ed28a2bd27cb (patch)
tree3fc2cca442106a56fc151c5faffbb24217ca83f5 /src/core/shader.h
parentec111247c614663d8231245a17c314b9b8b4a28c (diff)
*misc
Diffstat (limited to 'src/core/shader.h')
-rw-r--r--src/core/shader.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/core/shader.h b/src/core/shader.h
index 9ae757b..3737e8c 100644
--- a/src/core/shader.h
+++ b/src/core/shader.h
@@ -119,10 +119,6 @@ void ssrS_lerpvec2(float t, Vec2* A, Vec2* B, Vec2* out);
void ssrS_lerpvec3(float t, Vec3* A, Vec3* B, Vec3* out);
void ssrS_lerpvec4(float t, Vec4* A, Vec4* B, Vec4* out);
-/*
-** 顶点数据外,还提供额外的寄存器用来存储vertex shader输出的顶点额外数据
-** 共24个
-*/
typedef enum {
REGTYPE_NUM = 1,
REGTYPE_VEC2,
@@ -152,15 +148,15 @@ typedef struct {
byte* data; /*mutable, either of registers or temp-registers*/
byte** accessor;
BcpInterpolator bcp_interpolator;
+ LinearInterpolator linear_interpolator;
byte* output; /*fragment-in*/
} ActiveReg;
Register registers[REG_TOTAL];
ActiveReg active_regs[REG_TOTAL];
-int open_regsi[REG_TOTAL]; /*draw call用到的寄存器,可以索引到registers和active_regs*/
+int open_regsi[REG_TOTAL]; /*active registers during a draw call*/
-/*寄存器指针accessor,指向寄存器中的某个值,用于在shader里快速访问,使用错误可能会出现野指针*/
float *reg_num_00, *reg_num_01, *reg_num_02, *reg_num_03;
Vec2 *reg_v2_00, *reg_v2_01, *reg_v2_02, *reg_v2_03, *reg_v2_04, *reg_v2_05, *reg_v2_06, *reg_v2_07;
Vec3 *reg_v3_00, *reg_v3_01, *reg_v3_02, *reg_v3_03, *reg_v3_04, *reg_v3_05, *reg_v3_06, *reg_v3_07, *reg_v3_08, *reg_v3_09, *reg_v3_10, *reg_v3_11;
@@ -169,10 +165,11 @@ Vec4 *reg_v4_00, *reg_v4_01, *reg_v4_02, *reg_v4_03, *reg_v4_04, *reg_v4_05, *re
void ssrS_openregs(uint varying_flag);
void ssrS_setactiveregr();
void ssrS_setactiveregc();
-void ssrS_solveregs(Vec3* bc, uint a, uint b, uint c);
+void ssrS_solveregsbcp(Vec3* bc, uint a, uint b, uint c);
+void ssrS_solveregslerp(float t, uint ia, uint ib);
+void ssrS_solveregscopy(uint i);
void ssrS_setregisters(int capacity);
-/*设置寄存器指针,指向寄存器(在fragment阶段,指针会指向fragmentIn结构)*/
void ssrS_setupregisterpointers(int idx);
/*set register accessor, point to fragin struct*/