diff options
author | chai <chaifix@163.com> | 2019-12-23 23:59:02 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-12-23 23:59:02 +0800 |
commit | d49f3d3f73709a9a7c0bce53aa13ed28a2bd27cb (patch) | |
tree | 3fc2cca442106a56fc151c5faffbb24217ca83f5 /src/core/shader.h | |
parent | ec111247c614663d8231245a17c314b9b8b4a28c (diff) |
*misc
Diffstat (limited to 'src/core/shader.h')
-rw-r--r-- | src/core/shader.h | 13 |
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*/ |