Home

Resume

Blog

Teikitu


/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
/*  »Project«   Teikitu Gaming System (TgS) (∂)
    »File«      TgS Effect - Internal - Data.h
    »Author«    Andrew Aye (EMail: mailto:andrew.aye@gmail.com, Web: http://www.andrewaye.com)
    »Version«   4.51 / »GUID« A9981407-3EC9-42AF-8B6F-8BE6DD919615                                                                                                        */
/*   -------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
/*  Copyright: © 2002-2017, Andrew Aye.  All Rights Reserved.
    This software is free for non-commercial use.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
      following conditions are met:
        Redistribution of source code must retain this copyright notice, this list of conditions and the following disclaimers.
        Redistribution in binary form must reproduce this copyright notice, this list of conditions and the following disclaimers in the documentation and other materials
          provided with the distribution.
    The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
    The intellectual property rights of the algorithms used reside with Andrew Aye.
    You may not use this software, in whole or in part, in support of any commercial product without the express written consent of the author.
    There is no warranty or other guarantee of fitness of this software for any purpose. It is provided solely "as is".                                                   */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
#if !defined(TGS_EFFECT_INTERNAL_DATA_H)
#define TGS_EFFECT_INTERNAL_DATA_H
#pragma once


/* == Effects =========================================================================================================================================================== */

/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Profile Markers                                                                                                                                                       */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

PROFILE_EXTERN( FX_COMMANDS__CLIENT );
PROFILE_ARRAY_EXTERN( ETgFX_UPDATE__MAX + 1, FX_UPDATE__UPDATE );
PROFILE_EXTERN( FX_RENDER_PATCH_CONTEXT );
PROFILE_EXTERN( FX_RENDER_PROCESS_COMMANDS );
PROFILE_EXTERN( FX_RENDER_GENERATE );


/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Private Data                                                                                                                                                          */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

                                            /* Configuration Values */
TgEXTN TgSINT32                             g_iFX_Quality_Setting;
TgEXTN TgCN_VAR_ID                          g_tiFX_CN__Quality_Setting;
TgEXTN TgFLOAT32                            g_fFX_Alpha_Threshold;
TgEXTN TgCN_VAR_ID                          g_tiFX_CN__Alpha_Threshold;
TgEXTN TgSINT32                             g_iFX_Decal_Memory_Max;
TgEXTN TgCN_VAR_ID                          g_tiFX_CN__Decal_Memory_Max;
TgEXTN TgFLOAT32                            g_fFX_Decal_Normal_Threshold;
TgEXTN TgCN_VAR_ID                          g_tiFX_CN__Decal_Normal_Threshold;
TgEXTN TgSINT32                             g_iFX_Emitter_Memory_Max;
TgEXTN TgCN_VAR_ID                          g_tiFX_CN__Emitter_Memory_Max;

                                            /* Synchronization Fences */
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__UPDATE; /*« Jobs are defined in the effect data files */
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__TO_CLIENT__COMMAND_QUEUE_FULL;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__CLIENT_TO_UPDATE__PROCESS_COMMAND_STREAM;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__CLIENT_TO_UPDATE__COMMAND_QUEUE_FULL;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__SCENE_CULLING;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__SCENE_BOUNDING_BOX;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__SCENE_FINISH;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__RENDER_PROCESS_HEADERS;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__RENDER_ALLOCATE;
TgEXTN TgATOMIC_SINT32                      g_xiFX_Fence__RENDER_GENERATE;

                                            /* Effect System Constants */
TgEXTN P_STg2_FX_Descriptor                 g_apsFX_Descriptor[ETgFX__EFFECT_MAX];
TgEXTN C_TgUINT32                           g_uiFX_Command_Size[ETgFX_COMMAND__MAX + 1];

                                            /* Render */
TgEXTN STg2_RN_Particle_Header              g_asParticle_Header[KTgFX_MAX_RENDER_INSTANCE * ETgFX_MAX_HEADER_INDEX];
TgEXTN TgUINT32                             g_uiParticle_Header_Index;

                                            /* Shared Effect Object / State */
TgEXTN TgSINT32                             g_aiFX__Client__Shared_State[KTgFX_MAX_EFFECT_INSTANCE];
TgEXTN STg2_UTM_AM_ST_ISO                   g_sFX_Effect__Client__Effect;
TgEXTN STg2_FX__Client                      g_asFX_Effect[KTgFX_MAX_EFFECT_INSTANCE];

TgEXTN TgFX_CLIENT_INST_ID                  g_atiFX__Client__Update__Head[ETgFX_UPDATE__MAX];
TgEXTN TgSINT32                             g_niFX__Client__Update__Active;

                                            /* Default Resources */
TgEXTN TgFX_EFFECT_ID                       g_tiFX_File_Default;
TgEXTN TgFX_EFFECT_ID                       g_tiFX_File_Error;

                                            /* Cache System */
TgEXTN TgUINTXX                             g_auiFX_KN_File__Effect_Hash[ETgFX_DATA__EFFECT_MAX];
TgEXTN STg2_FX_Data__Effect                 g_asFX_KN_File__Effect[ETgFX_DATA__EFFECT_MAX];
TgEXTN STg2_FX_Data__Data                   g_asFX_Cache__Effect[ETgFX_DATA__EFFECT_MAX];

                                            /* Decal Memory */
TgEXTN TgATOMIC_SINT32                      g_xiFX__Decal__Memory_Current;

                                            /* Emitter Memory */
TgEXTN TgATOMIC_SINT32                      g_xiFX__Emitter__Memory_Current;


#if TgS_DEBUG_EFFECT
                                            /* Visualization */
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__OSD__Profile_Enable;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__OSD__Profile_Sort;

TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Draw_BA;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Draw_Emitter;

                                            /* Execution Debug / Troubleshooting Update */
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Module;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Update;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Render;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Render_Buffer;

                                            /* Execution Debug / Troubleshooting Rendering */
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Cull_On_Spawn;
TgEXTN TgCN_VAR_ID                          g_tiFX_Debug__Disable_Cull_On_Render;

                                            /* Cache File System */
TgEXTN TgCHAR                               g_aszFX_Cache__EFfect_Name[ETgFX_DATA__EFFECT_MAX][32];

/*# TgS_DEBUG_EFFECT */
#endif


/* ====================================================================================================================================================================== */
#endif