Code cleanup: de-duplicate implementation of get_texture_value
authorSergey Sharybin <sergey.vfx@gmail.com>
Sun, 20 Oct 2013 13:01:07 +0000 (13:01 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Sun, 20 Oct 2013 13:01:07 +0000 (13:01 +0000)
Expect to be no functional changes :)

source/blender/blenkernel/BKE_texture.h
source/blender/blenkernel/intern/smoke.c
source/blender/blenkernel/intern/texture.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_util.c
source/blender/modifiers/intern/MOD_util.h
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/modifiers/intern/MOD_weightvg_util.c

index 2a00dee2a3f6dad207d2fea6320d2487ab0e9af3..e9e351f8f3727a52b4b41c14213345fa8f54b0d2 100644 (file)
@@ -52,6 +52,7 @@ struct ParticleSettings;
 struct PointDensity;
 struct Tex;
 struct TexMapping;
+struct TexResult;
 struct VoxelData;
 struct World;
 
@@ -129,6 +130,8 @@ struct OceanTex *BKE_copy_oceantex(struct OceanTex *ot);
        
 bool    BKE_texture_dependsOnTime(const struct Tex *texture);
 
+void BKE_texture_get_value(struct Scene *scene, struct Tex *texture, float *tex_co, struct TexResult *texres, bool use_color_management);
+
 #ifdef __cplusplus
 }
 #endif
index fb0e22abf2ae17e9e453f1b1ae03e04d986e36a7..a40bfd48c399074329bcde03319e102a23dbaef0 100644 (file)
@@ -84,6 +84,7 @@
 #include "BKE_pointcache.h"
 #include "BKE_scene.h"
 #include "BKE_smoke.h"
+#include "BKE_texture.h"
 
 #include "RE_shader_ext.h"
 
@@ -1418,27 +1419,6 @@ static void emit_from_particles(Object *flow_ob, SmokeDomainSettings *sds, Smoke
        }
 }
 
-/* TODO(sergey): de-duplicate with get_texture_value from modifier utils */
-/* NOTE: Skips color management, because result is only used for value now, not for color. */
-static void get_texture_value(Tex *texture, float tex_co[3], TexResult *texres)
-{
-       int result_type;
-
-       /* no node textures for now */
-       result_type = multitex_ext_safe(texture, tex_co, texres, NULL, false);
-
-       /* if the texture gave an RGB value, we assume it didn't give a valid
-        * intensity, since this is in the context of modifiers don't use perceptual color conversion.
-        * if the texture didn't give an RGB value, copy the intensity across
-        */
-       if (result_type & TEX_RGB) {
-               texres->tin = (1.0f / 3.0f) * (texres->tr + texres->tg + texres->tb);
-       }
-       else {
-               copy_v3_fl(&texres->tr, texres->tin);
-       }
-}
-
 static void sample_derivedmesh(SmokeFlowSettings *sfs, MVert *mvert, MTFace *tface, MFace *mface, float *influence_map, float *velocity_map, int index, int base_res[3], float flow_center[3], BVHTreeFromMesh *treeData, float ray_start[3],
                                                                float *vert_vel, int has_velocity, int defgrp_index, MDeformVert *dvert, float x, float y, float z)
 {
@@ -1550,7 +1530,7 @@ static void sample_derivedmesh(SmokeFlowSettings *sfs, MVert *mvert, MTFace *tfa
                                tex_co[2] = sfs->texture_offset;
                        }
                        texres.nor = NULL;
-                       get_texture_value(sfs->noise_texture, tex_co, &texres);
+                       BKE_texture_get_value(NULL, sfs->noise_texture, tex_co, &texres, false);
                        sample_str *= texres.tin;
                }
        }
index 22b0fe7bc2446c04e3892fe4f8a1f1412b18ed30..ccbccac85cf8c3038208736d05df3e884068479c 100644 (file)
@@ -68,6 +68,9 @@
 #include "BKE_node.h"
 #include "BKE_animsys.h"
 #include "BKE_colortools.h"
+#include "BKE_scene.h"
+
+#include "RE_shader_ext.h"
 
 /* ****************** Mapping ******************* */
 
@@ -1436,3 +1439,27 @@ bool BKE_texture_dependsOnTime(const struct Tex *texture)
 }
 
 /* ------------------------------------------------------------------------- */
