diff options
-rw-r--r-- | src/core/device.c | 2 | ||||
-rw-r--r-- | src/core/shader.c | 19 | ||||
-rw-r--r-- | src/core/shader.h | 4 | ||||
-rw-r--r-- | src/example/03_texture.c | 8 | ||||
-rw-r--r-- | src/shaders/pbr.c | 2 |
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 , ®->data[a*stride] , ®->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 +}; |