Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/gpu/shaders/sculpt_paint/sculpt_paint_tile_lib.glsl')
-rw-r--r--source/blender/gpu/shaders/sculpt_paint/sculpt_paint_tile_lib.glsl26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/sculpt_paint/sculpt_paint_tile_lib.glsl b/source/blender/gpu/shaders/sculpt_paint/sculpt_paint_tile_lib.glsl
new file mode 100644
index 00000000000..1896535ec20
--- /dev/null
+++ b/source/blender/gpu/shaders/sculpt_paint/sculpt_paint_tile_lib.glsl
@@ -0,0 +1,26 @@
+ivec2 paint_tile_coord_to_sub_tile_id(ivec2 coord)
+{
+ return coord / ivec2(SUB_TILE_SIZE);
+}
+
+bool paint_tile_search(int tile_number, ivec2 coord, out PaintTileData r_paint_tile)
+{
+ int2 sub_tile_id = paint_tile_coord_to_sub_tile_id(coord);
+ for (int i = 0; i < paint_tile_buf_len; i++) {
+ if (paint_tile_buf[i].tile_number == tile_number &&
+ paint_tile_buf[i].sub_tile_id == sub_tile_id) {
+ r_paint_tile = paint_tile_buf[i];
+ return true;
+ }
+ }
+ return false;
+}
+
+ivec3 paint_tile_coord_from_udim(int tile_number, ivec2 coord, out PaintTileData r_paint_tile)
+{
+ if (paint_tile_search(tile_number, coord, r_paint_tile)) {
+ return ivec3(coord - r_paint_tile.sub_tile_id * ivec2(SUB_TILE_SIZE), r_paint_tile.layer_id);
+ }
+
+ return ivec3(0);
+}