summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-12-15 18:43:39 +0800
committerchai <chaifix@163.com>2019-12-15 18:43:39 +0800
commit6d5afcc8380ee9159d3e6c406c9184b22f14e81d (patch)
tree868a0b01bf7589af123de803e2c7cb58744f8f05
parent7da5ed50d803e94518fcb6acdd8083710e0eb77e (diff)
*misc
-rw-r--r--src/core/device.c2
-rw-r--r--src/core/shader.c19
-rw-r--r--src/core/shader.h4
-rw-r--r--src/example/03_texture.c8
-rw-r--r--src/shaders/pbr.c2
5 files changed, 10 insertions, 25 deletions
diff --git a/src/core/device.c b/src/core/device.c
index aa83cfe..92a893f 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -465,7 +465,7 @@ void ssr_draw(ssr_PrimitiveType primitive) {
ssr_vert_in.vertex = vert;
/*set register pointers*/
if (use_extra_varyings) {
- ssrS_setupregisterpoints(vert->index);
+ ssrS_setupregisterpointers(vert->index);
}
state.program->vertexshader(&state.uniforms, &ssr_vert_in, &clip_coords.coords[i]);
}
diff --git a/src/core/shader.c b/src/core/shader.c
index d7ef26f..a56cde5 100644
--- a/src/core/shader.c
+++ b/src/core/shader.c
@@ -173,7 +173,7 @@ void ssrS_solveregs(Vec3* bc, uint a, uint b, uint c) {
if (index == -1) break;
reg = &active_regs[index];
stride = reg->element_size;
- reg->accessor = reg->bcp_interpolator(
+ *reg->accessor = reg->bcp_interpolator(
bc
, &reg->data[a*stride]
, &reg->data[b*stride]
@@ -183,21 +183,6 @@ 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;
@@ -220,7 +205,7 @@ void ssrS_setregisters(int capacity) {
}
/*进入vert shader前设置寄存器指针到对应顶点的数据在寄存器中的位置*/
-void ssrS_setupregisterpoints(int idx) {
+void ssrS_setupregisterpointers(int idx) {
ActiveReg* reg;
uint index;
for (int i = 0; i < REG_TOTAL; ++i) {
diff --git a/src/core/shader.h b/src/core/shader.h
index f433f0e..05fd738 100644
--- a/src/core/shader.h
+++ b/src/core/shader.h
@@ -156,7 +156,7 @@ typedef struct {
Register registers[REG_TOTAL];
ActiveReg active_regs[REG_TOTAL];
-uint open_regsi[REG_TOTAL]; /*draw call用到的寄存器,可以索引到registers和active_regs*/
+int open_regsi[REG_TOTAL]; /*draw call用到的寄存器,可以索引到registers和active_regs*/
/*寄存器指针accessor,指向寄存器中的某个值,用于在shader里快速访问,使用错误可能会出现野指针*/
float *reg_num_00, *reg_num_01, *reg_num_02, *reg_num_03;
@@ -171,7 +171,7 @@ void ssrS_solveregs(Vec3* bc, uint a, uint b, uint c);
void ssrS_setregisters(int capacity);
/*设置寄存器指针,指向寄存器(在fragment阶段,指针会指向fragmentIn结构)*/
-void ssrS_setupregisterpoints(int idx);
+void ssrS_setupregisterpointers(int idx);
/*设置寄存器指针,指向fragIn结构*/
void ssrS_setregtofragin();
diff --git a/src/example/03_texture.c b/src/example/03_texture.c
index 50a96a1..781bf6b 100644
--- a/src/example/03_texture.c
+++ b/src/example/03_texture.c
@@ -111,12 +111,12 @@ void ondrawtexture(void*data) {
ssr_bindvertices(mech_mesh->vertices, mech_mesh->verts_count, mech_mesh->triangles, mech_mesh->tris_count);
ssr_draw(PRIMITIVE_TRIANGLE);
- ssr_setuniformtex(0, yingham_albedo);
- ssr_bindvertices(yingham_mesh->vertices, yingham_mesh->verts_count, yingham_mesh->triangles, yingham_mesh->tris_count);
- ssr_draw(PRIMITIVE_TRIANGLE);
-
ssr_setuniformtex(0, ground_albedo);
ssr_bindvertices(ground_mesh->vertices, ground_mesh->verts_count, ground_mesh->triangles, ground_mesh->tris_count);
ssr_draw(PRIMITIVE_TRIANGLE);
+ ssr_setuniformtex(0, yingham_albedo);
+ ssr_bindvertices(yingham_mesh->vertices, yingham_mesh->verts_count, yingham_mesh->triangles, yingham_mesh->tris_count);
+ ssr_draw(PRIMITIVE_TRIANGLE);
+
}
diff --git a/src/shaders/pbr.c b/src/shaders/pbr.c
index 3026cc7..ce56419 100644
--- a/src/shaders/pbr.c
+++ b/src/shaders/pbr.c
@@ -65,4 +65,4 @@ Program ssr_built_in_shader_pbr = {
//VARYING_V4_00 |
VARYING_V2_00 |
VARYING_V3_05
-}; \ No newline at end of file
+};