DRW: Fix boolean uniform lenght.
Boolean uniform needs to be 4bytes long for opengl. Use "int" for every bool you want to pass as a uniform.
This commit is contained in:
@@ -416,9 +416,9 @@ typedef struct EEVEE_LightProbesInfo {
|
||||
float visibility_blur;
|
||||
int shres;
|
||||
int shnbr;
|
||||
bool specular_toggle;
|
||||
bool ssr_toggle;
|
||||
bool sss_toggle;
|
||||
int specular_toggle;
|
||||
int ssr_toggle;
|
||||
int sss_toggle;
|
||||
/* List of probes in the scene. */
|
||||
/* XXX This is fragile, can get out of sync quickly. */
|
||||
struct Object *probes_cube_ref[MAX_PROBE];
|
||||
|
||||
@@ -341,13 +341,14 @@ void DRW_shgroup_attrib_float(DRWShadingGroup *shgroup, const char *name, int si
|
||||
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const struct GPUTexture *tex);
|
||||
void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup, const char *name, const struct GPUUniformBuffer *ubo);
|
||||
void DRW_shgroup_uniform_buffer(DRWShadingGroup *shgroup, const char *name, struct GPUTexture **tex);
|
||||
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const bool *value, int arraysize);
|
||||
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize);
|
||||
void DRW_shgroup_uniform_vec2(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize);
|
||||
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize);
|
||||
void DRW_shgroup_uniform_vec4(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize);
|
||||
void DRW_shgroup_uniform_short_to_int(DRWShadingGroup *shgroup, const char *name, const short *value, int arraysize);
|
||||
void DRW_shgroup_uniform_short_to_float(DRWShadingGroup *shgroup, const char *name, const short *value, int arraysize);
|
||||
/* Boolean are expected to be 4bytes longs for opengl! */
|
||||
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize);
|
||||
void DRW_shgroup_uniform_int(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize);
|
||||
void DRW_shgroup_uniform_ivec2(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize);
|
||||
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize);
|
||||
|
||||
@@ -308,8 +308,8 @@ DRWShadingGroup *shgroup_distance_lines_instance(DRWPass *pass, struct Gwn_Batch
|
||||
DRWShadingGroup *shgroup_spot_instance(DRWPass *pass, struct Gwn_Batch *geom)
|
||||
{
|
||||
GPUShader *sh_inst = GPU_shader_get_builtin_shader(GPU_SHADER_INSTANCE_EDGES_VARIYING_COLOR);
|
||||
static bool True = true;
|
||||
static bool False = false;
|
||||
static const int True = true;
|
||||
static const int False = false;
|
||||
|
||||
DRWShadingGroup *grp = DRW_shgroup_instance_create(sh_inst, pass, geom);
|
||||
DRW_shgroup_attrib_float(grp, "color", 3);
|
||||
|
||||
@@ -1165,7 +1165,7 @@ void DRW_shgroup_uniform_buffer(DRWShadingGroup *shgroup, const char *name, GPUT
|
||||
drw_interface_uniform(shgroup, name, DRW_UNIFORM_BUFFER, tex, 0, 1);
|
||||
}
|
||||
|
||||
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const bool *value, int arraysize)
|
||||
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
|
||||
{
|
||||
drw_interface_uniform(shgroup, name, DRW_UNIFORM_BOOL, value, 1, arraysize);
|
||||
}
|
||||
|
||||
@@ -749,8 +749,9 @@ static void OBJECT_cache_init(void *vedata)
|
||||
DRWState state = DRW_STATE_WRITE_COLOR;
|
||||
struct Gwn_Batch *quad = DRW_cache_fullscreen_quad_get();
|
||||
static float alphaOcclu = 0.35f;
|
||||
static bool bTrue = true;
|
||||
static bool bFalse = false;
|
||||
/* Reminder : bool uniforms need to be 4 bytes. */
|
||||
static const int bTrue = true;
|
||||
static const int bFalse = false;
|
||||
|
||||
psl->outlines_search = DRW_pass_create("Outlines Detect Pass", state);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user