diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-06-28 02:37:44 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-06-28 02:37:44 +0300 |
commit | dbaa6c2aa26cc9a045f5621c9def8ca7cf5861f0 (patch) | |
tree | 8b966d6d721fba4c1f06d9ddec92a0ecc9fd2761 /source/blender/gpu | |
parent | 2ed82d2e6bb6d7887e4a07ad9600b7b579a74a38 (diff) |
GPU: GPU_generate_pass_new now takes vertex-attrs
Needed so we can tell which custom-data layers to use from the mesh.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/intern/gpu_codegen.c | 12 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_codegen.h | 19 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 3 |
3 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index 1f0f5e375ce..8586ee67d5d 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -1846,9 +1846,11 @@ static void gpu_nodes_prune(ListBase *nodes, GPUNodeLink *outlink) } } -GPUPass *GPU_generate_pass_new(ListBase *nodes, struct GPUNodeLink *frag_outlink, - const char *vert_code, const char *geom_code, - const char *frag_lib, const char *defines) +GPUPass *GPU_generate_pass_new( + ListBase *nodes, struct GPUNodeLink *frag_outlink, + GPUVertexAttribs *attribs, + const char *vert_code, const char *geom_code, + const char *frag_lib, const char *defines) { GPUShader *shader; GPUPass *pass; @@ -1858,9 +1860,7 @@ GPUPass *GPU_generate_pass_new(ListBase *nodes, struct GPUNodeLink *frag_outlink /* prune unused nodes */ gpu_nodes_prune(nodes, frag_outlink); - /* Hacky */ - GPUVertexAttribs attribs; - gpu_nodes_get_vertex_attributes(nodes, &attribs); + gpu_nodes_get_vertex_attributes(nodes, attribs); /* generate code and compile with opengl */ fragmentgen = code_generate_fragment(nodes, frag_outlink->output, true); diff --git a/source/blender/gpu/intern/gpu_codegen.h b/source/blender/gpu/intern/gpu_codegen.h index 9263fe3bc3f..159b1f4ef8e 100644 --- a/source/blender/gpu/intern/gpu_codegen.h +++ b/source/blender/gpu/intern/gpu_codegen.h @@ -167,14 +167,17 @@ struct GPUPass { typedef struct GPUPass GPUPass; -GPUPass *GPU_generate_pass_new(ListBase *nodes, struct GPUNodeLink *frag_outlink, - const char *vert_code, const char *geom_code, - const char *frag_lib, const char *defines); -GPUPass *GPU_generate_pass(ListBase *nodes, struct GPUNodeLink *outlink, - struct GPUVertexAttribs *attribs, int *builtin, - const GPUMatType type, const char *name, - const bool use_opensubdiv, - const bool use_new_shading); +GPUPass *GPU_generate_pass_new( + ListBase *nodes, struct GPUNodeLink *frag_outlink, + struct GPUVertexAttribs *attribs, + const char *vert_code, const char *geom_code, + const char *frag_lib, const char *defines); +GPUPass *GPU_generate_pass( + ListBase *nodes, struct GPUNodeLink *outlink, + struct GPUVertexAttribs *attribs, int *builtin, + const GPUMatType type, const char *name, + const bool use_opensubdiv, + const bool use_new_shading); struct GPUShader *GPU_pass_shader(GPUPass *pass); diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index c00baef2856..15253477c7c 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -2132,7 +2132,8 @@ GPUMaterial *GPU_material_from_nodetree( /* Let Draw manager finish the construction. */ if (mat->outlink) { outlink = mat->outlink; - mat->pass = GPU_generate_pass_new(&mat->nodes, outlink, vert_code, geom_code, frag_lib, defines); + mat->pass = GPU_generate_pass_new( + &mat->nodes, outlink, &mat->attribs, vert_code, geom_code, frag_lib, defines); } /* note that even if building the shader fails in some way, we still keep |