forked from blender/blender
me-main #1
|
@ -59,6 +59,6 @@ struct ExtrudedFrustum {
|
||||||
|
|
||||||
struct ShadowPassData {
|
struct ShadowPassData {
|
||||||
float4 far_plane;
|
float4 far_plane;
|
||||||
float3 light_direction_ws;
|
packed_float3 light_direction_ws;
|
||||||
int _padding;
|
int _padding;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
typedef struct TestOutputRawData TestOutputRawData;
|
typedef struct TestOutputRawData TestOutputRawData;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* NOTE: float3 has differing stride and alignment rules across different GPU backends. If 12 byte
|
||||||
|
* stride and alignment is essential, use `packed_float3` to avoid data read issues. This is
|
||||||
|
* required in the common use-case where a float3 and an int/float are paired together for optimal
|
||||||
|
* data transfer. */
|
||||||
|
|
||||||
enum eGPUKeyframeShapes {
|
enum eGPUKeyframeShapes {
|
||||||
GPU_KEYFRAME_SHAPE_DIAMOND = (1u << 0u),
|
GPU_KEYFRAME_SHAPE_DIAMOND = (1u << 0u),
|
||||||
GPU_KEYFRAME_SHAPE_CIRCLE = (1u << 1u),
|
GPU_KEYFRAME_SHAPE_CIRCLE = (1u << 1u),
|
||||||
|
@ -70,7 +75,7 @@ BLI_STATIC_ASSERT_ALIGN(struct GPUClipPlanes, 16)
|
||||||
|
|
||||||
struct SimpleLightingData {
|
struct SimpleLightingData {
|
||||||
float4 l_color;
|
float4 l_color;
|
||||||
float3 light;
|
packed_float3 light;
|
||||||
float _pad;
|
float _pad;
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(struct SimpleLightingData, 16)
|
BLI_STATIC_ASSERT_ALIGN(struct SimpleLightingData, 16)
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
# define bool2 bvec2
|
# define bool2 bvec2
|
||||||
# define bool3 bvec3
|
# define bool3 bvec3
|
||||||
# define bool4 bvec4
|
# define bool4 bvec4
|
||||||
|
# define packed_float3 vec3
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#else /* C / C++ */
|
#else /* C / C++ */
|
||||||
|
@ -83,6 +84,7 @@ using bool1 = int;
|
||||||
using bool2 = blender::int2;
|
using bool2 = blender::int2;
|
||||||
using bool3 = blender::int3;
|
using bool3 = blender::int3;
|
||||||
using bool4 = blender::int4;
|
using bool4 = blender::int4;
|
||||||
|
using packed_float3 = blender::float3;
|
||||||
|
|
||||||
# else /* C */
|
# else /* C */
|
||||||
typedef float float2[2];
|
typedef float float2[2];
|
||||||
|
@ -99,6 +101,7 @@ typedef int bool1;
|
||||||
typedef int bool2[2];
|
typedef int bool2[2];
|
||||||
typedef int bool3[2];
|
typedef int bool3[2];
|
||||||
typedef int bool4[4];
|
typedef int bool4[4];
|
||||||
|
typedef float3 packed_float3;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue