diff options
Diffstat (limited to 'src/core/shader.c')
-rw-r--r-- | src/core/shader.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/shader.c b/src/core/shader.c index 0490362..86c2ad6 100644 --- a/src/core/shader.c +++ b/src/core/shader.c @@ -159,6 +159,21 @@ void ssrS_solveregs(Vec3* bc, uint a, uint b, uint c) { } } +/*计算基础属性的插值,并输出*/ +void ssrS_solveprops(uint varying_flag, Vec3* bc, Vert* A, Vert* B, Vert* C) { + if (varying_flag & VARYING_BASIC) { + if (varying_flag & VARYING_POSITION) ssrS_bcpvec3(bc, &A->position, &B->position, &C->position, &ssr_frag_in.position); + if (varying_flag & VARYING_NORMAL) ssrS_bcpvec3(bc, &A->normal, &B->normal, &C->normal, &ssr_frag_in.normal); + if (varying_flag & VARYING_TANGENT) ssrS_bcpvec3(bc, &A->tangent, &B->tangent, &C->tangent, &ssr_frag_in.tangent); + if (varying_flag & VARYING_TEXCOORD) ssrS_bcpvec2(bc, &A->texcoord, &B->texcoord, &C->texcoord, &ssr_frag_in.texcoord); +/* + if (varying_flag & VARYING_JOINT) ssrS_bcpvec4(&bc, &A->joint, &B->joint, &C->joint, &ssr_frag_in.joint); + if (varying_flag & VARYING_WEIGHT) ssrS_bcpvec4(&bc, &A->weight, &B->weight, &C->weight, &ssr_frag_in.weight); +*/ + if (varying_flag & VARYING_COLOR) ssrS_bcpcolor(bc, A->color, B->color, C->color, &ssr_frag_in.color); + } +} + /*给寄存器扩容(如果需要的话)*/ void ssrS_setregisters(int capacity) { Register* reg; |