|
| 1 | + |
| 2 | +#define min3(a, b, c) min(a, min(b, c)) |
| 3 | +#define max3(a, b, c) max(a, max(b, c)) |
| 4 | + |
| 5 | +#define float2 vec2 |
| 6 | +#define float3 vec3 |
| 7 | +#define float4 vec4 |
| 8 | + |
| 9 | +#define int2 ivec2 |
| 10 | +#define int3 ivec3 |
| 11 | +#define int4 ivec4 |
| 12 | + |
| 13 | +#define uint2 uvec2 |
| 14 | +#define uint3 uvec3 |
| 15 | +#define uint4 uvec4 |
| 16 | + |
| 17 | +#define float2x2 mat2 |
| 18 | +#define float3x3 mat3 |
| 19 | +#define float4x4 mat4 |
| 20 | +#define ogre_float4x3 mat3x4 |
| 21 | + |
| 22 | +#define ushort uint |
| 23 | +#define ushort3 uint3 |
| 24 | +#define ushort4 uint4 |
| 25 | + |
| 26 | +//Short used for read operations. It's an int in GLSL & HLSL. An ushort in Metal |
| 27 | +#define rshort int |
| 28 | +#define rshort2 int2 |
| 29 | +#define rint int |
| 30 | +//Short used for write operations. It's an int in GLSL. An ushort in HLSL & Metal |
| 31 | +#define wshort2 int2 |
| 32 | +#define wshort3 int3 |
| 33 | + |
| 34 | +#define toFloat3x3(x) mat3(x) |
| 35 | +#define buildFloat3x3(row0, row1, row2) mat3(row0, row1, row2) |
| 36 | + |
| 37 | +#define mul(x, y) ((x) * (y)) |
| 38 | +#define saturate(x) clamp((x), 0.0, 1.0) |
| 39 | +#define lerp mix |
| 40 | +#define rsqrt inversesqrt |
| 41 | +#define INLINE |
| 42 | +#define NO_INTERPOLATION_PREFIX flat |
| 43 | +#define NO_INTERPOLATION_SUFFIX |
| 44 | + |
| 45 | +#define PARAMS_ARG_DECL |
| 46 | +#define PARAMS_ARG |
| 47 | + |
| 48 | +#define reversebits bitfieldReverse |
| 49 | + |
| 50 | +#define OGRE_Sample(tex, sampler, uv) texture(tex, uv) |
| 51 | +#define OGRE_SampleLevel(tex, sampler, uv, lod) textureLod(tex, uv, lod) |
| 52 | +#define OGRE_SampleArray2D(tex, sampler, uv, arrayIdx) texture(tex, vec3(uv, arrayIdx)) |
| 53 | +#define OGRE_SampleArray2DLevel(tex, sampler, uv, arrayIdx, lod) textureLod(tex, vec3(uv, arrayIdx), lod) |
| 54 | +#define OGRE_SampleArrayCubeLevel(tex, sampler, uv, arrayIdx, lod) textureLod(tex, vec4(uv, arrayIdx), lod) |
| 55 | +#define OGRE_SampleGrad(tex, sampler, uv, ddx, ddy) textureGrad(tex, uv, ddx, ddy) |
| 56 | +#define OGRE_SampleArray2DGrad(tex, sampler, uv, arrayIdx, ddx, ddy) textureGrad(tex, vec3(uv, arrayIdx), ddx, ddy) |
| 57 | +#define OGRE_ddx(val) dFdx(val) |
| 58 | +#define OGRE_ddy(val) dFdy(val) |
| 59 | +#define OGRE_Load2D(tex, iuv, lod) texelFetch(tex, iuv, lod) |
| 60 | +#define OGRE_LoadArray2D(tex, iuv, arrayIdx, lod) texelFetch(tex, ivec3(iuv, arrayIdx), lod) |
| 61 | +#define OGRE_Load2DMS(tex, iuv, subsample) texelFetch(tex, iuv, subsample) |
| 62 | + |
| 63 | +#define OGRE_Load3D(tex, iuv, lod) texelFetch(tex, ivec3(iuv), lod) |
| 64 | + |
| 65 | +#define OGRE_GatherRed(tex, sampler, uv) textureGather(tex, uv, 0) |
| 66 | +#define OGRE_GatherGreen(tex, sampler, uv) textureGather(tex, uv, 1) |
| 67 | +#define OGRE_GatherBlue(tex, sampler, uv) textureGather(tex, uv, 2) |
| 68 | + |
| 69 | +#define bufferFetch1(buffer, idx) texelFetch(buffer, idx).x |
| 70 | + |
| 71 | +#define OGRE_SAMPLER_ARG_DECL(samplerName) |
| 72 | +#define OGRE_SAMPLER_ARG(samplerName) |
| 73 | + |
| 74 | +#define OGRE_Texture3D_float4 sampler3D |
| 75 | +#define OGRE_OUT_REF(declType, variableName) out declType variableName |
| 76 | +#define OGRE_INOUT_REF(declType, variableName) inout declType variableName |
0 commit comments