/* * 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. */ /** \file * \ingroup DNA */ #pragma once #include "DNA_defs.h" #include "DNA_listBase.h" #ifdef __cplusplus extern "C" { #endif struct DRWShadingGroup; /* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE! * (ONLY ADD NEW ITEMS AT THE END) */ typedef enum ShaderFxType { eShaderFxType_None = 0, eShaderFxType_Blur = 1, eShaderFxType_Flip = 2, eShaderFxType_Light_deprecated = 3, /* DEPRECATED (replaced by scene lights) */ eShaderFxType_Pixel = 4, eShaderFxType_Swirl = 5, eShaderFxType_Wave = 6, eShaderFxType_Rim = 7, eShaderFxType_Colorize = 8, eShaderFxType_Shadow = 9, eShaderFxType_Glow = 10, /* Keep last. */ NUM_SHADER_FX_TYPES, } ShaderFxType; typedef enum ShaderFxMode { eShaderFxMode_Realtime = (1 << 0), eShaderFxMode_Render = (1 << 1), eShaderFxMode_Editmode = (1 << 2), #ifdef DNA_DEPRECATED_ALLOW eShaderFxMode_Expanded_DEPRECATED = (1 << 3), #endif } ShaderFxMode; typedef enum { /* This fx has been inserted in local override, and hence can be fully edited. */ eShaderFxFlag_OverrideLibrary_Local = (1 << 0), } ShaderFxFlag; typedef struct ShaderFxData { struct ShaderFxData *next, *prev; int type, mode; char _pad0[4]; short flag; /* An "expand" bit for each of the constraint's (sub)panels (uiPanelDataExpansion). */ short ui_expand_flag; /** MAX_NAME. */ char name[64]; char *error; } ShaderFxData; /** Runtime temp data. */ typedef struct ShaderFxData_Runtime { float loc[3]; char _pad[4]; struct DRWShadingGroup *fx_sh; struct DRWShadingGroup *fx_sh_b; struct DRWShadingGroup *fx_sh_c; } ShaderFxData_Runtime; typedef struct BlurShaderFxData { ShaderFxData shaderfx; float radius[2]; /** Flags. */ int flag; /** Number of samples. */ int samples; /** Rotation of blur effect. */ float rotation; char _pad[4]; ShaderFxData_Runtime runtime; } BlurShaderFxData; typedef enum eBlurShaderFx_Flag { FX_BLUR_DOF_MODE = (1 << 0), } eBlurShaderFx_Flag; typedef struct ColorizeShaderFxData { ShaderFxData shaderfx; int mode; float low_color[4]; float high_color[4]; float factor; /** Flags. */ int flag; char _pad[4]; ShaderFxData_Runtime runtime; } ColorizeShaderFxData; typedef enum ColorizeShaderFxModes { eShaderFxColorizeMode_GrayScale = 0, eShaderFxColorizeMode_Sepia = 1, eShaderFxColorizeMode_Duotone = 2, eShaderFxColorizeMode_Custom = 3, eShaderFxColorizeMode_Transparent = 4, } ColorizeShaderFxModes; typedef struct FlipShaderFxData { ShaderFxData shaderfx; /** Flags. */ int flag; /** Internal, not visible in rna. */ int flipmode; ShaderFxData_Runtime runtime; } FlipShaderFxData; typedef enum eFlipShaderFx_Flag { FX_FLIP_HORIZONTAL = (1 << 0), FX_FLIP_VERTICAL = (1 << 1), } eFlipShaderFx_Flag; typedef struct GlowShaderFxData { ShaderFxData shaderfx; float glow_color[4]; float select_color[3]; float threshold; /** Flags. */ int flag; int mode; float blur[2]; int samples; /** Rotation of effect. */ float rotation; /** Blend modes. */ int blend_mode; char _pad[4]; ShaderFxData_Runtime runtime; } GlowShaderFxData; typedef enum GlowShaderFxModes { eShaderFxGlowMode_Luminance = 0, eShaderFxGlowMode_Color = 1, } GlowShaderFxModes; typedef enum eGlowShaderFx_Flag { FX_GLOW_USE_ALPHA = (1 << 0), } eGlowShaderFx_Flag; typedef struct PixelShaderFxData { ShaderFxData shaderfx; /** Last element used for shader only. */ int size[3]; /** Flags. */ int flag; float rgba[4]; ShaderFxData_Runtime runtime; } PixelShaderFxData; typedef enum ePixelShaderFx_Flag { FX_PIXEL_FILTER_NEAREST = (1 << 0), } ePixelShaderFx_Flag; typedef struct RimShaderFxData { ShaderFxData shaderfx; int offset[2]; /** Flags. */ int flag; float rim_rgb[3]; float mask_rgb[3]; int mode; int blur[2]; int samples; char _pad[4]; ShaderFxData_Runtime runtime; } RimShaderFxData; typedef enum RimShaderFxModes { eShaderFxRimMode_Normal = 0, eShaderFxRimMode_Overlay = 1, eShaderFxRimMode_Add = 2, eShaderFxRimMode_Subtract = 3, eShaderFxRimMode_Multiply = 4, eShaderFxRimMode_Divide = 5, } RimShaderFxModes; typedef struct ShadowShaderFxData { ShaderFxData shaderfx; struct Object *object; int offset[2]; /** Flags. */ int flag; float shadow_rgba[4]; float amplitude; float period; float phase; int orientation; float scale[2]; float rotation; int blur[2]; int samples; char _pad[4]; ShaderFxData_Runtime runtime; } ShadowShaderFxData; typedef enum eShadowShaderFx_Flag { FX_SHADOW_USE_OBJECT = (1 << 0), FX_SHADOW_USE_WAVE = (1 << 1), } eShadowShaderFx_Flag; typedef struct SwirlShaderFxData { ShaderFxData shaderfx; struct Object *object; /** Flags. */ int flag; int radius; float angle; /** Not visible in rna. */ int transparent; ShaderFxData_Runtime runtime; } SwirlShaderFxData; typedef enum eSwirlShaderFx_Flag { FX_SWIRL_MAKE_TRANSPARENT = (1 << 0), } eSwirlShaderFx_Flag; typedef struct WaveShaderFxData { ShaderFxData shaderfx; float amplitude; float period; float phase; int orientation; /** Flags. */ int flag; char _pad[4]; ShaderFxData_Runtime runtime; } WaveShaderFxData; #ifdef __cplusplus } #endif