Macros.fxh (21411B)
1 //////////////////////////////////////////////////////////// 2 // BASIC MACROS FOR RESHADE 4 // 3 // AUTHOR: TREYM // 4 //////////////////////////////////////////////////////////// 5 // Modified by dddfault // 6 // // 7 // Changelogs : // 8 // Added Sampler texture boundary resolver option // 9 // Added float2 parameters option // 10 //////////////////////////////////////////////////////////// 11 // Macros Guide: // 12 //////////////////////////////////////////////////////////// 13 14 /* //////////////////////////////////////////////////// * 15 * //////////////////////////////////////////////////// * 16 17 Usage of these macros is very simple once you understand 18 the syntax and variable names. Let's start with a Simple 19 integer slider. To begin, type: 20 21 UI_INT 22 23 Next we need to add _S to indicate that this is a 24 "slider" widget. Follow the syntax below: 25 26 UI_INT_S(INT_NAME, "Label", "Tooltip", 0, 100, 50) 27 28 Using just a single line of code, we have created a UI 29 tweakable integer named INT_NAME with a minimum value of 30 0, a maximum value of 100, and a default value of 50. 31 32 Next, let's create that same widget, but within a UI 33 category. This time, we'll type: 34 35 CAT_INT_S(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) 36 37 As you can see, the syntax follows the same pattern but 38 with a new input for "Category" 39 40 Below you will find a useful list of examples to get you 41 started. I hope you find these useful and they help your 42 workflow. Happy coding! 43 44 - TreyM 45 46 * //////////////////////////////////////////////////// * 47 * //////////////////////////////////////////////////// * 48 49 Widget Types 50 Input = _I 51 Slider = _S 52 Drag = _D 53 54 * //////////////////////////////////////////////////// * 55 56 BOOLEAN Macro 57 UI_BOOL(BOOL_NAME, "Label", "Tooltip", true) 58 59 BOOLEAN Categorized Macro 60 CAT_BOOL(BOOL_NAME, "Category", "Label", "Tooltip", true) 61 62 * //////////////////////////////////////////////////// * 63 64 INTEGER Combo Widget 65 UI_COMBO(INT_NAME, "Label", "Tooltip", 0, 2, 0, "Item 1\0Item 2\0Item 3\0") 66 67 INTEGER Drag Widget 68 UI_INT_D(INT_NAME, "Label", "Tooltip", 0, 100, 50) 69 70 INTEGER Input Widget 71 UI_INT_I(INT_NAME, "Label", "Tooltip", 0, 100, 50) 72 73 INTEGER Radio Widget 74 UI_RADIO(INT_NAME, "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") 75 76 INTEGER Slider Widget 77 UI_INT_S(INT_NAME, "Label", "Tooltip", 0, 100, 50) 78 79 INTEGER Categorized Combo Widget 80 CAT_COMBO(INT_NAME, "Category", "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") 81 82 INTEGER Categorized Drag Widget 83 CAT_INT_D(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) 84 85 INTEGER Categorized Input Widget 86 CAT_INT_I(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) 87 88 INTEGER Categorized Radio Widget 89 CAT_RADIO(INT_NAME, "Category", "Label", "Tooltip", 0, 2, 0, " Item 1 \0 Item 2 \0 Item 3\0") 90 91 INTEGER Categorized Slider Widget 92 CAT_INT_S(INT_NAME, "Category", "Label", "Tooltip", 0, 100, 50) 93 94 * //////////////////////////////////////////////////// * 95 96 FLOAT Drag Widget 97 UI_FLOAT_D(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) 98 99 FLOAT Input Widget 100 UI_FLOAT_I(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) 101 102 FLOAT Slider Widget 103 UI_FLOAT_S(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5) 104 105 FLOAT Categorized Drag Widget 106 CAT_FLOAT_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) 107 108 FLOAT Categorized Input Widget 109 CAT_FLOAT_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) 110 111 FLOAT Categorized Slider Widget 112 CAT_FLOAT_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5) 113 114 FLOAT macro with full control (value after "Tooltip" is ui_step) 115 UI_FLOAT_FULL(FLOAT_NAME, "ui_type", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5) 116 117 FLOAT Categorized macro with full control (value after "Tooltip" is ui_step) 118 CAT_FLOAT_FULL(FLOAT_NAME, "ui_type", "Category", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5) 119 120 * //////////////////////////////////////////////////// * 121 122 FLOAT2 Drag Widget 123 UI_FLOAT2_D(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 124 125 FLOAT2 Input Widget 126 UI_FLOAT2_I(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 127 128 FLOAT2 Slider Widget 129 UI_FLOAT2_S(FLOAT_NAME, "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 130 131 FLOAT2 Categorized Drag Widget 132 CAT_FLOAT2_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 133 134 FLOAT2 Categorized Input Widget 135 CAT_FLOAT2_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 136 137 FLOAT2 Categorized Slider Widget 138 CAT_FLOAT2_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.0, 1.0, 0.5, 0.5) 139 140 FLOAT2 macro with full control (value after "Tooltip" is ui_step) 141 UI_FLOAT2_FULL(FLOAT_NAME, "ui_type", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5, 0.5) 142 143 FLOAT2 Categorized macro with full control (value after "Tooltip" is ui_step) 144 CAT_FLOAT2_FULL(FLOAT_NAME, "ui_type", "Category", "Label", "Tooltip", 0.1, 0.0, 1.0, 0.5, 0.5) 145 146 * //////////////////////////////////////////////////// * 147 148 FLOAT3 Drag Widget 149 UI_FLOAT3_D(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) 150 151 FLOAT3 Input Widget 152 UI_FLOAT3_I(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) 153 154 FLOAT3 Slider Widget 155 UI_FLOAT3_S(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) 156 157 FLOAT3 Categorized Drag Widget 158 CAT_FLOAT3_D(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) 159 160 FLOAT3 Categorized Input Widget 161 CAT_FLOAT3_I(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) 162 163 FLOAT3 Categorized Slider Widget 164 CAT_FLOAT3_S(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) 165 166 * //////////////////////////////////////////////////// * 167 168 FLOAT3 Color Widget 169 UI_COLOR(FLOAT_NAME, "Label", "Tooltip", 0.5, 0.5, 0.5) 170 171 FLOAT3 Categorized Color Widget 172 CAT_COLOR(FLOAT_NAME, "Category", "Label", "Tooltip", 0.5, 0.5, 0.5) 173 174 * //////////////////////////////////////////////////// * 175 176 SAMPLER Macro 177 SAMPLER(SamplerName, TextureName) 178 179 SAMPLER Macro with texture boundary resolver option 180 SAMPLER_UV(SamplerName, TextureName, ResolverType) 181 182 TEXTURE Macro 183 TEXTURE(TextureName, "TexturePath") 184 185 TEXTURE Full Macro 186 TEXTURE_FULL(TextureName, "TexturePath", Width, Height, Format) 187 188 * //////////////////////////////////////////////////// * 189 190 TECHNIQUE Macro 191 TECHNIQUE(TechniqueName, PassMacro) 192 193 PASS Macro 194 PASS(PassID, VertexShader, PixelShader) 195 196 PASS Macro with RenderTarget 197 PASS_RT(PassID, VertexShader, PixelShader, RenderTarget) 198 199 //////////////////////////////////////////////////// 200 * //////////////////////////////////////////////////// */ 201 202 // INTEGER MACROS //////////////////////////////// 203 #define UI_COMBO(var, label, tooltip, minval, maxval, defval, items) \ 204 uniform int var \ 205 < \ 206 ui_type = "combo"; \ 207 ui_label = label; \ 208 ui_tooltip = tooltip; \ 209 ui_items = items; \ 210 ui_min = minval; \ 211 ui_max = maxval; \ 212 > = defval; 213 214 #define CAT_COMBO(var, category, label, tooltip, minval, maxval, defval, items) \ 215 uniform int var \ 216 < \ 217 ui_type = "combo"; \ 218 ui_category = category; \ 219 ui_label = label; \ 220 ui_tooltip = tooltip; \ 221 ui_items = items; \ 222 ui_min = minval; \ 223 ui_max = maxval; \ 224 > = defval; 225 226 #define UI_INT_I(var, label, tooltip, minval, maxval, defval) \ 227 uniform int var \ 228 < \ 229 ui_type = "input"; \ 230 ui_label = label; \ 231 ui_tooltip = tooltip; \ 232 ui_min = minval; \ 233 ui_max = maxval; \ 234 > = defval; 235 236 #define CAT_INT_I(var, category, label, tooltip, minval, maxval, defval) \ 237 uniform int var \ 238 < \ 239 ui_type = "input"; \ 240 ui_category = category; \ 241 ui_label = label; \ 242 ui_tooltip = tooltip; \ 243 ui_min = minval; \ 244 ui_max = maxval; \ 245 > = defval; 246 247 #define UI_INT_S(var, label, tooltip, minval, maxval, defval) \ 248 uniform int var \ 249 < \ 250 ui_type = "slider"; \ 251 ui_label = label; \ 252 ui_tooltip = tooltip; \ 253 ui_min = minval; \ 254 ui_max = maxval; \ 255 > = defval; 256 257 #define CAT_INT_S(var, category, label, tooltip, minval, maxval, defval) \ 258 uniform int var \ 259 < \ 260 ui_type = "slider"; \ 261 ui_category = category; \ 262 ui_label = label; \ 263 ui_tooltip = tooltip; \ 264 ui_min = minval; \ 265 ui_max = maxval; \ 266 > = defval; 267 268 #define UI_INT_D(var, label, tooltip, minval, maxval, defval) \ 269 uniform int var \ 270 < \ 271 ui_type = "drag"; \ 272 ui_label = label; \ 273 ui_tooltip = tooltip; \ 274 ui_min = minval; \ 275 ui_max = maxval; \ 276 > = defval; 277 278 #define CAT_INT_D(var, category, label, tooltip, minval, maxval, defval) \ 279 uniform int var \ 280 < \ 281 ui_type = "drag"; \ 282 ui_category = category; \ 283 ui_label = label; \ 284 ui_tooltip = tooltip; \ 285 ui_min = minval; \ 286 ui_max = maxval; \ 287 > = defval; 288 289 #define UI_RADIO(var, label, tooltip, minval, maxval, defval, items) \ 290 uniform int var \ 291 < \ 292 ui_type = "radio"; \ 293 ui_label = label; \ 294 ui_tooltip = tooltip; \ 295 ui_items = items; \ 296 ui_min = minval; \ 297 ui_max = maxval; \ 298 > = defval; 299 300 #define CAT_RADIO(var, category, label, tooltip, minval, maxval, defval, items) \ 301 uniform int var \ 302 < \ 303 ui_type = "radio"; \ 304 ui_category = category; \ 305 ui_label = label; \ 306 ui_tooltip = tooltip; \ 307 ui_items = items; \ 308 ui_min = minval; \ 309 ui_max = maxval; \ 310 > = defval; 311 312 // BOOL MACROS /////////////////////////////////// 313 #define UI_BOOL(var, label, tooltip, def) \ 314 uniform bool var \ 315 < \ 316 ui_label = label; \ 317 ui_tooltip = tooltip; \ 318 > = def; 319 320 #define CAT_BOOL(var, category, label, tooltip, def) \ 321 uniform bool var \ 322 < \ 323 ui_category = category; \ 324 ui_label = label; \ 325 ui_tooltip = tooltip; \ 326 > = def; 327 328 // FLOAT MACROS ////////////////////////////////// 329 #define UI_FLOAT_D(var, label, tooltip, minval, maxval, defval) \ 330 uniform float var \ 331 < \ 332 ui_type = "drag"; \ 333 ui_label = label; \ 334 ui_tooltip = tooltip; \ 335 ui_min = minval; \ 336 ui_max = maxval; \ 337 > = defval; 338 339 #define CAT_FLOAT_D(var, category, label, tooltip, minval, maxval, defval) \ 340 uniform float var \ 341 < \ 342 ui_type = "drag"; \ 343 ui_category = category; \ 344 ui_label = label; \ 345 ui_tooltip = tooltip; \ 346 ui_min = minval; \ 347 ui_max = maxval; \ 348 > = defval; 349 350 #define UI_FLOAT_FULL(var, uitype, label, tooltip, uistep, minval, maxval, defval) \ 351 uniform float var \ 352 < \ 353 ui_type = uitype; \ 354 ui_label = label; \ 355 ui_tooltip = tooltip; \ 356 ui_step = uistep; \ 357 ui_min = minval; \ 358 ui_max = maxval; \ 359 > = defval; 360 361 #define CAT_FLOAT_FULL(var, uitype, category, label, tooltip, uistep, minval, maxval, defval) \ 362 uniform float var \ 363 < \ 364 ui_type = uitype; \ 365 ui_category = category; \ 366 ui_label = label; \ 367 ui_tooltip = tooltip; \ 368 ui_step = uistep; \ 369 ui_min = minval; \ 370 ui_max = maxval; \ 371 > = defval; 372 373 #define UI_FLOAT_I(var, label, tooltip, minval, maxval, defval) \ 374 uniform float var \ 375 < \ 376 ui_type = "input"; \ 377 ui_label = label; \ 378 ui_tooltip = tooltip; \ 379 ui_min = minval; \ 380 ui_max = maxval; \ 381 > = defval; 382 383 #define CAT_FLOAT_I(var, category, label, tooltip, minval, maxval, defval) \ 384 uniform float var \ 385 < \ 386 ui_type = "input"; \ 387 ui_category = category; \ 388 ui_label = label; \ 389 ui_tooltip = tooltip; \ 390 ui_min = minval; \ 391 ui_max = maxval; \ 392 > = defval; 393 394 #define UI_FLOAT_S(var, label, tooltip, minval, maxval, defval) \ 395 uniform float var \ 396 < \ 397 ui_type = "slider"; \ 398 ui_label = label; \ 399 ui_tooltip = tooltip; \ 400 ui_min = minval; \ 401 ui_max = maxval; \ 402 > = defval; 403 404 #define CAT_FLOAT_S(var, category, label, tooltip, minval, maxval, defval) \ 405 uniform float var \ 406 < \ 407 ui_type = "slider"; \ 408 ui_category = category; \ 409 ui_label = label; \ 410 ui_tooltip = tooltip; \ 411 ui_min = minval; \ 412 ui_max = maxval; \ 413 > = defval; 414 415 #define UI_FLOAT2_D(var, label, tooltip, minval, maxval, defval1, defval2) \ 416 uniform float2 var \ 417 < \ 418 ui_type = "drag"; \ 419 ui_label = label; \ 420 ui_tooltip = tooltip; \ 421 ui_min = minval; \ 422 ui_max = maxval; \ 423 > = float2(defval1, defval2); 424 425 #define CAT_FLOAT2_D(var, category, label, tooltip, minval, maxval, defval1, defval2) \ 426 uniform float2 var \ 427 < \ 428 ui_type = "drag"; \ 429 ui_category = category; \ 430 ui_label = label; \ 431 ui_tooltip = tooltip; \ 432 ui_min = minval; \ 433 ui_max = maxval; \ 434 > = float2(defval1, defval2); 435 436 #define UI_FLOAT2_FULL(var, uitype, label, tooltip, uistep, minval, maxval, defval1, defval2) \ 437 uniform float2 var \ 438 < \ 439 ui_type = uitype; \ 440 ui_label = label; \ 441 ui_tooltip = tooltip; \ 442 ui_step = uistep; \ 443 ui_min = minval; \ 444 ui_max = maxval; \ 445 > = float2(defval1, defval2); 446 447 #define CAT_FLOAT2_FULL(var, uitype, category, label, tooltip, uistep, minval, defval1, defval2) \ 448 uniform float2 var \ 449 < \ 450 ui_type = uitype; \ 451 ui_category = category; \ 452 ui_label = label; \ 453 ui_tooltip = tooltip; \ 454 ui_step = uistep; \ 455 ui_min = minval; \ 456 ui_max = maxval; \ 457 > = float2(defval1, defval2); 458 459 #define UI_FLOAT2_I(var, label, tooltip, minval, maxval, defval1, defval2) \ 460 uniform float2 var \ 461 < \ 462 ui_type = "input"; \ 463 ui_label = label; \ 464 ui_tooltip = tooltip; \ 465 ui_min = minval; \ 466 ui_max = maxval; \ 467 > = float2(defval1, defval2); 468 469 #define CAT_FLOAT2_I(var, category, label, tooltip, minval, maxval, defval1, defval2) \ 470 uniform float2 var \ 471 < \ 472 ui_type = "input"; \ 473 ui_category = category; \ 474 ui_label = label; \ 475 ui_tooltip = tooltip; \ 476 ui_min = minval; \ 477 ui_max = maxval; \ 478 > = float2(defval1, defval2); 479 480 #define UI_FLOAT2_S(var, label, tooltip, minval, maxval, defval1, defval2) \ 481 uniform float2 var \ 482 < \ 483 ui_type = "slider"; \ 484 ui_label = label; \ 485 ui_tooltip = tooltip; \ 486 ui_min = minval; \ 487 ui_max = maxval; \ 488 > = float2(defval1, defval2); 489 490 #define CAT_FLOAT2_S(var, category, label, tooltip, minval, maxval, defval1, defval2) \ 491 uniform float2 var \ 492 < \ 493 ui_type = "slider"; \ 494 ui_category = category; \ 495 ui_label = label; \ 496 ui_tooltip = tooltip; \ 497 ui_min = minval; \ 498 ui_max = maxval; \ 499 > = float2(defval1, defval2); 500 501 #define UI_FLOAT3_D(var, label, tooltip, defval1, defval2, defval3) \ 502 uniform float3 var \ 503 < \ 504 ui_type = "drag"; \ 505 ui_label = label; \ 506 ui_tooltip = tooltip; \ 507 > = float3(defval1, defval2, defval3); 508 509 #define CAT_FLOAT3_D(var, category, label, tooltip, defval1, defval2, defval3) \ 510 uniform float3 var \ 511 < \ 512 ui_type = "drag"; \ 513 ui_category = category; \ 514 ui_label = label; \ 515 ui_tooltip = tooltip; \ 516 > = float3(defval1, defval2, defval3); 517 518 #define UI_FLOAT3_I(var, label, tooltip, defval1, defval2, defval3) \ 519 uniform float3 var \ 520 < \ 521 ui_type = "input"; \ 522 ui_label = label; \ 523 ui_tooltip = tooltip; \ 524 > = float3(defval1, defval2, defval3); 525 526 #define CAT_FLOAT3_I(var, category, label, tooltip, defval1, defval2, defval3) \ 527 uniform float3 var \ 528 < \ 529 ui_type = "input"; \ 530 ui_category = category; \ 531 ui_label = label; \ 532 ui_tooltip = tooltip; \ 533 > = float3(defval1, defval2, defval3); 534 535 #define UI_FLOAT3_S(var, label, tooltip, defval1, defval2, defval3) \ 536 uniform float3 var \ 537 < \ 538 ui_type = "slider"; \ 539 ui_label = label; \ 540 ui_tooltip = tooltip; \ 541 > = float3(defval1, defval2, defval3); 542 543 #define CAT_FLOAT3_S(var, category, label, tooltip, defval1, defval2, defval3) \ 544 uniform float3 var \ 545 < \ 546 ui_type = "slider"; \ 547 ui_category = category; \ 548 ui_label = label; \ 549 ui_tooltip = tooltip; \ 550 > = float3(defval1, defval2, defval3); 551 552 553 // COLOR WIDGET MACROS /////////////////////////// 554 #define UI_COLOR(var, label, tooltip, defval1, defval2, defval3) \ 555 uniform float3 var \ 556 < \ 557 ui_type = "color"; \ 558 ui_label = label; \ 559 ui_tooltip = tooltip; \ 560 > = float3(defval1, defval2, defval3); 561 562 #define CAT_COLOR(var, category, label, tooltip, defval1, defval2, defval3) \ 563 uniform float3 var \ 564 < \ 565 ui_type = "color"; \ 566 ui_category = category; \ 567 ui_label = label; \ 568 ui_tooltip = tooltip; \ 569 > = float3(defval1, defval2, defval3); 570 571 572 // SAMPLER MACRO ///////////////////////////////// 573 #define SAMPLER(sname, tname) \ 574 sampler sname \ 575 { \ 576 Texture = tname; \ 577 }; 578 579 #define SAMPLER_UV(sname, tname, addUVW) \ 580 sampler sname \ 581 { \ 582 Texture = tname; \ 583 AddressU = addUVW; \ 584 AddressV = addUVW; \ 585 AddressW = addUVW; \ 586 }; 587 588 589 // TEXTURE MACROs //////////////////////////////// 590 #define TEXTURE(tname, src) \ 591 texture tname <source=src;> \ 592 { \ 593 Width = BUFFER_WIDTH; \ 594 Height = BUFFER_HEIGHT; \ 595 Format = RGBA8; \ 596 }; 597 598 #define TEXTURE_FULL(tname, src, width, height, fomat) \ 599 texture tname <source=src;> \ 600 { \ 601 Width = width; \ 602 Height = height; \ 603 Format = fomat; \ 604 }; 605 606 607 // TECHNIQUE MACROS ////////////////////////////// 608 #define TECHNIQUE(tname, pass) \ 609 technique tname \ 610 { \ 611 pass \ 612 } 613 614 #define PASS(ID, vs, ps) pass \ 615 { \ 616 VertexShader = vs; \ 617 PixelShader = ps; \ 618 } 619 620 #define PASS_RT(ID, vs, ps, rt) pass \ 621 { \ 622 VertexShader = vs; \ 623 PixelShader = ps; \ 624 RenderTarget = rt; \ 625 }