mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			626 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
		
		
			
		
	
	
			626 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
|   | //////////////////////////////////////////////////////////// | ||
|  | // BASIC MACROS FOR RESHADE 4                             // | ||
|  | // AUTHOR: TREYM                                          // | ||
|  | //////////////////////////////////////////////////////////// | ||
|  | // Modified by dddfault                                   // | ||
|  | //                                                        // | ||
|  | // Changelogs :                                           // | ||
|  | //   Added Sampler texture boundary resolver option       // | ||
|  | //   Added float2 parameters option                       // | ||
|  | //////////////////////////////////////////////////////////// | ||
|  | // Macros Guide:                                          // | ||
|  | //////////////////////////////////////////////////////////// | ||
|  | 
 | ||
|  | /*  ////////////////////////////////////////////////////  * | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |   Usage of these macros is very simple once you understand | ||
|  |  the syntax and variable names. Let's start with a Simple | ||
|  |  integer slider. To begin, type: | ||
|  | 
 | ||
|  |     UI_INT | ||
|  | 
 | ||
|  |   Next we need to add _S to indicate that this is a | ||
|  |  "slider" widget. Follow the syntax below: | ||
|  | 
 | ||
|  |     UI_INT_S(INT_NAME, "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |   Using just a single line of code, we have created a UI | ||
|  |  tweakable integer named INT_NAME with a minimum value of | ||
|  |  0, a maximum value of 100, and a default value of 50. | ||
|  | 
 | ||
|  |   Next, let's create that same widget, but within a UI | ||
|  |  category. This time, we'll type: | ||
|  | 
 | ||
|  |     CAT_INT_S(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |   As you can see, the syntax follows the same pattern but | ||
|  |  with a new input for "Category" | ||
|  | 
 | ||
|  |   Below you will find a useful list of examples to get you | ||
|  |  started. I hope you find these useful and they help your | ||
|  |  workflow. Happy coding! | ||
|  | 
 | ||
|  |  - TreyM | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     Widget Types | ||
|  |         Input   = _I | ||
|  |         Slider  = _S | ||
|  |         Drag    = _D | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     BOOLEAN Macro | ||
|  |         UI_BOOL(BOOL_NAME, "Label", "Tooltip", true) | ||
|  | 
 | ||
|  |     BOOLEAN Categorized Macro | ||
|  |         CAT_BOOL(BOOL_NAME, "Category", "Label", "Tooltip", true) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     INTEGER Combo Widget | ||
|  |         UI_COMBO(INT_NAME, "Label", "Tooltip", 0, 2, 0, "Item 1\0Item 2\0Item 3\0") | ||
|  | 
 | ||
|  |     INTEGER Drag Widget | ||
|  |         UI_INT_D(INT_NAME, "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |     INTEGER Input Widget | ||
|  |         UI_INT_I(INT_NAME, "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |     INTEGER Radio Widget | ||
|  |         UI_RADIO(INT_NAME, "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") | ||
|  | 
 | ||
|  |     INTEGER Slider Widget | ||
|  |         UI_INT_S(INT_NAME, "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |     INTEGER Categorized Combo Widget | ||
|  |         CAT_COMBO(INT_NAME, "Category", "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") | ||
|  | 
 | ||
|  |     INTEGER Categorized Drag Widget | ||
|  |         CAT_INT_D(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |     INTEGER Categorized Input Widget | ||
|  |         CAT_INT_I(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |     INTEGER Categorized Radio Widget | ||
|  |         CAT_RADIO(INT_NAME, "Category", "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") | ||
|  | 
 | ||
|  |     INTEGER Categorized Slider Widget | ||
|  |         CAT_INT_S(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     FLOAT Drag Widget | ||
|  |         UI_FLOAT_D(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Input Widget | ||
|  |         UI_FLOAT_I(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Slider Widget | ||
|  |         UI_FLOAT_S(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Categorized Drag Widget | ||
|  |         CAT_FLOAT_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Categorized Input Widget | ||
|  |         CAT_FLOAT_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Categorized Slider Widget | ||
|  |         CAT_FLOAT_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT macro with full control (value after "Tooltip" is ui_step) | ||
|  |         UI_FLOAT_FULL(FLOAT_NAME, "ui_type", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |     FLOAT Categorized macro with full control (value after "Tooltip" is ui_step) | ||
|  |         CAT_FLOAT_FULL(FLOAT_NAME, "ui_type", "Category", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5) | ||
|  | 
 | ||
|  |   *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |      FLOAT2 Drag Widget | ||
|  |          UI_FLOAT2_D(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Input Widget | ||
|  |          UI_FLOAT2_I(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Slider Widget | ||
|  |          UI_FLOAT2_S(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Categorized Drag Widget | ||
|  |          CAT_FLOAT2_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Categorized Input Widget | ||
|  |          CAT_FLOAT2_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Categorized Slider Widget | ||
|  |          CAT_FLOAT2_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 macro with full control (value after "Tooltip" is ui_step) | ||
|  |          UI_FLOAT2_FULL(FLOAT_NAME, "ui_type", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |      FLOAT2 Categorized macro with full control (value after "Tooltip" is ui_step) | ||
|  |          CAT_FLOAT2_FULL(FLOAT_NAME, "ui_type", "Category", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5, 0.5) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     FLOAT3 Drag Widget | ||
|  |         UI_FLOAT3_D(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Input Widget | ||
|  |         UI_FLOAT3_I(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Slider Widget | ||
|  |         UI_FLOAT3_S(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Categorized Drag Widget | ||
|  |         CAT_FLOAT3_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Categorized Input Widget | ||
|  |         CAT_FLOAT3_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Categorized Slider Widget | ||
|  |         CAT_FLOAT3_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     FLOAT3 Color Widget | ||
|  |         UI_COLOR(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |     FLOAT3 Categorized Color Widget | ||
|  |         CAT_COLOR(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     SAMPLER Macro | ||
|  |         SAMPLER(SamplerName, TextureName) | ||
|  | 
 | ||
|  |     SAMPLER Macro with texture boundary resolver option | ||
|  |         SAMPLER_UV(SamplerName, TextureName, ResolverType) | ||
|  | 
 | ||
|  |     TEXTURE Macro | ||
|  |         TEXTURE(TextureName, "TexturePath") | ||
|  | 
 | ||
|  |     TEXTURE Full Macro | ||
|  |         TEXTURE_FULL(TextureName, "TexturePath", Width, Height, Format) | ||
|  | 
 | ||
|  |  *  ////////////////////////////////////////////////////  * | ||
|  | 
 | ||
|  |     TECHNIQUE Macro | ||
|  |         TECHNIQUE(TechniqueName, PassMacro) | ||
|  | 
 | ||
|  |     PASS Macro | ||
|  |         PASS(PassID, VertexShader, PixelShader) | ||
|  | 
 | ||
|  |     PASS Macro with RenderTarget | ||
|  |         PASS_RT(PassID, VertexShader, PixelShader, RenderTarget) | ||
|  | 
 | ||
|  |     //////////////////////////////////////////////////// | ||
|  |  *  ////////////////////////////////////////////////////  */ | ||
|  | 
 | ||
