diff options
author | Thomas Herzog <karroffel@users.noreply.github.com> | 2017-06-19 23:46:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-19 23:46:54 +0200 |
commit | bfac7c476d674573bcc94f422d8fd74c4aee2a6b (patch) | |
tree | 6f2b2075608b187aa28f21d1a5c11a6533ee284a /servers | |
parent | b6b225f4c5c3a9b91cc9ae8e9e283b0dd31a54cd (diff) | |
parent | fd5b92983127d790e3422a1853992a16102e0a05 (diff) |
Merge pull request #8629 from hikari-no-yume/Sprite3D_double_sided_flag_master
Add double-sided flag to SpriteBase3D [master]
Diffstat (limited to 'servers')
-rw-r--r-- | servers/visual_server.cpp | 8 | ||||
-rw-r--r-- | servers/visual_server.h | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index 6c57275b3a..c3ae58cf4f 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -137,7 +137,7 @@ void VisualServer::_free_internal_rids() { if (test_material.is_valid()) free(test_material); - for (int i = 0; i < 16; i++) { + for (int i = 0; i < 32; i++) { if (material_2d[i].is_valid()) free(material_2d[i]); } @@ -284,7 +284,7 @@ RID VisualServer::make_sphere_mesh(int p_lats, int p_lons, float p_radius) { return mesh; } -RID VisualServer::material_2d_get(bool p_shaded, bool p_transparent, bool p_cut_alpha, bool p_opaque_prepass) { +RID VisualServer::material_2d_get(bool p_shaded, bool p_transparent, bool p_double_sided, bool p_cut_alpha, bool p_opaque_prepass) { int version = 0; if (p_shaded) @@ -295,6 +295,8 @@ RID VisualServer::material_2d_get(bool p_shaded, bool p_transparent, bool p_cut_ version |= 4; if (p_opaque_prepass) version |= 8; + if (p_double_sided) + version |= 16; if (material_2d[version].is_valid()) return material_2d[version]; @@ -305,7 +307,7 @@ RID VisualServer::material_2d_get(bool p_shaded, bool p_transparent, bool p_cut_ fixed_material_set_flag(material_2d[version],FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY,true); fixed_material_set_flag(material_2d[version],FIXED_MATERIAL_FLAG_DISCARD_ALPHA,p_cut_alpha); material_set_flag(material_2d[version],MATERIAL_FLAG_UNSHADED,!p_shaded); - material_set_flag(material_2d[version],MATERIAL_FLAG_DOUBLE_SIDED,true); + material_set_flag(material_2d[version], MATERIAL_FLAG_DOUBLE_SIDED, p_double_sided); material_set_depth_draw_mode(material_2d[version],p_opaque_prepass?MATERIAL_DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA:MATERIAL_DEPTH_DRAW_OPAQUE_ONLY); fixed_material_set_texture(material_2d[version],FIXED_MATERIAL_PARAM_DIFFUSE,get_white_texture()); //material cut alpha?*/ diff --git a/servers/visual_server.h b/servers/visual_server.h index a27b32f54f..589fa80084 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -60,7 +60,7 @@ protected: RID test_texture; RID white_texture; RID test_material; - RID material_2d[16]; + RID material_2d[32]; Error _surface_set_data(Array p_arrays, uint32_t p_format, uint32_t *p_offsets, uint32_t p_stride, PoolVector<uint8_t> &r_vertex_array, int p_vertex_array_len, PoolVector<uint8_t> &r_index_array, int p_index_array_len, Rect3 &r_aabb, Vector<Rect3> r_bone_aabb); @@ -909,7 +909,7 @@ public: /* Materials for 2D on 3D */ - RID material_2d_get(bool p_shaded, bool p_transparent, bool p_cut_alpha, bool p_opaque_prepass); + RID material_2d_get(bool p_shaded, bool p_transparent, bool p_double_sided, bool p_cut_alpha, bool p_opaque_prepass); /* TESTING */ |