This reverts to following commits: * rB5cad004d716da02f511bd34983ac7da820308676 * rB97e3a2d935ba9b21b127eda7ca104d4bcf4e48bd * rBf60b95b5320f8d6abe6a629fe8fc4f1b94d0d91c * rB0bd3cad04edf4bf9b9d3b1353f955534aa5e6740 * rBf72cc47d8edf849af98e196f721022bacf86a5e7 * rB3f7014ecc9d523997062eadd62888af5fc70a2b6 * rB0578921063fbb081239439062215f2538a31af4b * rBc20098e6ec6adee874a12e510aa4a56d89f92838 * rBd5efda72f501ad95679d7ac554086a1fb18c1ac0 The original move to c++ that the other commits depended upon had some issues that should be fixed before committing it again. The issues were reported in T93797, T93809 and T93798. We should also find a better rule for not using c-style casts going forward, although that wouldn't have been reason enough to revert the commits. Introducing something like a `MEM_new<T>` and `MEM_delete<T>` function might help with the the most common case of casting the return type of `MEM_malloc`. Going forward, I recommend first committing the changes that don't require converting files to c++. Then convert the shading node files in smaller chunks. Especially don't mix fairly low risk changes like moving some simple nodes, with higher risk changes.
122 lines
4.0 KiB
C++
122 lines
4.0 KiB
C++
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2006 by Blender Foundation
|
|
* All rights reserved.
|
|
*/
|
|
/** \file
|
|
* \ingroup render
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
|
/* this include is for non-render pipeline exports (still old cruft here) */
|
|
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
|
|
|
/* called by meshtools */
|
|
struct Depsgraph;
|
|
struct ImagePool;
|
|
struct MTex;
|
|
struct Tex;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* texture_procedural.c */
|
|
bool RE_texture_evaluate(const struct MTex *mtex,
|
|
const float vec[3],
|
|
const int thread,
|
|
struct ImagePool *pool,
|
|
const bool skip_load_image,
|
|
const bool texnode_preview,
|
|
/* Return arguments. */
|
|
float *r_intensity,
|
|
float r_rgba[4]) ATTR_NONNULL(1, 2, 7, 8);
|
|
|
|
void texture_rgb_blend(
|
|
float in[3], const float tex[3], const float out[3], float fact, float facg, int blendtype);
|
|
float texture_value_blend(float tex, float out, float fact, float facg, int blendtype);
|
|
|
|
void RE_texture_rng_init(void);
|
|
void RE_texture_rng_exit(void);
|
|
|
|
/* texture_image.c */
|
|
void ibuf_sample(struct ImBuf *ibuf, float fx, float fy, float dx, float dy, float result[4]);
|
|
|
|
/* texture_pointdensity.c */
|
|
struct PointDensity;
|
|
|
|
void RE_point_density_cache(struct Depsgraph *depsgraph, struct PointDensity *pd);
|
|
|
|
void RE_point_density_minmax(struct Depsgraph *depsgraph,
|
|
struct PointDensity *pd,
|
|
float r_min[3],
|
|
float r_max[3]);
|
|
|
|
void RE_point_density_sample(struct Depsgraph *depsgraph,
|
|
struct PointDensity *pd,
|
|
const int resolution,
|
|
float *values);
|
|
|
|
void RE_point_density_free(struct PointDensity *pd);
|
|
|
|
void RE_point_density_fix_linking(void);
|
|
|
|
/* texture_procedural.c */
|
|
|
|
/* Texture evaluation result.
|
|
* NOTE: tr tg tb ta has to remain in this order for array access. */
|
|
typedef struct TexResult {
|
|
float tin, tr, tg, tb, ta;
|
|
int talpha;
|
|
float *nor;
|
|
} TexResult;
|
|
|
|
/* This one uses nodes. */
|
|
int multitex_ext(struct Tex *tex,
|
|
float texvec[3],
|
|
float dxt[3],
|
|
float dyt[3],
|
|
int osatex,
|
|
struct TexResult *texres,
|
|
const short thread,
|
|
struct ImagePool *pool,
|
|
bool scene_color_manage,
|
|
const bool skip_load_image);
|
|
/* Nodes disabled. */
|
|
int multitex_ext_safe(struct Tex *tex,
|
|
const float texvec[3],
|
|
struct TexResult *texres,
|
|
struct ImagePool *pool,
|
|
bool scene_color_manage,
|
|
const bool skip_load_image);
|
|
/* Only for internal node usage. */
|
|
int multitex_nodes(struct Tex *tex,
|
|
const float texvec[3],
|
|
float dxt[3],
|
|
float dyt[3],
|
|
int osatex,
|
|
struct TexResult *texres,
|
|
const short thread,
|
|
short which_output,
|
|
struct MTex *mtex,
|
|
struct ImagePool *pool);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|