|  | // INTEGER MACROS //////////////////////////////// | ||
|  |     #define UI_COMBO(var, label, tooltip, minval, maxval, defval, items) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "combo"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_items    = items; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_COMBO(var, category, label, tooltip, minval, maxval, defval, items) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "combo"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_items    = items; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_INT_I(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_INT_I(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_INT_S(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_INT_S(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_INT_D(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_INT_D(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform int var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |         #define UI_RADIO(var, label, tooltip, minval, maxval, defval, items) \ | ||
|  |             uniform int var \ | ||
|  |             < \ | ||
|  |                 ui_type     = "radio"; \ | ||
|  |                 ui_label    = label; \ | ||
|  |                 ui_tooltip  = tooltip; \ | ||
|  |                 ui_items    = items; \ | ||
|  |                 ui_min      = minval; \ | ||
|  |                 ui_max      = maxval; \ | ||
|  |             >               = defval; | ||
|  | 
 | ||
|  |         #define CAT_RADIO(var, category, label, tooltip, minval, maxval, defval, items) \ | ||
|  |             uniform int var \ | ||
|  |             < \ | ||
|  |                 ui_type     = "radio"; \ | ||
|  |                 ui_category = category; \ | ||
|  |                 ui_label    = label; \ | ||
|  |                 ui_tooltip  = tooltip; \ | ||
|  |                 ui_items    = items; \ | ||
|  |                 ui_min      = minval; \ | ||
|  |                 ui_max      = maxval; \ | ||
|  |             >               = defval; | ||
|  | 
 | ||
|  | // BOOL MACROS /////////////////////////////////// | ||
|  |     #define UI_BOOL(var, label, tooltip, def) \ | ||
|  |         uniform bool var \ | ||
|  |         < \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = def; | ||
|  | 
 | ||
|  |     #define CAT_BOOL(var, category, label, tooltip, def) \ | ||
|  |         uniform bool var \ | ||
|  |         < \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = def; | ||
|  | 
 | ||