+
+void BKE_texture_get_value(Scene *scene, Tex *texture, float *tex_co, TexResult *texres, bool use_color_management)
+{
+       int result_type;
+       bool do_color_manage = false;
+
+       if (scene && use_color_management) {
+               do_color_manage = BKE_scene_check_color_management_enabled(scene);
+       }
+
+       /* no node textures for now */
+       result_type = multitex_ext_safe(texture, tex_co, texres, NULL, do_color_manage);
+
+       /* if the texture gave an RGB value, we assume it didn't give a valid
+        * intensity, since this is in the context of modifiers don't use perceptual color conversion.
+        * if the texture didn't give an RGB value, copy the intensity across
+        */
+       if (result_type & TEX_RGB) {
+               texres->tin = (1.0f / 3.0f) * (texres->tr + texres->tg + texres->tb);
+       }
+       else {
+               copy_v3_fl(&texres->tr, texres->tin);
+       }
+}
index 25254c7a30e7f8d82f352ef3d3def987e03bcb58..61f5495bee844470e917da0a5e4438d6800f3019 100644 (file)
@@ -219,7 +219,7 @@ static void displaceModifier_do(
 
                if (dmd->texture) {
                        texres.nor = NULL;
-                       get_texture_value(dmd->modifier.scene, dmd->texture, tex_co[i], &texres, false);
+                       BKE_texture_get_value(dmd->modifier.scene, dmd->texture, tex_co[i], &texres, false);
                        delta = texres.tin - dmd->midlevel;
                }
                else {
index 230931a1a337ed225d7495fb833dcce78f1ef81c..e9fabcd1fd04eb9748abc2a94d8528275cb91b2b 100644 (file)
@@ -70,30 +70,6 @@ void modifier_init_texture(Scene *scene, Tex *tex)
                BKE_image_user_frame_calc(&tex->iuser, scene->r.cfra, 0);
 }
 
-void get_texture_value(Scene *scene, Tex *texture, float *tex_co, TexResult *texres, bool use_color_management)
-{
-       int result_type;
-       bool do_color_manage = false;
-
-       if (use_color_management) {
-               do_color_manage = BKE_scene_check_color_management_enabled(scene);
-       }
-
-       /* no node textures for now */
-       result_type = multitex_ext_safe(texture, tex_co, texres, NULL, do_color_manage);
-
-       /* if the texture gave an RGB value, we assume it didn't give a valid
-        * intensity, since this is in the context of modifiers don't use perceptual color conversion.
-        * if the texture didn't give an RGB value, copy the intensity across
-        */
-       if (result_type & TEX_RGB) {
-               texres->tin = (1.0f / 3.0f) * (texres->tr + texres->tg + texres->tb);
-       }
-       else {
-               copy_v3_fl(&texres->tr, texres->tin);
-       }
-}
-
 void get_texture_coords(MappingInfoModifierData *dmd, Object *ob,
                         DerivedMesh *dm,
                         float (*co)[3], float (*texco)[3],
index 25632eb5b80e903dd04217db5b08fcdf04122bcc..b4dcdc1721a2d6cd3238ded5edcae3ae6f7169f7 100644 (file)
@@ -41,7 +41,6 @@ struct Tex;
 struct TexResult;
 
 void modifier_init_texture(struct Scene *scene, struct Tex *texture);
-void get_texture_value(struct Scene *scene, struct Tex *texture, float *tex_co, struct TexResult *texres, bool do_color_manage);
 void get_texture_coords(struct MappingInfoModifierData *dmd, struct Object *ob, struct DerivedMesh *dm,
                         float (*co)[3], float (*texco)[3], int numVerts);
 void modifier_vgroup_cache(struct ModifierData *md, float (*vertexCos)[3]);
index 4fac201377a1a7d253cc308d81c438497657ceb9..83b05ae708a1cc28da8f03ed025866afb7ce0bfc 100644 (file)
@@ -282,7 +282,7 @@ static void warpModifier_do(WarpModifierData *wmd, Object *ob,
                        if (tex_co) {
                                TexResult texres;
                                texres.nor = NULL;
-                               get_texture_value(wmd->modifier.scene, wmd->texture, tex_co[i], &texres, false);
+                               BKE_texture_get_value(wmd->modifier.scene, wmd->texture, tex_co[i], &texres, false);
                                fac *= texres.tin;
                        }
 
index 43dc1ba4eb96a3aa0c7613fb4e300539d76729b9..168907e293cc4dc787548f4f155128b94d9f0323 100644 (file)
@@ -48,6 +48,7 @@
 #include "BKE_library.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"
+#include "BKE_texture.h"
 
 #include "depsgraph_private.h"
 
@@ -306,7 +307,7 @@ static void waveModifier_do(WaveModifierData *md,
                                if (wmd->texture) {
                                        TexResult texres;
                                        texres.nor = NULL;
-                                       get_texture_value(wmd->modifier.scene, wmd->texture, tex_co[i], &texres, false);
+                                       BKE_texture_get_value(wmd->modifier.scene, wmd->texture, tex_co[i], &texres, false);
                                        amplit *= texres.tin;
                                }
 
index e2267addd53001ee591b0dd0aeabfbf1ed2cf198..5c3b87bd92cdfd919e0c8d154f981e2a775c1409 100644 (file)
@@ -164,7 +164,7 @@ void weightvg_do_mask(int num, const int *indices, float *org_w, const float *ne
                        do_color_manage = tex_use_channel != MOD_WVG_MASK_TEX_USE_INT;
 
                        texres.nor = NULL;
-                       get_texture_value(scene, texture, tex_co[idx], &texres, do_color_manage);
+                       BKE_texture_get_value(scene, texture, tex_co[idx], &texres, do_color_manage);
                        /* Get the good channel value... */
                        switch (tex_use_channel) {
                                case MOD_WVG_MASK_TEX_USE_INT: