Fix T73566: Mesh analysis, error showing intersecting faces
[blender.git] / source / blender / render / extern / include / RE_shader_ext.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2006 by Blender Foundation
17  * All rights reserved.
18  */
19 /** \file
20  * \ingroup render
21  */
22
23 #ifndef __RE_SHADER_EXT_H__
24 #define __RE_SHADER_EXT_H__
25
26 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
27 /* this include is for texture exports                        */
28 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
29
30 /* localized texture result data */
31 /* note; tr tg tb ta has to remain in this order */
32 typedef struct TexResult {
33   float tin, tr, tg, tb, ta;
34   int talpha;
35   float *nor;
36 } TexResult;
37
38 typedef struct BakeImBufuserData {
39   float *displacement_buffer;
40   char *mask_buffer;
41 } BakeImBufuserData;
42
43 /* node shaders... */
44 struct ImagePool;
45 struct MTex;
46 struct Tex;
47
48 /* this one uses nodes */
49 int multitex_ext(struct Tex *tex,
50                  float texvec[3],
51                  float dxt[3],
52                  float dyt[3],
53                  int osatex,
54                  struct TexResult *texres,
55                  const short thread,
56                  struct ImagePool *pool,
57                  bool scene_color_manage,
58                  const bool skip_load_image);
59 /* nodes disabled */
60 int multitex_ext_safe(struct Tex *tex,
61                       float texvec[3],
62                       struct TexResult *texres,
63                       struct ImagePool *pool,
64                       bool scene_color_manage,
65                       const bool skip_load_image);
66 /* only for internal node usage */
67 int multitex_nodes(struct Tex *tex,
68                    float texvec[3],
69                    float dxt[3],
70                    float dyt[3],
71                    int osatex,
72                    struct TexResult *texres,
73                    const short thread,
74                    short which_output,
75                    struct MTex *mtex,
76                    struct ImagePool *pool);
77
78 #endif /* __RE_SHADER_EXT_H__ */