// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. #ifndef MACRO #define MACRO //bootleg ternary operator - no __VA_ARGS__ #define IIF(cond) IIF_ ## cond #define IIF_0(t, f) f #define IIF_1(t, f) t #define CONCAT(arg1, arg2) arg1 ## arg2 #define TRANSFORM_TEX_00(uv, st) uv #define TRANSFORM_TEX_10(uv, st) uv * st.xy #define TRANSFORM_TEX_01(uv, st) uv + st.zw #define TRANSFORM_TEX_11(uv, st) uv * st.xy + st.zw // main tex #ifdef _MainTex_SCALE_ON #define _MainTex_SCALE_TOGGLE 1 #else #define _MainTex_SCALE_TOGGLE 0 #endif #ifdef _MainTex_OFFSET_ON #define _MainTex_OFFSET_TOGGLE 1 #else #define _MainTex_OFFSET_TOGGLE 0 #endif #define MAINTEX_TYPE_S CONCAT(TRANSFORM_TEX_, _MainTex_SCALE_TOGGLE) #define MAINTEX_TYPE_SO CONCAT(MAINTEX_TYPE_S, _MainTex_OFFSET_TOGGLE) #define TRANSFORM_TEX_MAINTEX(uv, st) MAINTEX_TYPE_SO ## (uv, st) //bump map #ifdef _BumpMap_SCALE_ON #define _BumpMap_SCALE_TOGGLE 1 #else #define _BumpMap_SCALE_TOGGLE 0 #endif #ifdef _BumpMap_OFFSET_ON #define _BumpMap_OFFSET_TOGGLE 1 #else #define _BumpMap_OFFSET_TOGGLE 0 #endif #define BUMPMAP_TYPE_S CONCAT(TRANSFORM_TEX_, _BumpMap_SCALE_TOGGLE) #define BUMPMAP_TYPE_SO CONCAT(BUMPMAP_TYPE_S, _BumpMap_OFFSET_TOGGLE) #define TRANSFORM_TEX_BUMPMAP(uv, st) BUMPMAP_TYPE_SO ## (uv, st) //occlusion map #ifdef _OcclusionMap_SCALE_ON #define _OcclusionMap_SCALE_TOGGLE 1 #else #define _OcclusionMap_SCALE_TOGGLE 0 #endif #ifdef _OcclusionMap_OFFSET_ON #define _OcclusionMap_OFFSET_TOGGLE 1 #else #define _OcclusionMap_OFFSET_TOGGLE 0 #endif #define OCCLUSIONMAP_TYPE_S CONCAT(TRANSFORM_TEX_, _OcclusionMap_SCALE_TOGGLE) #define OCCLUSIONMAP_TYPE_SO CONCAT(OCCLUSIONMAP_TYPE_S, _OcclusionMap_OFFSET_TOGGLE) #define TRANSFORM_TEX_OCCLUSIONMAP(uv, st) OCCLUSIONMAP_TYPE_SO ## (uv, st) #endif //MACRO