[XeSL] Prefix all local names with `xesl_id/var_`
This commit is contained in:
parent
7a89ad16a6
commit
fe50c5c2e5
|
@ -76,7 +76,7 @@
|
||||||
// the `set=` and `binding=` specifiers, and register types and the `space`
|
// the `set=` and `binding=` specifiers, and register types and the `space`
|
||||||
// prefix in HLSL, are exposed to the shader, even though they're redundant.
|
// prefix in HLSL, are exposed to the shader, even though they're redundant.
|
||||||
//
|
//
|
||||||
// The xesl_id_ prefix (with context-specific sub-prefixes) can be used to
|
// The `xesl_id_` prefix (with context-specific sub-prefixes) can be used to
|
||||||
// create internal derivative identifiers (such as buffer block names from
|
// create internal derivative identifiers (such as buffer block names from
|
||||||
// instance names, or separate texture and sampler from a combined texture /
|
// instance names, or separate texture and sampler from a combined texture /
|
||||||
// sampler for languages not supporting the latter).
|
// sampler for languages not supporting the latter).
|
||||||
|
@ -232,13 +232,13 @@
|
||||||
hlsl_t, hlsl_t_space) \
|
hlsl_t, hlsl_t_space) \
|
||||||
layout(std430, glsl_set, glsl_binding) \
|
layout(std430, glsl_set, glsl_binding) \
|
||||||
readonly buffer xesl_id_buffer_##name { \
|
readonly buffer xesl_id_buffer_##name { \
|
||||||
value_type data[]; \
|
value_type xesl_id_data[]; \
|
||||||
} name;
|
} name;
|
||||||
#define xesl_writeTypedStorageBuffer(value_type, name, glsl_set, \
|
#define xesl_writeTypedStorageBuffer(value_type, name, glsl_set, \
|
||||||
glsl_binding, hlsl_u, hlsl_u_space) \
|
glsl_binding, hlsl_u, hlsl_u_space) \
|
||||||
layout(std430, glsl_set, glsl_binding) \
|
layout(std430, glsl_set, glsl_binding) \
|
||||||
writeonly buffer xesl_id_buffer_##name { \
|
writeonly buffer xesl_id_buffer_##name { \
|
||||||
value_type data[]; \
|
value_type xesl_id_data[]; \
|
||||||
} name;
|
} name;
|
||||||
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
|
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
|
||||||
hlsl_t_space) \
|
hlsl_t_space) \
|
||||||
|
@ -251,9 +251,9 @@
|
||||||
layout(glsl_set, glsl_binding) uniform sampler_type name;
|
layout(glsl_set, glsl_binding) uniform sampler_type name;
|
||||||
// Fetching and storing.
|
// Fetching and storing.
|
||||||
#define xesl_typedStorageBufferLoad(name, position) \
|
#define xesl_typedStorageBufferLoad(name, position) \
|
||||||
((name).data[uint(position)])
|
((name).xesl_id_data[uint(position)])
|
||||||
#define xesl_writeTypedStorageBufferStore(name, position, value) \
|
#define xesl_writeTypedStorageBufferStore(name, position, value) \
|
||||||
((name).data[uint(position)] = (value))
|
((name).xesl_id_data[uint(position)] = (value))
|
||||||
#define xesl_texelFetch2D(texture_name, position, lod) \
|
#define xesl_texelFetch2D(texture_name, position, lod) \
|
||||||
texelFetch(texture_name, position, lod)
|
texelFetch(texture_name, position, lod)
|
||||||
#define xesl_texelFetch2DMS(texture_name, position, sample_index) \
|
#define xesl_texelFetch2DMS(texture_name, position, sample_index) \
|
||||||
|
@ -454,6 +454,9 @@
|
||||||
#endif // !xesl_dont_flatten
|
#endif // !xesl_dont_flatten
|
||||||
|
|
||||||
// Function aliases.
|
// Function aliases.
|
||||||
|
//
|
||||||
|
// Use the `xesl_var_` prefix for arguments of functions that are not macros and
|
||||||
|
// for local variables.
|
||||||
|
|
||||||
#if XESL_LANGUAGE_GLSL
|
#if XESL_LANGUAGE_GLSL
|
||||||
#define xesl_lessThan lessThan
|
#define xesl_lessThan lessThan
|
||||||
|
@ -486,39 +489,70 @@
|
||||||
#define xesl_uintBitsToFloat uintBitsToFloat
|
#define xesl_uintBitsToFloat uintBitsToFloat
|
||||||
#elif XESL_LANGUAGE_HLSL
|
#elif XESL_LANGUAGE_HLSL
|
||||||
// Using functions instead of #define for implicit argument conversion.
|
// Using functions instead of #define for implicit argument conversion.
|
||||||
int xesl_floatBitsToInt(float value) { return asint(value); }
|
int xesl_floatBitsToInt(float xesl_var_value) {
|
||||||
xesl_int2 xesl_floatBitsToInt(xesl_float2 value) { return asint(value); }
|
return asint(xesl_var_value);
|
||||||
xesl_int3 xesl_floatBitsToInt(xesl_float3 value) { return asint(value); }
|
}
|
||||||
xesl_int4 xesl_floatBitsToInt(xesl_float4 value) { return asint(value); }
|
xesl_int2 xesl_floatBitsToInt(xesl_float2 xesl_var_value) {
|
||||||
uint xesl_floatBitsToUint(float value) { return asuint(value); }
|
return asint(xesl_var_value);
|
||||||
xesl_uint2 xesl_floatBitsToUint(xesl_float2 value) { return asuint(value); }
|
}
|
||||||
xesl_uint3 xesl_floatBitsToUint(xesl_float3 value) { return asuint(value); }
|
xesl_int3 xesl_floatBitsToInt(xesl_float3 xesl_var_value) {
|
||||||
xesl_uint4 xesl_floatBitsToUint(xesl_float4 value) { return asuint(value); }
|
return asint(xesl_var_value);
|
||||||
float xesl_intBitsToFloat(int value) { return asfloat(value); }
|
}
|
||||||
xesl_float2 xesl_intBitsToFloat(xesl_int2 value) { return asfloat(value); }
|
xesl_int4 xesl_floatBitsToInt(xesl_float4 xesl_var_value) {
|
||||||
xesl_float3 xesl_intBitsToFloat(xesl_int3 value) { return asfloat(value); }
|
return asint(xesl_var_value);
|
||||||
xesl_float4 xesl_intBitsToFloat(xesl_int4 value) { return asfloat(value); }
|
}
|
||||||
float xesl_uintBitsToFloat(uint value) { return asfloat(value); }
|
uint xesl_floatBitsToUint(float xesl_var_value) {
|
||||||
xesl_float2 xesl_uintBitsToFloat(xesl_uint2 value) { return asfloat(value); }
|
return asuint(xesl_var_value);
|
||||||
xesl_float3 xesl_uintBitsToFloat(xesl_uint3 value) { return asfloat(value); }
|
}
|
||||||
xesl_float4 xesl_uintBitsToFloat(xesl_uint4 value) { return asfloat(value); }
|
xesl_uint2 xesl_floatBitsToUint(xesl_float2 xesl_var_value) {
|
||||||
|
return asuint(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_uint3 xesl_floatBitsToUint(xesl_float3 xesl_var_value) {
|
||||||
|
return asuint(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_uint4 xesl_floatBitsToUint(xesl_float4 xesl_var_value) {
|
||||||
|
return asuint(xesl_var_value);
|
||||||
|
}
|
||||||
|
float xesl_intBitsToFloat(int xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float2 xesl_intBitsToFloat(xesl_int2 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float3 xesl_intBitsToFloat(xesl_int3 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float4 xesl_intBitsToFloat(xesl_int4 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
float xesl_uintBitsToFloat(uint xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float2 xesl_uintBitsToFloat(xesl_uint2 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float3 xesl_uintBitsToFloat(xesl_uint3 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
|
xesl_float4 xesl_uintBitsToFloat(xesl_uint4 xesl_var_value) {
|
||||||
|
return asfloat(xesl_var_value);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#error Float bit casting not defined for the target language.
|
#error Float bit casting not defined for the target language.
|
||||||
#endif // XESL_LANGUAGE
|
#endif // XESL_LANGUAGE
|
||||||
|
|
||||||
#if XESL_LANGUAGE_GLSL
|
#if XESL_LANGUAGE_GLSL
|
||||||
float xesl_saturate(float value) {
|
float xesl_saturate(float xesl_var_value) {
|
||||||
return clamp(value, 0.0, 1.0);
|
return clamp(xesl_var_value, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
xesl_float2 xesl_saturate(xesl_float2 value) {
|
xesl_float2 xesl_saturate(xesl_float2 xesl_var_value) {
|
||||||
return clamp(value, xesl_float2(0.0, 0.0), xesl_float2(1.0, 1.0));
|
return clamp(xesl_var_value, (0.0).xx, (1.0).xx);
|
||||||
}
|
}
|
||||||
xesl_float3 xesl_saturate(xesl_float3 value) {
|
xesl_float3 xesl_saturate(xesl_float3 xesl_var_value) {
|
||||||
return clamp(value, xesl_float3(0.0, 0.0, 0.0), xesl_float3(1.0, 1.0, 1.0));
|
return clamp(xesl_var_value, (0.0).xxx, (1.0).xxx);
|
||||||
}
|
}
|
||||||
xesl_float4 xesl_saturate(xesl_float4 value) {
|
xesl_float4 xesl_saturate(xesl_float4 xesl_var_value) {
|
||||||
return clamp(value, xesl_float4(0.0, 0.0, 0.0, 0.0),
|
return clamp(xesl_var_value, (0.0).xxxx, (1.0).xxxx);
|
||||||
xesl_float4(1.0, 1.0, 1.0, 1.0));
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define xesl_saturate saturate
|
#define xesl_saturate saturate
|
||||||
|
@ -537,8 +571,8 @@
|
||||||
#if XESL_LANGUAGE_GLSL
|
#if XESL_LANGUAGE_GLSL
|
||||||
#define xesl_packHalf2x16 packHalf2x16
|
#define xesl_packHalf2x16 packHalf2x16
|
||||||
#elif XESL_LANGUAGE_HLSL
|
#elif XESL_LANGUAGE_HLSL
|
||||||
uint xesl_packHalf2x16(xesl_float2 value) {
|
uint xesl_packHalf2x16(xesl_float2 xesl_var_value) {
|
||||||
return f32tof16(value.x) | (f32tof16(value.y) << 16u);
|
return f32tof16(xesl_var_value.x) | (f32tof16(xesl_var_value.y) << 16u);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error xesl_packHalf2x16 not defined for the target language.
|
#error xesl_packHalf2x16 not defined for the target language.
|
||||||
|
|
Loading…
Reference in New Issue