summaryrefslogtreecommitdiff
path: root/src/core/shader.c
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-12-15 13:29:05 +0800
committerchai <chaifix@163.com>2019-12-15 13:29:05 +0800
commita0b8ef3d482c965901f094879a79dd9c5fd8245c (patch)
tree1a28d49dc7a6bf0a279f10569cd7e40f3aaaedaa /src/core/shader.c
parent749bbc6a54e50c297ab49d9e515a3679651d1461 (diff)
*misc
Diffstat (limited to 'src/core/shader.c')
-rw-r--r--src/core/shader.c15
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;