Cleanup: strip trailing space in GPU module
This commit is contained in:
parent
2d3d76693a
commit
6654e109df
|
@ -108,17 +108,17 @@ typedef struct GPUDrawObject {
|
|||
struct GPUVertPointLink *vert_points_mem;
|
||||
int vert_points_usage;
|
||||
#endif
|
||||
|
||||
|
||||
int colType;
|
||||
|
||||
GPUBufferMaterial *materials;
|
||||
int totmaterial;
|
||||
|
||||
|
||||
unsigned int tot_triangle_point;
|
||||
unsigned int tot_loose_point;
|
||||
/* different than total loops since ngons get tesselated still */
|
||||
unsigned int tot_loop_verts;
|
||||
|
||||
|
||||
/* caches of the original DerivedMesh values */
|
||||
unsigned int totvert;
|
||||
unsigned int totedge;
|
||||
|
|
|
@ -66,7 +66,7 @@ void GPU_state_init(void);
|
|||
* GPU_object_material_bind returns 0 if drawing should be skipped
|
||||
* - after drawing, the material must be disabled again */
|
||||
|
||||
void GPU_begin_object_materials(struct View3D *v3d, struct RegionView3D *rv3d,
|
||||
void GPU_begin_object_materials(struct View3D *v3d, struct RegionView3D *rv3d,
|
||||
struct Scene *scene, struct Object *ob, bool glsl, bool *do_alpha_after);
|
||||
void GPU_end_object_materials(void);
|
||||
bool GPU_object_materials_check(void);
|
||||
|
|
|
@ -39,7 +39,7 @@ extern "C" {
|
|||
struct Image;
|
||||
struct ImageUser;
|
||||
struct PreviewImage;
|
||||
|
||||
|
||||
struct GPUFrameBuffer;
|
||||
typedef struct GPUTexture GPUTexture;
|
||||
|
||||
|
|
|
@ -295,7 +295,7 @@ void GPU_basic_shaders_init(void)
|
|||
void GPU_basic_shaders_exit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
for (i = 0; i < GPU_SHADER_OPTION_COMBINATIONS; i++)
|
||||
if (GPU_MATERIAL_STATE.cached_shaders[i])
|
||||
GPU_shader_free(GPU_MATERIAL_STATE.cached_shaders[i]);
|
||||
|
@ -336,7 +336,7 @@ static int detect_options()
|
|||
glGetIntegerv(GL_LIGHT_MODEL_TWO_SIDE, &two_sided);
|
||||
if (two_sided == GL_TRUE)
|
||||
options |= GPU_SHADER_TWO_SIDED;
|
||||
|
||||
|
||||
return options;
|
||||
}
|
||||
#endif
|
||||
|
@ -389,7 +389,7 @@ static GPUShader *gpu_basic_shader(int options)
|
|||
geom_glsl,
|
||||
NULL,
|
||||
defines, 0, 0, 0);
|
||||
|
||||
|
||||
if (shader) {
|
||||
/* set texture map to first texture unit */
|
||||
if (options & (GPU_SHADER_TEXTURE_2D | GPU_SHADER_TEXTURE_RECT)) {
|
||||
|
|
|
@ -222,7 +222,7 @@ static void gpu_buffer_pool_free(GPUBufferPool *pool)
|
|||
{
|
||||
if (!pool)
|
||||
return;
|
||||
|
||||
|
||||
while (pool->totbuf)
|
||||
gpu_buffer_pool_delete_last(pool);
|
||||
|
||||
|
@ -236,7 +236,7 @@ static void gpu_buffer_pool_free_unused(GPUBufferPool *pool)
|
|||
return;
|
||||
|
||||
BLI_mutex_lock(&buffer_mutex);
|
||||
|
||||
|
||||
while (pool->totbuf)
|
||||
gpu_buffer_pool_delete_last(pool);
|
||||
|
||||
|
@ -294,7 +294,7 @@ static GPUBuffer *gpu_buffer_alloc_intern(size_t size)
|
|||
* twice as big */
|
||||
for (i = 0; i < pool->totbuf; i++) {
|
||||
bufsize = pool->buffers[i]->size;
|
||||
|
||||
|
||||
/* check for an exact size match */
|
||||
if (bufsize == size) {
|
||||
bestfit = i;
|
||||
|
@ -621,7 +621,7 @@ void GPU_vertex_setup(DerivedMesh *dm)
|
|||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, dm->drawObject->points->id);
|
||||
glVertexPointer(3, GL_FLOAT, 0, 0);
|
||||
|
||||
|
||||
GLStates |= GPU_BUFFER_VERTEX_STATE;
|
||||
}
|
||||
|
||||
|
@ -716,7 +716,7 @@ void GPU_edge_setup(DerivedMesh *dm)
|
|||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, dm->drawObject->points->id);
|
||||
glVertexPointer(3, GL_FLOAT, 0, 0);
|
||||
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, dm->drawObject->edges->id);
|
||||
|
||||
GLStates |= (GPU_BUFFER_VERTEX_STATE | GPU_BUFFER_ELEMENT_STATE);
|
||||
|
@ -730,7 +730,7 @@ void GPU_uvedge_setup(DerivedMesh *dm)
|
|||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, dm->drawObject->uvedges->id);
|
||||
glVertexPointer(2, GL_FLOAT, 0, 0);
|
||||
|
||||
|
||||
GLStates |= GPU_BUFFER_VERTEX_STATE;
|
||||
}
|
||||
|
||||
|
@ -792,7 +792,7 @@ void GPU_interleaved_attrib_setup(GPUBuffer *buffer, GPUAttrib data[], int numda
|
|||
elementsize = element_size;
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, buffer->id);
|
||||
|
||||
|
||||
for (i = 0; i < numdata; i++) {
|
||||
glEnableVertexAttribArray(data[i].index);
|
||||
int info = 0;
|
||||
|
@ -804,13 +804,13 @@ void GPU_interleaved_attrib_setup(GPUBuffer *buffer, GPUAttrib data[], int numda
|
|||
glVertexAttribPointer(data[i].index, data[i].size, data[i].type,
|
||||
GL_TRUE, elementsize, BUFFER_OFFSET(offset));
|
||||
offset += data[i].size * gpu_typesize(data[i].type);
|
||||
|
||||
|
||||
attribData[i].index = data[i].index;
|
||||
attribData[i].size = data[i].size;
|
||||
attribData[i].type = data[i].type;
|
||||
}
|
||||
|
||||
attribData[numdata].index = -1;
|
||||
|
||||
attribData[numdata].index = -1;
|
||||
}
|
||||
|
||||
void GPU_interleaved_attrib_unbind(void)
|
||||
|
@ -952,7 +952,7 @@ typedef struct {
|
|||
* boundary; drastically increases viewport performance on my
|
||||
* drivers (Gallium/Radeon) --nicholasbishop */
|
||||
char pad[2];
|
||||
|
||||
|
||||
unsigned char color[3];
|
||||
} VertexBufferFormat;
|
||||
|
||||
|
@ -1283,7 +1283,7 @@ void GPU_pbvh_grid_buffers_update(
|
|||
for (y = 0; y < key->grid_size; y++) {
|
||||
for (x = 0; x < key->grid_size; x++) {
|
||||
CCGElem *elem = CCG_grid_elem(key, grid, x, y);
|
||||
|
||||
|
||||
copy_v3_v3(vd->co, CCG_elem_co(key, elem));
|
||||
if (buffers->smooth) {
|
||||
normal_float_to_short_v3(vd->no, CCG_elem_no(key, elem));
|
||||
|
@ -1301,7 +1301,7 @@ void GPU_pbvh_grid_buffers_update(
|
|||
vd++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!buffers->smooth) {
|
||||
/* for flat shading, recalc normals and set the last vertex of
|
||||
* each triangle in the index buffer to have the flat normal as
|
||||
|
@ -1739,7 +1739,7 @@ void GPU_pbvh_bmesh_buffers_update(
|
|||
fmask += BM_ELEM_CD_GET_FLOAT(v[i], cd_vert_mask_offset);
|
||||
}
|
||||
fmask /= 3.0f;
|
||||
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
gpu_bmesh_vert_to_buffer_copy(v[i], vert_data,
|
||||
&v_index, f->no, &fmask,
|
||||
|
|
|
@ -109,7 +109,7 @@ static int gpu_str_prefix(const char *str, const char *prefix)
|
|||
str++;
|
||||
prefix++;
|
||||
}
|
||||
|
||||
|
||||
return (*prefix == '\0');
|
||||
}
|
||||
|
||||
|
@ -221,7 +221,7 @@ static char *gpu_generate_function_prototyps(GHash *hash)
|
|||
GPUFunction *function;
|
||||
char *name, *prototypes;
|
||||
int a;
|
||||
|
||||
|
||||
/* automatically generate function prototypes to add to the top of the
|
||||
* generated code, to avoid have to add the actual code & recompile all */
|
||||
ghi = BLI_ghashIterator_new(hash);
|
||||
|
@ -610,7 +610,7 @@ static void codegen_call_functions(DynStr *ds, ListBase *nodes, GPUOutput *final
|
|||
|
||||
for (node = nodes->first; node; node = node->next) {
|
||||
BLI_dynstr_appendf(ds, "\t%s(", node->name);
|
||||
|
||||
|
||||
for (input = node->inputs.first; input; input = input->next) {
|
||||
if (input->source == GPU_SOURCE_TEX) {
|
||||
BLI_dynstr_appendf(ds, "samp%d", input->texid);
|
||||
|
@ -740,7 +740,7 @@ static char *code_generate_vertex(ListBase *nodes, const GPUMatType type)
|
|||
GPUInput *input;
|
||||
char *code;
|
||||
char *vertcode = NULL;
|
||||
|
||||
|
||||
for (node = nodes->first; node; node = node->next) {
|
||||
for (input = node->inputs.first; input; input = input->next) {
|
||||
if (input->source == GPU_SOURCE_ATTRIB && input->attribfirst) {
|
||||
|
@ -781,7 +781,7 @@ static char *code_generate_vertex(ListBase *nodes, const GPUMatType type)
|
|||
}
|
||||
|
||||
BLI_dynstr_append(ds, vertcode);
|
||||
|
||||
|
||||
for (node = nodes->first; node; node = node->next)
|
||||
for (input = node->inputs.first; input; input = input->next)
|
||||
if (input->source == GPU_SOURCE_ATTRIB && input->attribfirst) {
|
||||
|
@ -1084,7 +1084,7 @@ void GPU_pass_unbind(GPUPass *pass)
|
|||
if (input->ima || input->prv)
|
||||
input->tex = NULL;
|
||||
}
|
||||
|
||||
|
||||
GPU_shader_unbind();
|
||||
}
|
||||
|
||||
|
@ -1105,7 +1105,7 @@ static void gpu_node_link_free(GPUNodeLink *link)
|
|||
|
||||
if (link->users < 0)
|
||||
fprintf(stderr, "GPU_node_link_free: negative refcount\n");
|
||||
|
||||
|
||||
if (link->users == 0) {
|
||||
if (link->output)
|
||||
link->output->link = NULL;
|
||||
|
@ -1146,7 +1146,7 @@ static void gpu_node_input_link(GPUNode *node, GPUNodeLink *link, const GPUType
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
input = MEM_callocN(sizeof(GPUInput), "GPUInput");
|
||||
input->node = node;
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ static void gpu_nodes_get_builtin_flag(ListBase *nodes, int *builtin)
|
|||
{
|
||||
GPUNode *node;
|
||||
GPUInput *input;
|
||||
|
||||
|
||||
*builtin = 0;
|
||||
|
||||
for (node = nodes->first; node; node = node->next)
|
||||
|
@ -1443,10 +1443,10 @@ GPUNodeLink *GPU_cube_map(Image *ima, ImageUser *iuser, bool is_data)
|
|||
GPUNodeLink *GPU_image_preview(PreviewImage *prv)
|
||||
{
|
||||
GPUNodeLink *link = GPU_node_link_create();
|
||||
|
||||
|
||||
link->image = GPU_NODE_LINK_IMAGE_PREVIEW;
|
||||
link->ptr1 = prv;
|
||||
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
|
@ -1550,7 +1550,7 @@ bool GPU_stack_link(GPUMaterial *mat, const char *name, GPUNodeStack *in, GPUNod
|
|||
totin++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (out) {
|
||||
for (i = 0; out[i].type != GPU_NONE; i++) {
|
||||
gpu_node_output(node, out[i].type, &out[i].link);
|
||||
|
@ -1583,7 +1583,7 @@ bool GPU_stack_link(GPUMaterial *mat, const char *name, GPUNodeStack *in, GPUNod
|
|||
va_end(params);
|
||||
|
||||
gpu_material_add_node(mat, node);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1621,7 +1621,7 @@ static void gpu_nodes_tag(GPUNodeLink *link)
|
|||
node = link->output->node;
|
||||
if (node->tag)
|
||||
return;
|
||||
|
||||
|
||||
node->tag = true;
|
||||
for (input = node->inputs.first; input; input = input->next)
|
||||
if (input->link)
|
||||
|
@ -1704,7 +1704,7 @@ GPUPass *GPU_generate_pass(
|
|||
gpu_nodes_free(nodes);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* create pass */
|
||||
pass = MEM_callocN(sizeof(GPUPass), "GPUPass");
|
||||
|
||||
|
|
|
@ -122,10 +122,10 @@ void GPU_render_text(
|
|||
Image *ima = (Image *)mtexpoly->tpage;
|
||||
const size_t textlen_st = textlen;
|
||||
float centerx, centery, sizex, sizey, transx, transy, movex, movey, advance;
|
||||
|
||||
|
||||
/* multiline */
|
||||
float line_start = 0.0f, line_height;
|
||||
|
||||
|
||||
if (v4)
|
||||
line_height = max_ffff(v1[1], v2[1], v3[1], v4[2]) - min_ffff(v1[1], v2[1], v3[1], v4[2]);
|
||||
else
|
||||
|
@ -133,7 +133,7 @@ void GPU_render_text(
|
|||
line_height *= 1.2f; /* could be an option? */
|
||||
/* end multiline */
|
||||
|
||||
|
||||
|
||||
/* color has been set */
|
||||
if (mtexpoly->mode & TF_OBCOL)
|
||||
col = NULL;
|
||||
|
@ -141,22 +141,22 @@ void GPU_render_text(
|
|||
glColor3f(1.0f, 1.0f, 1.0f);
|
||||
|
||||
glPushMatrix();
|
||||
|
||||
|
||||
/* get the tab width */
|
||||
ImBuf *first_ibuf = BKE_image_get_first_ibuf(ima);
|
||||
matrixGlyph(first_ibuf, ' ', ¢erx, ¢ery,
|
||||
&sizex, &sizey, &transx, &transy, &movex, &movey, &advance);
|
||||
|
||||
|
||||
float advance_tab = advance * 4; /* tab width could also be an option */
|
||||
|
||||
|
||||
|
||||
|
||||
for (size_t index = 0; index < textlen_st; ) {
|
||||
unsigned int character;
|
||||
float uv[4][2];
|
||||
|
||||
/* lets calculate offset stuff */
|
||||
character = BLI_str_utf8_as_unicode_and_size_safe(textstr + index, &index);
|
||||
|
||||
|
||||
if (character == '\n') {
|
||||
glTranslatef(line_start, -line_height, 0.0f);
|
||||
line_start = 0.0f;
|
||||
|
@ -166,13 +166,13 @@ void GPU_render_text(
|
|||
glTranslatef(advance_tab, 0.0f, 0.0f);
|
||||
line_start -= advance_tab; /* so we can go back to the start of the line */
|
||||
continue;
|
||||
|
||||
|
||||
}
|
||||
else if (character > USHRT_MAX) {
|
||||
/* not much we can do here bmfonts take ushort */
|
||||
character = '?';
|
||||
}
|
||||
|
||||
|
||||
/* space starts at offset 1 */
|
||||
/* character = character - ' ' + 1; */
|
||||
matrixGlyph(first_ibuf, character, & centerx, ¢ery,
|
||||
|
@ -184,13 +184,13 @@ void GPU_render_text(
|
|||
uv[1][1] = (uv_quad[1][1] - centery) * sizey + transy;
|
||||
uv[2][0] = (uv_quad[2][0] - centerx) * sizex + transx;
|
||||
uv[2][1] = (uv_quad[2][1] - centery) * sizey + transy;
|
||||
|
||||
|
||||
glBegin(GL_POLYGON);
|
||||
if (glattrib >= 0) glVertexAttrib2fv(glattrib, uv[0]);
|
||||
else glTexCoord2fv(uv[0]);
|
||||
if (col) gpu_mcol(col[0]);
|
||||
glVertex3f(sizex * v1[0] + movex, sizey * v1[1] + movey, v1[2]);
|
||||
|
||||
|
||||
if (glattrib >= 0) glVertexAttrib2fv(glattrib, uv[1]);
|
||||
else glTexCoord2fv(uv[1]);
|
||||
if (col) gpu_mcol(col[1]);
|
||||
|
@ -419,7 +419,7 @@ void GPU_clear_tpage(bool force)
|
|||
{
|
||||
if (GTS.lasttface == NULL && !force)
|
||||
return;
|
||||
|
||||
|
||||
GTS.lasttface = NULL;
|
||||
GTS.curtile = 0;
|
||||
GTS.curima = NULL;
|
||||
|
@ -432,7 +432,7 @@ void GPU_clear_tpage(bool force)
|
|||
GTS.curtileXRep = 0;
|
||||
GTS.curtileYRep = 0;
|
||||
GTS.alphablend = -1;
|
||||
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glDisable(GL_TEXTURE_GEN_S);
|
||||
|
@ -460,7 +460,7 @@ static void gpu_set_alpha_blend(GPUBlendMode alphablend)
|
|||
|
||||
/* for OpenGL render we use the alpha channel, this makes alpha blend correct */
|
||||
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
|
||||
/* if U.glalphaclip == 1.0, some cards go bonkers...
|
||||
* turn off alpha test in this case */
|
||||
|
||||
|
@ -652,29 +652,29 @@ int GPU_verify_image(
|
|||
GPU_free_image(ima);
|
||||
ima->tpageflag &= ~IMA_TPAGE_REFRESH;
|
||||
}
|
||||
|
||||
|
||||
if (GTS.tilemode) {
|
||||
/* tiled mode */
|
||||
if (ima->repbind == NULL) gpu_make_repbind(ima);
|
||||
if (GTS.tile >= ima->totbind) GTS.tile = 0;
|
||||
|
||||
|
||||
/* this happens when you change repeat buttons */
|
||||
if (ima->repbind && textarget == GL_TEXTURE_2D) bind = &ima->repbind[GTS.tile];
|
||||
else bind = gpu_get_image_bindcode(ima, textarget);
|
||||
|
||||
|
||||
if (*bind == 0) {
|
||||
short texwindx = ibuf->x / ima->xrep;
|
||||
short texwindy = ibuf->y / ima->yrep;
|
||||
|
||||
|
||||
if (GTS.tile >= ima->xrep * ima->yrep)
|
||||
GTS.tile = ima->xrep * ima->yrep - 1;
|
||||
|
||||
|
||||
short texwinsy = GTS.tile / ima->xrep;
|
||||
short texwinsx = GTS.tile - texwinsy * ima->xrep;
|
||||
|
||||
|
||||
texwinsx *= texwindx;
|
||||
texwinsy *= texwindy;
|
||||
|
||||
|
||||
tpx = texwindx;
|
||||
tpy = texwindy;
|
||||
|
||||
|
@ -748,7 +748,7 @@ int GPU_verify_image(
|
|||
|
||||
memcpy(tilerectrow, rectrow, tpx * sizeof(*rectrow));
|
||||
}
|
||||
|
||||
|
||||
rect = tilerect;
|
||||
}
|
||||
}
|
||||
|
@ -759,13 +759,13 @@ int GPU_verify_image(
|
|||
else
|
||||
#endif
|
||||
GPU_create_gl_tex(bind, rect, frect, rectw, recth, textarget, mipmap, use_high_bit_depth, ima);
|
||||
|
||||
|
||||
/* mark as non-color data texture */
|
||||
if (*bind) {
|
||||
if (is_data)
|
||||
ima->tpageflag |= IMA_GLBIND_IS_DATA;
|
||||
ima->tpageflag |= IMA_GLBIND_IS_DATA;
|
||||
else
|
||||
ima->tpageflag &= ~IMA_GLBIND_IS_DATA;
|
||||
ima->tpageflag &= ~IMA_GLBIND_IS_DATA;
|
||||
}
|
||||
|
||||
/* clean up */
|
||||
|
@ -859,7 +859,7 @@ void GPU_create_gl_tex(
|
|||
int tpy = recth;
|
||||
|
||||
/* scale if not a power of two. this is not strictly necessary for newer
|
||||
* GPUs (OpenGL version >= 2.0) since they support non-power-of-two-textures
|
||||
* GPUs (OpenGL version >= 2.0) since they support non-power-of-two-textures
|
||||
* Then don't bother scaling for hardware that supports NPOT textures! */
|
||||
if (textarget == GL_TEXTURE_2D &&
|
||||
((!GPU_full_non_power_of_two_support() && !is_power_of_2_resolution(rectw, recth)) ||
|
||||
|
@ -1130,7 +1130,7 @@ int GPU_set_tpage(MTexPoly *mtexpoly, int mipmap, int alphablend)
|
|||
}
|
||||
else {
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
|
||||
|
||||
GTS.curtile = 0;
|
||||
GTS.curima = NULL;
|
||||
GTS.curtilemode = 0;
|
||||
|
@ -1139,9 +1139,9 @@ int GPU_set_tpage(MTexPoly *mtexpoly, int mipmap, int alphablend)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
gpu_verify_repeat(ima);
|
||||
|
||||
|
||||
/* Did this get lost in the image recode? */
|
||||
/* BKE_image_tag_time(ima);*/
|
||||
|
||||
|
@ -1296,7 +1296,7 @@ void GPU_paint_update_image(Image *ima, ImageUser *iuser, int x, int y, int w, i
|
|||
float *buffer = MEM_mallocN(w * h * sizeof(float) * 4, "temp_texpaint_float_buf");
|
||||
bool is_data = (ima->tpageflag & IMA_GLBIND_IS_DATA) != 0;
|
||||
IMB_partial_rect_from_float(ibuf, buffer, x, y, w, h, is_data);
|
||||
|
||||
|
||||
if (gpu_check_scaled_image(ibuf, ima, buffer, x, y, w, h)) {
|
||||
MEM_freeN(buffer);
|
||||
BKE_image_release_ibuf(ima, ibuf, NULL);
|
||||
|
@ -1361,9 +1361,9 @@ void GPU_update_images_framechange(void)
|
|||
if (ima->tpageflag & IMA_TWINANIM) {
|
||||
if (ima->twend >= ima->xrep * ima->yrep)
|
||||
ima->twend = ima->xrep * ima->yrep - 1;
|
||||
|
||||
|
||||
/* check: is bindcode not in the array? free. (to do) */
|
||||
|
||||
|
||||
ima->lastframe++;
|
||||
if (ima->lastframe > ima->twend)
|
||||
ima->lastframe = ima->twsta;
|
||||
|
@ -1386,9 +1386,9 @@ int GPU_update_image_time(Image *ima, double time)
|
|||
|
||||
if (ima->tpageflag & IMA_TWINANIM) {
|
||||
if (ima->twend >= ima->xrep * ima->yrep) ima->twend = ima->xrep * ima->yrep - 1;
|
||||
|
||||
|
||||
/* check: is the bindcode not in the array? Then free. (still to do) */
|
||||
|
||||
|
||||
float diff = (float)((float)time - ima->lastupdate);
|
||||
inc = (int)(diff * (float)ima->animspeed);
|
||||
|
||||
|
@ -1528,7 +1528,7 @@ void GPU_free_image(Image *ima)
|
|||
/* free repeated image binding */
|
||||
if (ima->repbind) {
|
||||
glDeleteTextures(ima->totbind, (GLuint *)ima->repbind);
|
||||
|
||||
|
||||
MEM_freeN(ima->repbind);
|
||||
ima->repbind = NULL;
|
||||
}
|
||||
|
@ -1601,7 +1601,7 @@ typedef struct GPUMaterialFixed {
|
|||
float spec[3];
|
||||
int hard;
|
||||
float alpha;
|
||||
} GPUMaterialFixed;
|
||||
} GPUMaterialFixed;
|
||||
|
||||
static struct GPUMaterialState {
|
||||
GPUMaterialFixed (*matbuf);
|
||||
|
@ -1657,12 +1657,12 @@ static void gpu_material_to_fixed(
|
|||
copy_v3_v3(smat->spec, &bmat->specr);
|
||||
smat->alpha = 1.0f;
|
||||
smat->hard = CLAMPIS(bmat->har, 0, 128);
|
||||
|
||||
|
||||
if (dimdown) {
|
||||
mul_v3_fl(smat->diff, 0.8f);
|
||||
mul_v3_fl(smat->spec, 0.5f);
|
||||
}
|
||||
|
||||
|
||||
if (gamma) {
|
||||
linearrgb_to_srgb_v3_v3(smat->diff, smat->diff);
|
||||
linearrgb_to_srgb_v3_v3(smat->spec, smat->spec);
|
||||
|
@ -1673,7 +1673,7 @@ static void gpu_material_to_fixed(
|
|||
|
||||
if (bmat->shade_flag & MA_OBCOLOR)
|
||||
mul_v3_v3(smat->diff, ob->col);
|
||||
|
||||
|
||||
mul_v3_v3fl(smat->spec, &bmat->specr, bmat->spec);
|
||||
smat->hard = CLAMPIS(bmat->har, 1, 128);
|
||||
smat->alpha = 1.0f;
|
||||
|
@ -1789,7 +1789,7 @@ void GPU_begin_object_materials(
|
|||
GMS.is_alpha_pass = (v3d->transp != false);
|
||||
if (GMS.use_alpha_pass)
|
||||
*do_alpha_after = false;
|
||||
|
||||
|
||||
if (GMS.totmat > FIXEDMAT) {
|
||||
GMS.matbuf = MEM_callocN(sizeof(GPUMaterialFixed) * GMS.totmat, "GMS.matbuf");
|
||||
GMS.gmatbuf = MEM_callocN(sizeof(*GMS.gmatbuf) * GMS.totmat, "GMS.matbuf");
|
||||
|
@ -1808,11 +1808,11 @@ void GPU_begin_object_materials(
|
|||
|
||||
/* do material 1 too, for displists! */
|
||||
memcpy(&GMS.matbuf[1], &GMS.matbuf[0], sizeof(GPUMaterialFixed));
|
||||
|
||||
|
||||
GMS.alphablend[0] = GPU_BLEND_SOLID;
|
||||
}
|
||||
else {
|
||||
|
||||
|
||||
/* no materials assigned? */
|
||||
if (ob->totcol == 0) {
|
||||
gpu_material_to_fixed(&GMS.matbuf[0], &defmaterial, 0, ob, new_shading_nodes, true);
|
||||
|
@ -1827,7 +1827,7 @@ void GPU_begin_object_materials(
|
|||
|
||||
GMS.alphablend[0] = GPU_BLEND_SOLID;
|
||||
}
|
||||
|
||||
|
||||
/* setup materials */
|
||||
for (a = 1; a <= ob->totcol; a++) {
|
||||
/* find a suitable material */
|
||||
|
@ -1986,7 +1986,7 @@ int GPU_object_material_bind(int nr, void *attribs)
|
|||
if (GMS.dob) {
|
||||
gpu_get_particle_info(&partile_info);
|
||||
}
|
||||
|
||||
|
||||
if (GPU_get_material_builtins(gpumat) & GPU_OBJECT_INFO) {
|
||||
GPU_get_object_info(object_info, mat);
|
||||
}
|
||||
|
@ -2064,7 +2064,7 @@ void GPU_set_material_alpha_blend(int alphablend)
|
|||
{
|
||||
if (GMS.lastalphablend == alphablend)
|
||||
return;
|
||||
|
||||
|
||||
gpu_set_alpha_blend(alphablend);
|
||||
GMS.lastalphablend = alphablend;
|
||||
}
|
||||
|
@ -2155,13 +2155,13 @@ int GPU_default_lights(void)
|
|||
U.light[0].col[0] = 0.8; U.light[0].col[1] = 0.8; U.light[0].col[2] = 0.8;
|
||||
U.light[0].spec[0] = 0.5; U.light[0].spec[1] = 0.5; U.light[0].spec[2] = 0.5;
|
||||
U.light[0].spec[3] = 1.0;
|
||||
|
||||
|
||||
U.light[1].flag = 0;
|
||||
U.light[1].vec[0] = 0.5; U.light[1].vec[1] = 0.5; U.light[1].vec[2] = 0.1;
|
||||
U.light[1].col[0] = 0.4; U.light[1].col[1] = 0.4; U.light[1].col[2] = 0.8;
|
||||
U.light[1].spec[0] = 0.3; U.light[1].spec[1] = 0.3; U.light[1].spec[2] = 0.5;
|
||||
U.light[1].spec[3] = 1.0;
|
||||
|
||||
|
||||
U.light[2].flag = 0;
|
||||
U.light[2].vec[0] = 0.3; U.light[2].vec[1] = -0.3; U.light[2].vec[2] = -0.2;
|
||||
U.light[2].col[0] = 0.8; U.light[2].col[1] = 0.5; U.light[2].col[2] = 0.4;
|
||||
|
@ -2199,7 +2199,7 @@ int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[4][
|
|||
/* disable all lights */
|
||||
for (int count = 0; count < 8; count++)
|
||||
GPU_basic_shader_light_set(count, NULL);
|
||||
|
||||
|
||||
/* view direction for specular is not computed correct by default in
|
||||
* opengl, so we set the settings ourselves */
|
||||
GPU_basic_shader_light_set_viewer(!ortho);
|
||||
|
@ -2214,11 +2214,11 @@ int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[4][
|
|||
continue;
|
||||
|
||||
Lamp *la = base->object->data;
|
||||
|
||||
|
||||
/* setup lamp transform */
|
||||
glPushMatrix();
|
||||
glLoadMatrixf((float *)viewmat);
|
||||
|
||||
|
||||
/* setup light */
|
||||
GPULightData light = {0};
|
||||
|
||||
|
@ -2237,7 +2237,7 @@ int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[4][
|
|||
light.constant_attenuation = 1.0f;
|
||||
light.linear_attenuation = la->att1 / la->dist;
|
||||
light.quadratic_attenuation = la->att2 / (la->dist * la->dist);
|
||||
|
||||
|
||||
if (la->type == LA_SPOT) {
|
||||
light.type = GPU_LIGHT_SPOT;
|
||||
negate_v3_v3(light.direction, base->object->obmat[2]);
|
||||
|
@ -2248,11 +2248,11 @@ int GPU_scene_object_lights(Scene *scene, Object *ob, int lay, float viewmat[4][
|
|||
else
|
||||
light.type = GPU_LIGHT_POINT;
|
||||
}
|
||||
|
||||
|
||||
GPU_basic_shader_light_set(count, &light);
|
||||
|
||||
|
||||
glPopMatrix();
|
||||
|
||||
|
||||
count++;
|
||||
if (count == 8)
|
||||
break;
|
||||
|
@ -2301,7 +2301,7 @@ void GPU_state_init(void)
|
|||
{
|
||||
float mat_ambient[] = { 0.0, 0.0, 0.0, 0.0 };
|
||||
float mat_specular[] = { 0.5, 0.5, 0.5, 1.0 };
|
||||
|
||||
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_specular);
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
|
||||
|
@ -2309,7 +2309,7 @@ void GPU_state_init(void)
|
|||
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
|
||||
|
||||
GPU_default_lights();
|
||||
|
||||
|
||||
glDepthFunc(GL_LEQUAL);
|
||||
/* scaling matrices */
|
||||
glEnable(GL_NORMALIZE);
|
||||
|
@ -2331,7 +2331,7 @@ void GPU_state_init(void)
|
|||
glDisableClientState(GL_NORMAL_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
|
||||
glPixelTransferi(GL_MAP_COLOR, GL_FALSE);
|
||||
glPixelTransferi(GL_RED_SCALE, 1);
|
||||
glPixelTransferi(GL_RED_BIAS, 0);
|
||||
|
@ -2341,7 +2341,7 @@ void GPU_state_init(void)
|
|||
glPixelTransferi(GL_BLUE_BIAS, 0);
|
||||
glPixelTransferi(GL_ALPHA_SCALE, 1);
|
||||
glPixelTransferi(GL_ALPHA_BIAS, 0);
|
||||
|
||||
|
||||
glPixelTransferi(GL_DEPTH_BIAS, 0);
|
||||
glPixelTransferi(GL_DEPTH_SCALE, 1);
|
||||
glDepthRange(0.0, 1.0);
|
||||
|
|
|
@ -106,7 +106,7 @@ GPUFrameBuffer *GPU_framebuffer_create(void)
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
fb = MEM_callocN(sizeof(GPUFrameBuffer), "GPUFrameBuffer");
|
||||
glGenFramebuffersEXT(1, &fb->object);
|
||||
|
||||
|
@ -122,7 +122,7 @@ GPUFrameBuffer *GPU_framebuffer_create(void)
|
|||
glReadBuffer(GL_NONE);
|
||||
glDrawBuffer(GL_NONE);
|
||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||
|
||||
|
||||
return fb;
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ int GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *tex, int slot
|
|||
/* Clean glError buffer. */
|
||||
while (glGetError() != GL_NO_ERROR) {}
|
||||
|
||||
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attachment,
|
||||
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attachment,
|
||||
GPU_texture_target(tex), GPU_texture_opengl_bindcode(tex), 0);
|
||||
|
||||
error = glGetError();
|
||||
|
@ -233,7 +233,7 @@ void GPU_texture_bind_as_framebuffer(GPUTexture *tex)
|
|||
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT + fb_attachment);
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT + fb_attachment);
|
||||
}
|
||||
|
||||
|
||||
if (GPU_texture_target(tex) == GL_TEXTURE_2D_MULTISAMPLE) {
|
||||
glEnable(GL_MULTISAMPLE);
|
||||
}
|
||||
|
@ -252,19 +252,19 @@ void GPU_framebuffer_slots_bind(GPUFrameBuffer *fb, int slot)
|
|||
{
|
||||
int numslots = 0, i;
|
||||
GLenum attachments[4];
|
||||
|
||||
|
||||
if (!fb->colortex[slot]) {
|
||||
fprintf(stderr, "Error, framebuffer slot empty!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (fb->colortex[i]) {
|
||||
attachments[numslots] = GL_COLOR_ATTACHMENT0_EXT + i;
|
||||
numslots++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* push attributes */
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_VIEWPORT_BIT);
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
|
@ -320,21 +320,21 @@ bool GPU_framebuffer_bound(GPUFrameBuffer *fb)
|
|||
bool GPU_framebuffer_check_valid(GPUFrameBuffer *fb, char err_out[256])
|
||||
{
|
||||
GLenum status;
|
||||
|
||||
|
||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb->object);
|
||||
GG.currentfb = fb->object;
|
||||
|
||||
|
||||
/* Clean glError buffer. */
|
||||
while (glGetError() != GL_NO_ERROR) {}
|
||||
|
||||
|
||||
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
|
||||
|
||||
|
||||
if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
|
||||
GPU_framebuffer_restore();
|
||||
gpu_print_framebuffer_error(status, err_out);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -385,14 +385,14 @@ void GPU_framebuffer_blur(
|
|||
|
||||
scale_uniform = GPU_shader_get_uniform(blur_shader, "ScaleU");
|
||||
texture_source_uniform = GPU_shader_get_uniform(blur_shader, "textureSource");
|
||||
|
||||
|
||||
/* Blurring horizontally */
|
||||
|
||||
/* We do the bind ourselves rather than using GPU_framebuffer_texture_bind() to avoid
|
||||
* pushing unnecessary matrices onto the OpenGL stack. */
|
||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, blurfb->object);
|
||||
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
|
||||
|
||||
|
||||
/* avoid warnings from texture binding */
|
||||
GG.currentfb = blurfb->object;
|
||||
|
||||
|
@ -425,9 +425,9 @@ void GPU_framebuffer_blur(
|
|||
|
||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb->object);
|
||||
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
|
||||
|
||||
|
||||
GG.currentfb = fb->object;
|
||||
|
||||
|
||||
glViewport(0, 0, GPU_texture_width(tex), GPU_texture_height(tex));
|
||||
GPU_shader_uniform_vector(blur_shader, scale_uniform, 2, 1, scalev);
|
||||
GPU_shader_uniform_texture(blur_shader, texture_source_uniform, blurtex);
|
||||
|
@ -499,11 +499,11 @@ GPUOffScreen *GPU_offscreen_create(int width, int height, int samples, char err_
|
|||
GPU_offscreen_free(ofs);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* check validity at the very end! */
|
||||
if (!GPU_framebuffer_check_valid(ofs->fb, err_out)) {
|
||||
GPU_offscreen_free(ofs);
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GPU_framebuffer_restore();
|
||||
|
@ -519,7 +519,7 @@ void GPU_offscreen_free(GPUOffScreen *ofs)
|
|||
GPU_texture_free(ofs->color);
|
||||
if (ofs->depth)
|
||||
GPU_texture_free(ofs->depth);
|
||||
|
||||
|
||||
MEM_freeN(ofs);
|
||||
}
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ struct GPUMaterial {
|
|||
/* material for mesh surface, worlds or something else.
|
||||
* some code generation is done differently depending on the use case */
|
||||
int type;
|
||||
|
||||
|
||||
/* for creating the material */
|
||||
ListBase nodes;
|
||||
GPUNodeLink *outlink;
|
||||
|
@ -198,7 +198,7 @@ static void gpu_material_set_attrib_id(GPUMaterial *material)
|
|||
attribs->totlayer = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
GPUShader *shader = GPU_pass_shader(pass);
|
||||
if (!shader) {
|
||||
attribs->totlayer = 0;
|
||||
|
@ -241,7 +241,7 @@ static int gpu_material_construct_end(GPUMaterial *material, const char *passnam
|
|||
return 0;
|
||||
|
||||
gpu_material_set_attrib_id(material);
|
||||
|
||||
|
||||
GPUShader *shader = GPU_pass_shader(material->pass);
|
||||
|
||||
if (material->builtins & GPU_VIEW_MATRIX)
|
||||
|
@ -294,7 +294,7 @@ void GPU_material_free(ListBase *gpumaterial)
|
|||
|
||||
if (material->ma) {
|
||||
Material *ma = material->ma;
|
||||
|
||||
|
||||
LinkData *next = NULL;
|
||||
for (LinkData *mlink = lamp->materials.first; mlink; mlink = next) {
|
||||
next = mlink->next;
|
||||
|
@ -303,7 +303,7 @@ void GPU_material_free(ListBase *gpumaterial)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BLI_freelistN(&material->lamps);
|
||||
|
||||
MEM_freeN(material);
|
||||
|
@ -339,7 +339,7 @@ void GPU_material_bind(
|
|||
if (material->type == GPU_MATERIAL_TYPE_MESH) {
|
||||
for (LinkData *nlink = material->lamps.first; nlink; nlink = nlink->next) {
|
||||
GPULamp *lamp = nlink->data;
|
||||
|
||||
|
||||
if ((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay)) &&
|
||||
GPU_lamp_visible(lamp, srl, material->ma))
|
||||
{
|
||||
|
@ -350,23 +350,23 @@ void GPU_material_bind(
|
|||
lamp->dynenergy = 0.0f;
|
||||
lamp->dyncol[0] = lamp->dyncol[1] = lamp->dyncol[2] = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
if (material->dynproperty & DYN_LAMP_VEC) {
|
||||
copy_v3_v3(lamp->dynvec, lamp->vec);
|
||||
normalize_v3(lamp->dynvec);
|
||||
negate_v3(lamp->dynvec);
|
||||
mul_mat3_m4_v3(viewmat, lamp->dynvec);
|
||||
}
|
||||
|
||||
|
||||
if (material->dynproperty & DYN_LAMP_CO) {
|
||||
copy_v3_v3(lamp->dynco, lamp->co);
|
||||
mul_m4_v3(viewmat, lamp->dynco);
|
||||
}
|
||||
|
||||
|
||||
if (material->dynproperty & DYN_LAMP_IMAT) {
|
||||
mul_m4_m4m4(lamp->dynimat, lamp->imat, viewinv);
|
||||
}
|
||||
|
||||
|
||||
if (material->dynproperty & DYN_LAMP_PERSMAT) {
|
||||
/* The lamp matrices are already updated if we're using shadow buffers */
|
||||
if (!GPU_lamp_has_shadow_buffer(lamp)) {
|
||||
|
@ -376,7 +376,7 @@ void GPU_material_bind(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* note material must be bound before setting uniforms */
|
||||
GPU_pass_bind(material->pass, time, mipmap);
|
||||
|
||||
|
@ -620,7 +620,7 @@ static GPUNodeLink *lamp_get_visibility(GPUMaterial *mat, GPULamp *lamp, GPUNode
|
|||
GPU_dynamic_uniform((float *)lamp->dynimat, GPU_DYNAMIC_LAMP_DYNIMAT, lamp->ob),
|
||||
GPU_dynamic_uniform((float *)lamp->spotvec, GPU_DYNAMIC_LAMP_SPOTSCALE, lamp->ob), *lv, &inpr);
|
||||
}
|
||||
|
||||
|
||||
GPU_link(mat, "lamp_visibility_spot",
|
||||
GPU_dynamic_uniform(&lamp->spotsi, GPU_DYNAMIC_LAMP_SPOTSIZE, lamp->ob),
|
||||
GPU_dynamic_uniform(&lamp->spotbl, GPU_DYNAMIC_LAMP_SPOTBLEND, lamp->ob),
|
||||
|
@ -709,7 +709,7 @@ static void ramp_diffuse_result(GPUShadeInput *shi, GPUNodeLink **diff)
|
|||
if (ma->rampin_col == MA_RAMP_IN_RESULT) {
|
||||
GPUNodeLink *fac;
|
||||
GPU_link(mat, "ramp_rgbtobw", *diff, &fac);
|
||||
|
||||
|
||||
/* colorband + blend */
|
||||
BKE_colorband_eval_blend(mat, ma->ramp_col, fac, ma->rampfac_col, ma->rampblend_col, *diff, diff);
|
||||
}
|
||||
|
@ -722,7 +722,7 @@ static void add_to_diffuse(
|
|||
GPUNodeLink **r_diff)
|
||||
{
|
||||
GPUNodeLink *fac, *tmp, *addcol;
|
||||
|
||||
|
||||
if (!(mat->scene->gm.flag & GAME_GLSL_NO_RAMPS) &&
|
||||
ma->ramp_col && (ma->mode & MA_RAMP_COL))
|
||||
{
|
||||
|
@ -768,7 +768,7 @@ static void ramp_spec_result(GPUShadeInput *shi, GPUNodeLink **spec)
|
|||
{
|
||||
GPUNodeLink *fac;
|
||||
GPU_link(mat, "ramp_rgbtobw", *spec, &fac);
|
||||
|
||||
|
||||
/* colorband + blend */
|
||||
BKE_colorband_eval_blend(mat, ma->ramp_spec, fac, ma->rampfac_spec, ma->rampblend_spec, *spec, spec);
|
||||
}
|
||||
|
@ -784,7 +784,7 @@ static void do_specular_ramp(GPUShadeInput *shi, GPUNodeLink *is, GPUNodeLink *t
|
|||
|
||||
/* MA_RAMP_IN_RESULT is exception */
|
||||
if (ma->ramp_spec && (ma->rampin_spec != MA_RAMP_IN_RESULT)) {
|
||||
|
||||
|
||||
/* input */
|
||||
switch (ma->rampin_spec) {
|
||||
case MA_RAMP_IN_ENERGY:
|
||||
|
@ -800,7 +800,7 @@ static void do_specular_ramp(GPUShadeInput *shi, GPUNodeLink *is, GPUNodeLink *t
|
|||
GPU_link(mat, "set_value_zero", &fac);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* colorband + blend */
|
||||
BKE_colorband_eval_blend(mat, ma->ramp_spec, fac, ma->rampfac_spec, ma->rampblend_spec, *spec, spec);
|
||||
}
|
||||
|
@ -844,7 +844,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
|
||||
if ((lamp->mode & LA_ONLYSHADOW) && !(ma->mode & MA_SHADOW))
|
||||
return;
|
||||
|
||||
|
||||
GPUNodeLink *vn = shi->vn;
|
||||
GPUNodeLink *view = shi->view;
|
||||
|
||||
|
@ -854,7 +854,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
if (ma->mode & MA_TANGENT_V)
|
||||
GPU_link(mat, "shade_tangent_v", lv, GPU_attribute(CD_TANGENT, ""), &vn);
|
||||
#endif
|
||||
|
||||
|
||||
GPU_link(mat, "shade_inp", vn, lv, &inp);
|
||||
|
||||
if (lamp->mode & LA_NO_DIFF) {
|
||||
|
@ -898,10 +898,10 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
if (!(mat->scene->gm.flag & GAME_GLSL_NO_SHADERS))
|
||||
if (ma->shade_flag & MA_CUBIC)
|
||||
GPU_link(mat, "shade_cubic", is, &is);
|
||||
|
||||
|
||||
i = is;
|
||||
GPU_link(mat, "shade_visifac", i, visifac, shi->refl, &i);
|
||||
|
||||
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(lamp->dyncol, GPU_DYNAMIC_LAMP_DYNCOL, lamp->ob), &lcol);
|
||||
shade_light_textures(mat, lamp, &lcol);
|
||||
GPU_link(mat, "shade_mul_value_v3",
|
||||
|
@ -918,7 +918,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
if ((ma->mode & MA_SHADOW) && GPU_lamp_has_shadow_buffer(lamp)) {
|
||||
if (!(mat->scene->gm.flag & GAME_GLSL_NO_SHADOWS)) {
|
||||
mat->dynproperty |= DYN_LAMP_PERSMAT;
|
||||
|
||||
|
||||
if (lamp->la->shadowmap_type == LA_SHADMAP_VARIANCE) {
|
||||
GPU_link(mat, "test_shadowbuf_vsm",
|
||||
GPU_builtin(GPU_VIEW_POSITION),
|
||||
|
@ -933,13 +933,13 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
GPU_dynamic_uniform((float *)lamp->dynpersmat, GPU_DYNAMIC_LAMP_DYNPERSMAT, lamp->ob),
|
||||
GPU_uniform(&lamp->bias), inp, &shadfac);
|
||||
}
|
||||
|
||||
|
||||
if (lamp->mode & LA_ONLYSHADOW) {
|
||||
GPUNodeLink *shadrgb;
|
||||
GPU_link(mat, "shade_only_shadow", i, shadfac,
|
||||
GPU_dynamic_uniform(&lamp->dynenergy, GPU_DYNAMIC_LAMP_DYNENERGY, lamp->ob),
|
||||
GPU_uniform(lamp->shadow_color), &shadrgb);
|
||||
|
||||
|
||||
if (!(lamp->mode & LA_NO_DIFF)) {
|
||||
GPU_link(mat, "shade_only_shadow_diffuse", shadrgb, shi->rgb,
|
||||
shr->diff, &shr->diff);
|
||||
|
@ -949,7 +949,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
GPU_link(mat, "shade_only_shadow_specular", shadrgb, shi->specrgb,
|
||||
shr->spec, &shr->spec);
|
||||
}
|
||||
|
||||
|
||||
add_user_list(&mat->lamps, lamp);
|
||||
add_user_list(&lamp->materials, shi->gpumat->ma);
|
||||
return;
|
||||
|
@ -1009,7 +1009,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
|||
if (lamp->type == LA_AREA)
|
||||
GPU_link(mat, "shade_spec_area_inp", specfac, inp, &specfac);
|
||||
|
||||
GPU_link(mat, "shade_spec_t", shadfac, shi->spec, visifac, specfac, &t);
|
||||
GPU_link(mat, "shade_spec_t", shadfac, shi->spec, visifac, specfac, &t);
|
||||
|
||||
if (ma->mode & MA_RAMP_SPEC) {
|
||||
GPUNodeLink *spec;
|
||||
|
@ -1032,7 +1032,7 @@ static void material_lights(GPUShadeInput *shi, GPUShadeResult *shr)
|
|||
{
|
||||
Base *base;
|
||||
Scene *sce_iter;
|
||||
|
||||
|
||||
for (SETLOOPER(shi->gpumat->scene, sce_iter, base)) {
|
||||
Object *ob = base->object;
|
||||
|
||||
|
@ -1044,7 +1044,7 @@ static void material_lights(GPUShadeInput *shi, GPUShadeResult *shr)
|
|||
|
||||
if (ob->transflag & OB_DUPLI) {
|
||||
ListBase *lb = object_duplilist(G.main->eval_ctx, shi->gpumat->scene, ob);
|
||||
|
||||
|
||||
for (DupliObject *dob = lb->first; dob; dob = dob->next) {
|
||||
Object *ob_iter = dob->ob;
|
||||
|
||||
|
@ -1060,7 +1060,7 @@ static void material_lights(GPUShadeInput *shi, GPUShadeResult *shr)
|
|||
copy_m4_m4(ob_iter->obmat, omat);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
free_object_duplilist(lb);
|
||||
}
|
||||
}
|
||||
|
@ -1204,10 +1204,10 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
for (int tex_nr = 0; tex_nr < MAX_MTEX; tex_nr++) {
|
||||
/* separate tex switching */
|
||||
if (ma->septex & (1 << tex_nr)) continue;
|
||||
|
||||
|
||||
if (ma->mtex[tex_nr]) {
|
||||
mtex = ma->mtex[tex_nr];
|
||||
|
||||
|
||||
tex = mtex->tex;
|
||||
if (tex == NULL) continue;
|
||||
|
||||
|
@ -1319,7 +1319,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
GPU_link(mat, "srgb_to_linearrgb", tcol, &tcol);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (mtex->mapto & MAP_COL) {
|
||||
GPUNodeLink *colfac;
|
||||
|
||||
|
@ -1328,7 +1328,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
|
||||
texture_rgb_blend(mat, tcol, shi->rgb, tin, colfac, mtex->blendtype, &shi->rgb);
|
||||
}
|
||||
|
||||
|
||||
if (!(mat->scene->gm.flag & GAME_GLSL_NO_EXTRA_TEX) && (mtex->mapto & MAP_COLSPEC)) {
|
||||
GPUNodeLink *colspecfac;
|
||||
|
||||
|
@ -1360,7 +1360,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
if (tex->imaflag & TEX_NORMALMAP) {
|
||||
/* normalmap image */
|
||||
GPU_link(mat, "mtex_normal", texco, GPU_image(tex->ima, &tex->iuser, true), &tnor);
|
||||
|
||||
|
||||
if (mtex->norfac < 0.0f)
|
||||
GPU_link(mat, "mtex_negate_texnormal", tnor, &tnor);
|
||||
|
||||
|
@ -1391,21 +1391,21 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
/* no transform, normal in camera space */
|
||||
newnor = tnor;
|
||||
}
|
||||
|
||||
|
||||
float norfac = min_ff(fabsf(mtex->norfac), 1.0f);
|
||||
|
||||
|
||||
if (norfac == 1.0f && !GPU_link_changed(stencil)) {
|
||||
shi->vn = newnor;
|
||||
}
|
||||
else {
|
||||
tnorfac = GPU_uniform(&norfac);
|
||||
|
||||
|
||||
if (GPU_link_changed(stencil))
|
||||
GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac);
|
||||
|
||||
|
||||
GPU_link(mat, "mtex_blend_normal", tnorfac, shi->vn, newnor, &shi->vn);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else if (found_deriv_map ||
|
||||
(mtex->texflag & (MTEX_3TAP_BUMP | MTEX_5TAP_BUMP | MTEX_BICUBIC_BUMP)))
|
||||
|
@ -1416,7 +1416,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
|
||||
float imag_tspace_dimension_x = 1024.0f; /* only used for texture space variant */
|
||||
float aspect = 1.0f;
|
||||
|
||||
|
||||
GPUNodeLink *vR1, *vR2;
|
||||
GPUNodeLink *dBs, *dBt, *fDet;
|
||||
|
||||
|
@ -1452,17 +1452,17 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
|
||||
if (found_deriv_map)
|
||||
GPU_link(mat, "math_multiply", tnorfac, GPU_builtin(GPU_AUTO_BUMPSCALE), &tnorfac);
|
||||
|
||||
|
||||
if (GPU_link_changed(stencil))
|
||||
GPU_link(mat, "math_multiply", tnorfac, stencil, &tnorfac);
|
||||
|
||||
|
||||
if (!init_done) {
|
||||
/* copy shi->vn to vNorg and vNacc, set magnitude to 1 */
|
||||
GPU_link(mat, "mtex_bump_normals_init", shi->vn, &vNorg, &vNacc, &fPrevMagnitude);
|
||||
iBumpSpacePrev = 0;
|
||||
init_done = true;
|
||||
}
|
||||
|
||||
|
||||
// find current bump space
|
||||
if (mtex->texflag & MTEX_BUMP_OBJECTSPACE)
|
||||
iBumpSpace = 1;
|
||||
|
@ -1470,7 +1470,7 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
iBumpSpace = 2;
|
||||
else
|
||||
iBumpSpace = 4; /* ViewSpace */
|
||||
|
||||
|
||||
/* re-initialize if bump space changed */
|
||||
if (iBumpSpacePrev != iBumpSpace) {
|
||||
GPUNodeLink *surf_pos = GPU_builtin(GPU_VIEW_POSITION);
|
||||
|
@ -1485,25 +1485,25 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
fPrevMagnitude, vNacc,
|
||||
&fPrevMagnitude, &vNacc,
|
||||
&vR1, &vR2, &fDet);
|
||||
|
||||
|
||||
else if (mtex->texflag & MTEX_BUMP_TEXTURESPACE)
|
||||
GPU_link(mat, "mtex_bump_init_texturespace",
|
||||
surf_pos, vNorg,
|
||||
fPrevMagnitude, vNacc,
|
||||
&fPrevMagnitude, &vNacc,
|
||||
&vR1, &vR2, &fDet);
|
||||
|
||||
|
||||
else
|
||||
GPU_link(mat, "mtex_bump_init_viewspace",
|
||||
surf_pos, vNorg,
|
||||
fPrevMagnitude, vNacc,
|
||||
&fPrevMagnitude, &vNacc,
|
||||
&vR1, &vR2, &fDet);
|
||||
|
||||
|
||||
iBumpSpacePrev = iBumpSpace;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (found_deriv_map) {
|
||||
GPU_link(mat, "mtex_bump_deriv",
|
||||
texco, GPU_image(tex->ima, &tex->iuser, true),
|
||||
|
@ -1530,8 +1530,8 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
&dBs, &dBt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (mtex->texflag & MTEX_BUMP_TEXTURESPACE) {
|
||||
float imag_tspace_dimension_y = aspect * imag_tspace_dimension_x;
|
||||
GPU_link(mat, "mtex_bump_apply_texspace",
|
||||
|
@ -1545,10 +1545,10 @@ static void do_material_tex(GPUShadeInput *shi)
|
|||
GPU_link(mat, "mtex_bump_apply",
|
||||
fDet, dBs, dBt, vR1, vR2, vNacc,
|
||||
&vNacc, &shi->vn);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
GPU_link(mat, "vec_math_negate", shi->vn, &orn);
|
||||
}
|
||||
|
||||
|
@ -1863,14 +1863,14 @@ static GPUNodeLink *gpu_material_diffuse_bsdf(GPUMaterial *mat, Material *ma)
|
|||
static GPUNodeLink *gpu_material_preview_matcap(GPUMaterial *mat, Material *ma)
|
||||
{
|
||||
GPUNodeLink *outlink;
|
||||
|
||||
|
||||
/* some explanations here:
|
||||
* matcap normal holds the normal remapped to the 0.0 - 1.0 range. To take advantage of flat shading, we abuse
|
||||
* the built in secondary color of opengl. Color is just the regular color, which should include mask value too.
|
||||
* This also needs flat shading so we use the primary opengl color built-in */
|
||||
GPU_link(mat, "material_preview_matcap", GPU_uniform(&ma->r), GPU_image_preview(ma->preview),
|
||||
GPU_opengl_builtin(GPU_MATCAP_NORMAL), GPU_opengl_builtin(GPU_COLOR), &outlink);
|
||||
|
||||
|
||||
return outlink;
|
||||
}
|
||||
|
||||
|
@ -1880,7 +1880,7 @@ GPUMaterial *GPU_material_matcap(Scene *scene, Material *ma, bool use_opensubdiv
|
|||
GPUMaterial *mat;
|
||||
GPUNodeLink *outlink;
|
||||
LinkData *link;
|
||||
|
||||
|
||||
for (link = ma->gpumaterial.first; link; link = link->next) {
|
||||
GPUMaterial *current_material = (GPUMaterial *)link->data;
|
||||
if (current_material->scene == scene &&
|
||||
|
@ -1889,7 +1889,7 @@ GPUMaterial *GPU_material_matcap(Scene *scene, Material *ma, bool use_opensubdiv
|
|||
return current_material;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* allocate material */
|
||||
mat = GPU_material_construct_begin(ma);
|
||||
mat->scene = scene;
|
||||
|
@ -1902,19 +1902,19 @@ GPUMaterial *GPU_material_matcap(Scene *scene, Material *ma, bool use_opensubdiv
|
|||
else {
|
||||
outlink = gpu_material_diffuse_bsdf(mat, ma);
|
||||
}
|
||||
|
||||
|
||||
GPU_material_output_link(mat, outlink);
|
||||
|
||||
gpu_material_construct_end(mat, "matcap_pass");
|
||||
|
||||
|
||||
/* note that even if building the shader fails in some way, we still keep
|
||||
* it to avoid trying to compile again and again, and simple do not use
|
||||
* the actual shader on drawing */
|
||||
|
||||
|
||||
link = MEM_callocN(sizeof(LinkData), "GPUMaterialLink");
|
||||
link->data = mat;
|
||||
BLI_addtail(&ma->gpumaterial, link);
|
||||
|
||||
|
||||
return mat;
|
||||
}
|
||||
|
||||
|
@ -2124,7 +2124,7 @@ GPUMaterial *GPU_material_world(struct Scene *scene, struct World *wo)
|
|||
mat = GPU_material_construct_begin(NULL);
|
||||
mat->scene = scene;
|
||||
mat->type = GPU_MATERIAL_TYPE_WORLD;
|
||||
|
||||
|
||||
/* create nodes */
|
||||
if (BKE_scene_use_new_shading_nodes(scene) && wo->nodetree && wo->use_nodes) {
|
||||
ntreeGPUMaterialNodes(wo->nodetree, mat, NODE_NEW_SHADING);
|
||||
|
@ -2138,7 +2138,7 @@ GPUMaterial *GPU_material_world(struct Scene *scene, struct World *wo)
|
|||
GPU_link(mat, "linearrgb_to_srgb", mat->outlink, &mat->outlink);
|
||||
|
||||
gpu_material_construct_end(mat, wo->id.name);
|
||||
|
||||
|
||||
/* note that even if building the shader fails in some way, we still keep
|
||||
* it to avoid trying to compile again and again, and simple do not use
|
||||
* the actual shader on drawing */
|
||||
|
@ -2228,7 +2228,7 @@ void GPU_materials_free(void)
|
|||
|
||||
for (wo = G.main->world.first; wo; wo = wo->id.next)
|
||||
GPU_material_free(&wo->gpumaterial);
|
||||
|
||||
|
||||
GPU_material_free(&defmaterial.gpumaterial);
|
||||
|
||||
for (ob = G.main->object.first; ob; ob = ob->id.next)
|
||||
|
@ -2423,7 +2423,7 @@ GPULamp *GPU_lamp_from_blender(Scene *scene, Object *ob, Object *par)
|
|||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
if (!GPU_framebuffer_texture_attach(lamp->fb, lamp->depthtex, 0, NULL)) {
|
||||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
|
@ -2443,9 +2443,9 @@ GPULamp *GPU_lamp_from_blender(Scene *scene, Object *ob, Object *par)
|
|||
|
||||
if (!GPU_framebuffer_check_valid(lamp->fb, NULL)) {
|
||||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
/* FBO and texture for blurring */
|
||||
lamp->blurfb = GPU_framebuffer_create();
|
||||
if (!lamp->blurfb) {
|
||||
|
@ -2458,20 +2458,20 @@ GPULamp *GPU_lamp_from_blender(Scene *scene, Object *ob, Object *par)
|
|||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
if (!GPU_framebuffer_texture_attach(lamp->blurfb, lamp->blurtex, 0, NULL)) {
|
||||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
/* we need to properly bind to test for completeness */
|
||||
GPU_texture_bind_as_framebuffer(lamp->blurtex);
|
||||
|
||||
|
||||
if (!GPU_framebuffer_check_valid(lamp->blurfb, NULL)) {
|
||||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
GPU_framebuffer_texture_unbind(lamp->blurfb, lamp->blurtex);
|
||||
}
|
||||
else {
|
||||
|
@ -2485,11 +2485,11 @@ GPULamp *GPU_lamp_from_blender(Scene *scene, Object *ob, Object *par)
|
|||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
|
||||
|
||||
if (!GPU_framebuffer_check_valid(lamp->fb, NULL)) {
|
||||
gpu_lamp_shadow_free(lamp);
|
||||
return lamp;
|
||||
}
|
||||
return lamp;
|
||||
}
|
||||
}
|
||||
|
||||
GPU_framebuffer_restore();
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#include "GPU_select.h"
|
||||
#include "GPU_extensions.h"
|
||||
#include "GPU_glew.h"
|
||||
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_rect.h"
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include "GPU_select.h"
|
||||
#include "GPU_extensions.h"
|
||||
#include "GPU_glew.h"
|
||||
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_rect.h"
|
||||
|
|
|
@ -112,11 +112,11 @@ static void shader_print_errors(const char *task, const char *log, const char **
|
|||
c = pos + 1;
|
||||
line++;
|
||||
}
|
||||
|
||||
|
||||
fprintf(stderr, "%s", c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fprintf(stderr, "%s\n", log);
|
||||
}
|
||||
|
||||
|
@ -461,7 +461,7 @@ GPUShader *GPU_shader_create_ex(const char *vertexcode,
|
|||
GPU_shader_free(shader);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
if (!use_opensubdiv) {
|
||||
GPU_shader_geometry_stage_primitive_io(shader, input, output, number);
|
||||
}
|
||||
|
@ -620,7 +620,7 @@ void GPU_shader_uniform_texture(GPUShader *UNUSED(shader), int location, GPUText
|
|||
fprintf(stderr, "Not enough texture slots.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (number == -1)
|
||||
return;
|
||||
|
||||
|
@ -646,7 +646,7 @@ void GPU_shader_uniform_texture(GPUShader *UNUSED(shader), int location, GPUText
|
|||
int GPU_shader_get_attribute(GPUShader *shader, const char *name)
|
||||
{
|
||||
int index;
|
||||
|
||||
|
||||
GPU_CHECK_ERRORS_AROUND(index = glGetAttribLocation(shader->program, name));
|
||||
|
||||
return index;
|
||||
|
|
|
@ -87,7 +87,7 @@ static void gpu_glTexSubImageEmpty(GLenum target, GLenum format, int x, int y, i
|
|||
glTexSubImage1D(target, 0, x, w, format, GL_UNSIGNED_BYTE, pixels);
|
||||
else
|
||||
glTexSubImage2D(target, 0, x, y, w, h, format, GL_UNSIGNED_BYTE, pixels);
|
||||
|
||||
|
||||
MEM_freeN(pixels);
|
||||
}
|
||||
|
||||
|
@ -432,10 +432,10 @@ GPUTexture *GPU_texture_from_preview(PreviewImage *prv, int mipmap)
|
|||
{
|
||||
GPUTexture *tex = prv->gputexture[0];
|
||||
GLuint bindcode = 0;
|
||||
|
||||
|
||||
if (tex)
|
||||
bindcode = tex->bindcode;
|
||||
|
||||
|
||||
/* this binds a texture, so that's why we restore it to 0 */
|
||||
if (bindcode == 0) {
|
||||
GPU_create_gl_tex(&bindcode, prv->rect[0], NULL, prv->w[0], prv->h[0], GL_TEXTURE_2D, mipmap, 0, NULL);
|
||||
|
@ -452,9 +452,9 @@ GPUTexture *GPU_texture_from_preview(PreviewImage *prv, int mipmap)
|
|||
tex->refcount = 1;
|
||||
tex->target = GL_TEXTURE_2D;
|
||||
tex->target_base = GL_TEXTURE_2D;
|
||||
|
||||
|
||||
prv->gputexture[0] = tex;
|
||||
|
||||
|
||||
if (!glIsTexture(tex->bindcode)) {
|
||||
GPU_ASSERT_NO_GL_ERRORS("Blender Texture Not Loaded");
|
||||
}
|
||||
|
@ -464,13 +464,13 @@ GPUTexture *GPU_texture_from_preview(PreviewImage *prv, int mipmap)
|
|||
glBindTexture(GL_TEXTURE_2D, tex->bindcode);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
|
||||
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
|
||||
|
||||
|
||||
tex->w = w;
|
||||
tex->h = h;
|
||||
}
|
||||
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
|
||||
return tex;
|
||||
|
||||
}
|
||||
|
@ -481,7 +481,7 @@ GPUTexture *GPU_texture_create_1D(int w, const float *fpixels, char err_out[256]
|
|||
|
||||
if (tex)
|
||||
GPU_texture_unbind(tex);
|
||||
|
||||
|
||||
return tex;
|
||||
}
|
||||
|
||||
|
@ -491,7 +491,7 @@ GPUTexture *GPU_texture_create_2D(int w, int h, const float *fpixels, GPUHDRType
|
|||
|
||||
if (tex)
|
||||
GPU_texture_unbind(tex);
|
||||
|
||||
|
||||
return tex;
|
||||
}
|
||||
GPUTexture *GPU_texture_create_2D_multisample(
|
||||
|
@ -511,7 +511,7 @@ GPUTexture *GPU_texture_create_depth(int w, int h, char err_out[256])
|
|||
|
||||
if (tex)
|
||||
GPU_texture_unbind(tex);
|
||||
|
||||
|
||||
return tex;
|
||||
}
|
||||
GPUTexture *GPU_texture_create_depth_multisample(int w, int h, int samples, char err_out[256])
|
||||
|
@ -653,7 +653,7 @@ void GPU_texture_unbind(GPUTexture *tex)
|
|||
|
||||
if (tex->number == -1)
|
||||
return;
|
||||
|
||||
|
||||
GPU_ASSERT_NO_GL_ERRORS("Pre Texture Unbind");
|
||||
|
||||
GLenum arbnumber = (GLenum)((GLuint)GL_TEXTURE0 + tex->number);
|
||||
|
@ -713,7 +713,7 @@ void GPU_texture_free(GPUTexture *tex)
|
|||
|
||||
if (tex->refcount < 0)
|
||||
fprintf(stderr, "GPUTexture: negative refcount\n");
|
||||
|
||||
|
||||
if (tex->refcount == 0) {
|
||||
if (tex->fb)
|
||||
GPU_framebuffer_texture_detach(tex);
|
||||
|
|
|
@ -54,8 +54,8 @@ void main()
|
|||
#elif !defined(GPU_ATI)
|
||||
// Setting gl_ClipVertex is necessary to get glClipPlane working on NVIDIA
|
||||
// graphic cards, while on ATI it can cause a software fallback.
|
||||
gl_ClipVertex = co;
|
||||
#endif
|
||||
gl_ClipVertex = co;
|
||||
#endif
|
||||
|
||||
#ifdef USE_COLOR
|
||||
#ifdef DRAW_LINE
|
||||
|
|
|
@ -55,4 +55,4 @@ void main()
|
|||
#else
|
||||
vert_dof_final();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3887,7 +3887,7 @@ void material_preview_matcap(vec4 color, sampler2D ima, vec4 N, vec4 mask, out v
|
|||
{
|
||||
vec3 normal;
|
||||
vec2 tex;
|
||||
|
||||
|
||||
#ifndef USE_OPENSUBDIV
|
||||
/* remap to 0.0 - 1.0 range. This is done because OpenGL 2.0 clamps colors
|
||||
* between shader stages and we want the full range of the normal */
|
||||
|
|
|
@ -102,8 +102,8 @@ void main()
|
|||
#elif !defined(GPU_ATI)
|
||||
// Setting gl_ClipVertex is necessary to get glClipPlane working on NVIDIA
|
||||
// graphic cards, while on ATI it can cause a software fallback.
|
||||
gl_ClipVertex = co;
|
||||
#endif
|
||||
gl_ClipVertex = co;
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENSUBDIV
|
||||
outpt.v.position = co;
|
||||
|
|
Loading…
Reference in New Issue