Skip to content

Commit

Permalink
-ability to set default textures in shader (needed for visual shader …
Browse files Browse the repository at this point in the history
…editing)

-work in progress new graph system (will replace current one)
-crash fix in s3m loader (out of bounds acess)
-fixed vbox overriding of separation (fixes empty line between section tabs)
  • Loading branch information
reduz committed Dec 21, 2014
1 parent 9783f6f commit f7f197c
Show file tree
Hide file tree
Showing 23 changed files with 351 additions and 44 deletions.
2 changes: 1 addition & 1 deletion drivers/chibi/cp_loader_s3m.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ CPLoader::Error CPLoader_S3M::load_sample(CPSample *p_sample) {
p_sample->set_default_volume(def_volume);
p_sample->set_name(name);

char scrs[4];
char scrs[5];
file->get_byte_array((uint8_t*)scrs,4);
scrs[4]=0;

Expand Down
10 changes: 10 additions & 0 deletions drivers/gles1/rasterizer_gles1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1021,6 +1021,16 @@ void RasterizerGLES1::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_

}


void RasterizerGLES1::shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture) {

}

RID RasterizerGLES1::shader_get_default_texture_param(RID p_shader, const StringName& p_name) const {

return RID();
}

/* COMMON MATERIAL API */


Expand Down
3 changes: 3 additions & 0 deletions drivers/gles1/rasterizer_gles1.h
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,9 @@ class RasterizerGLES1 : public Rasterizer {

virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const;

virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture);
virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const;

/* COMMON MATERIAL API */

virtual RID material_create();
Expand Down
49 changes: 48 additions & 1 deletion drivers/gles2/rasterizer_gles2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,29 @@ void RasterizerGLES2::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_

}

void RasterizerGLES2::shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture) {

Shader *shader=shader_owner.get(p_shader);
ERR_FAIL_COND(!shader);
ERR_FAIL_COND(!texture_owner.owns(p_texture));

if (p_texture.is_valid())
shader->default_textures[p_name]=p_texture;
else
shader->default_textures.erase(p_name);

}

RID RasterizerGLES2::shader_get_default_texture_param(RID p_shader, const StringName& p_name) const{
const Shader *shader=shader_owner.get(p_shader);

const Map<StringName,RID>::Element *E=shader->default_textures.find(p_name);
if (!E)
return RID();
return E->get();
}



/* COMMON MATERIAL API */

Expand Down Expand Up @@ -4991,9 +5014,26 @@ bool RasterizerGLES2::_setup_material(const Geometry *p_geometry,const Material
Texture *t=NULL;
if (rid.is_valid()) {


t=texture_owner.get(rid);
if (!t)
if (!t) {
E->get().value=RID(); //nullify, invalid texture
rid=RID();
}
} else {


}

if (!rid.is_valid()) {
//use from default textures
Map<StringName,RID>::Element *F=p_material->shader_cache->default_textures.find(E->key());
if (F) {
t=texture_owner.get(F->get());
if (!t) {
p_material->shader_cache->default_textures.erase(E->key());
}
}
}


Expand All @@ -5020,6 +5060,13 @@ bool RasterizerGLES2::_setup_material(const Geometry *p_geometry,const Material

}

for (Map<StringName,RID>::Element *E=p_material->shader_cache->default_textures.front();E;E=E->next()) {
if (p_material->shader_params.has(E->key()))
continue;


}

if (p_material->shader_cache->has_texscreen && framebuffer.active) {
material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_SCREEN_MULT,Vector2(float(viewport.width)/framebuffer.width,float(viewport.height)/framebuffer.height));
material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_TEX,texcoord);
Expand Down
3 changes: 3 additions & 0 deletions drivers/gles2/rasterizer_gles2.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ class RasterizerGLES2 : public Rasterizer {
Map<StringName,ShaderLanguage::Uniform> uniforms;
StringName first_texture;

Map<StringName,RID> default_textures;

SelfList<Shader> dirty_list;

Expand Down Expand Up @@ -1255,6 +1256,8 @@ class RasterizerGLES2 : public Rasterizer {

virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const;

virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture);
virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const;

/* COMMON MATERIAL API */

Expand Down
8 changes: 4 additions & 4 deletions platform/x11/os_x11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1458,14 +1458,14 @@ OS_X11::OS_X11() {
AudioDriverManagerSW::add_driver(&driver_rtaudio);
#endif

#ifdef ALSA_ENABLED
AudioDriverManagerSW::add_driver(&driver_alsa);
#endif

#ifdef PULSEAUDIO_ENABLED
AudioDriverManagerSW::add_driver(&driver_pulseaudio);
#endif

#ifdef ALSA_ENABLED
AudioDriverManagerSW::add_driver(&driver_alsa);
#endif

minimized = false;
xim_style=NULL;
mouse_mode=MOUSE_MODE_VISIBLE;
Expand Down
4 changes: 2 additions & 2 deletions scene/gui/box_container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ void BoxContainer::_resort() {

Size2i new_size=get_size();;

int sep=get_constant("separation",vertical?"VBoxContainer":"HBoxContainer");
int sep=get_constant("separation");//,vertical?"VBoxContainer":"HBoxContainer");

bool first=true;
int children_count=0;
Expand Down Expand Up @@ -202,7 +202,7 @@ Size2 BoxContainer::get_minimum_size() const {
/* Calculate MINIMUM SIZE */

Size2i minimum;
int sep=get_constant("separation",vertical?"VBoxContainer":"HBoxContainer");
int sep=get_constant("separation");//,vertical?"VBoxContainer":"HBoxContainer");

bool first=true;

Expand Down
Loading

0 comments on commit f7f197c

Please sign in to comment.