|  | // FLOAT MACROS ////////////////////////////////// | ||
|  |     #define UI_FLOAT_D(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_FLOAT_D(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_FLOAT_FULL(var, uitype, label, tooltip, uistep, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = uitype; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_step     = uistep; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_FLOAT_FULL(var, uitype, category, label, tooltip, uistep, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = uitype; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_step     = uistep; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_FLOAT_I(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_FLOAT_I(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_FLOAT_S(var, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define CAT_FLOAT_S(var, category, label, tooltip, minval, maxval, defval) \ | ||
|  |         uniform float var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = defval; | ||
|  | 
 | ||
|  |     #define UI_FLOAT2_D(var, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT2_D(var, category, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define UI_FLOAT2_FULL(var, uitype, label, tooltip, uistep, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = uitype; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_step     = uistep; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT2_FULL(var, uitype, category, label, tooltip, uistep, minval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = uitype; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_step     = uistep; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define UI_FLOAT2_I(var, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT2_I(var, category, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define UI_FLOAT2_S(var, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT2_S(var, category, label, tooltip, minval, maxval, defval1, defval2) \ | ||
|  |         uniform float2 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |             ui_min      = minval; \ | ||
|  |             ui_max      = maxval; \ | ||
|  |         >               = float2(defval1, defval2); | ||
|  | 
 | ||
|  |     #define UI_FLOAT3_D(var, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT3_D(var, category, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "drag"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define UI_FLOAT3_I(var, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT3_I(var, category, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "input"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define UI_FLOAT3_S(var, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define CAT_FLOAT3_S(var, category, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "slider"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  | 
 | ||
|  | // COLOR WIDGET MACROS /////////////////////////// | ||
|  |     #define UI_COLOR(var, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "color"; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  |     #define CAT_COLOR(var, category, label, tooltip, defval1, defval2, defval3) \ | ||
|  |         uniform float3 var \ | ||
|  |         < \ | ||
|  |             ui_type     = "color"; \ | ||
|  |             ui_category = category; \ | ||
|  |             ui_label    = label; \ | ||
|  |             ui_tooltip  = tooltip; \ | ||
|  |         >               = float3(defval1, defval2, defval3); | ||
|  | 
 | ||
|  | 
 | ||
|  | // SAMPLER MACRO ///////////////////////////////// | ||
|  |     #define SAMPLER(sname, tname) \ | ||
|  |         sampler	sname \ | ||
|  |         { \ | ||
|  |             Texture     = tname; \ | ||
|  |         }; | ||
|  | 
 | ||
|  |     #define SAMPLER_UV(sname, tname, addUVW) \ | ||
|  |         sampler	sname \ | ||
|  |         { \ | ||
|  |             Texture  = tname; \ | ||
|  |             AddressU = addUVW; \ | ||
|  |             AddressV = addUVW; \ | ||
|  |             AddressW = addUVW; \ | ||
|  |         }; | ||
|  | 
 | ||
|  | 
 | ||
|  | // TEXTURE MACROs //////////////////////////////// | ||
|  |     #define TEXTURE(tname, src) \ | ||
|  |         texture tname <source=src;> \ | ||
|  |         { \ | ||
|  |             Width       = BUFFER_WIDTH; \ | ||
|  |             Height      = BUFFER_HEIGHT; \ | ||
|  |             Format      = RGBA8; \ | ||
|  |         }; | ||
|  | 
 | ||
|  |     #define TEXTURE_FULL(tname, src, width, height, fomat) \ | ||
|  |         texture tname <source=src;> \ | ||
|  |         { \ | ||
|  |             Width       = width; \ | ||
|  |             Height      = height; \ | ||
|  |             Format      = fomat; \ | ||
|  |         }; | ||
|  | 
 | ||
|  | 
 | ||
|  | // TECHNIQUE MACROS ////////////////////////////// | ||
|  |     #define TECHNIQUE(tname, pass) \ | ||
|  |         technique tname \ | ||
|  |         { \ | ||
|  |             pass \ | ||
|  |         } | ||
|  | 
 | ||
|  |     #define PASS(ID, vs, ps) pass \ | ||
|  |         { \ | ||
|  |             VertexShader  = vs; \ | ||
|  |             PixelShader   = ps; \ | ||
|  |         } | ||
|  | 
 | ||
|  |     #define PASS_RT(ID, vs, ps, rt) pass \ | ||
|  |         { \ | ||
|  |             VertexShader  = vs; \ | ||
|  |             PixelShader   = ps; \ | ||
|  |             RenderTarget  = rt; \ | ||
|  |         } |