vec2tex_uv=(vec4(vertex,0.0,1.0)*mat4(light_array.data[light_base].matrix[0],light_array.data[light_base].matrix[1],vec4(0.0,0.0,1.0,0.0),vec4(0.0,0.0,0.0,1.0))).xy;//multiply inverse given its transposed. Optimizer removes useless operations.
vec2tex_uv=(vec4(vertex,0.0,1.0)*mat4(light_array.data[light_base].matrix[0],light_array.data[light_base].matrix[1],vec4(0.0,0.0,1.0,0.0),vec4(0.0,0.0,0.0,1.0))).xy;//multiply inverse given its transposed. Optimizer removes useless operations.
virtualErrortexture_update(RIDp_texture,uint32_tp_layer,constPoolVector<uint8_t>&p_data,boolp_sync_with_draw=false)=0;//this function can be used from any thread and it takes effect at the begining of the frame, unless sync with draw is used, which is used to mix updates with draw calls
virtualErrortexture_update(RIDp_texture,uint32_tp_layer,constPoolVector<uint8_t>&p_data,boolp_sync_with_draw=false)=0;//this function can be used from any thread and it takes effect at the begining of the frame, unless sync with draw is used, which is used to mix updates with draw calls
virtualPoolVector<uint8_t>texture_get_data(RIDp_texture,uint32_tp_layer)=0;// CPU textures will return immediately, while GPU textures will most likely force a flush
virtualPoolVector<uint8_t>texture_get_data(RIDp_texture,uint32_tp_layer)=0;// CPU textures will return immediately, while GPU textures will most likely force a flush
...
@@ -373,6 +376,7 @@ public:
...
@@ -373,6 +376,7 @@ public:
// This ID is warranted to be unique for the same formats, does not need to be freed
// This ID is warranted to be unique for the same formats, does not need to be freed