245 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
SamplerState       g_sSamp;
 | 
						|
 | 
						|
RWTexture1D <float> g_tTex1df1;
 | 
						|
RWTexture1D <int>   g_tTex1di1;
 | 
						|
RWTexture1D <uint>  g_tTex1du1;
 | 
						|
 | 
						|
RWTexture2D <float> g_tTex2df1;
 | 
						|
RWTexture2D <int>   g_tTex2di1;
 | 
						|
RWTexture2D <uint>  g_tTex2du1;
 | 
						|
 | 
						|
RWTexture3D <float> g_tTex3df1;
 | 
						|
RWTexture3D <int>   g_tTex3di1;
 | 
						|
RWTexture3D <uint>  g_tTex3du1;
 | 
						|
 | 
						|
RWTexture1DArray <float> g_tTex1df1a;
 | 
						|
RWTexture1DArray <int>   g_tTex1di1a;
 | 
						|
RWTexture1DArray <uint>  g_tTex1du1a;
 | 
						|
 | 
						|
RWTexture2DArray <float> g_tTex2df1a;
 | 
						|
RWTexture2DArray <int>   g_tTex2di1a;
 | 
						|
RWTexture2DArray <uint>  g_tTex2du1a;
 | 
						|
 | 
						|
RWBuffer <float> g_tBuffF;
 | 
						|
RWBuffer <int>   g_tBuffI;
 | 
						|
RWBuffer <uint>  g_tBuffU;
 | 
						|
 | 
						|
struct PS_OUTPUT
 | 
						|
{
 | 
						|
    float4 Color : SV_Target0;
 | 
						|
};
 | 
						|
 | 
						|
uniform uint  u1;
 | 
						|
uniform uint2 u2;
 | 
						|
uniform uint3 u3;
 | 
						|
uniform uint  u1b;
 | 
						|
uniform uint  u1c;
 | 
						|
 | 
						|
uniform int   i1;
 | 
						|
uniform int2  i2;
 | 
						|
uniform int3  i3;
 | 
						|
uniform int   i1b;
 | 
						|
uniform int   i1c;
 | 
						|
 | 
						|
PS_OUTPUT main()
 | 
						|
{
 | 
						|
    uint out_u1;
 | 
						|
    int out_i1;
 | 
						|
 | 
						|
    // 1D int
 | 
						|
    InterlockedAdd(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedAdd(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedAnd(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tTex1di1[i1], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedMax(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedMax(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedMin(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedMin(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedOr(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedOr(g_tTex1di1[i1], i1, out_i1);
 | 
						|
    InterlockedXor(g_tTex1di1[i1], i1b);
 | 
						|
    InterlockedXor(g_tTex1di1[i1], i1, out_i1);
 | 
						|
 | 
						|
    // 1D uint
 | 
						|
    InterlockedAdd(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedAdd(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedAnd(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tTex1du1[u1], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedMax(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedMax(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedMin(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedMin(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedOr(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedOr(g_tTex1du1[u1], u1, out_u1);
 | 
						|
    InterlockedXor(g_tTex1du1[u1], u1);
 | 
						|
    InterlockedXor(g_tTex1du1[u1], u1, out_u1);
 | 
						|
 | 
						|
    // 2D int
 | 
						|
    InterlockedAdd(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedAdd(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedAnd(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tTex2di1[i2], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedMax(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedMax(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedMin(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedMin(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedOr(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedOr(g_tTex2di1[i2], i1, out_i1);
 | 
						|
    InterlockedXor(g_tTex2di1[i2], i1b);
 | 
						|
    InterlockedXor(g_tTex2di1[i2], i1, out_i1);
 | 
						|
 | 
						|
    // 2D uint
 | 
						|
    InterlockedAdd(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedAdd(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedAnd(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tTex2du1[u2], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedMax(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedMax(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedMin(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedMin(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedOr(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedOr(g_tTex2du1[u2], u1, out_u1);
 | 
						|
    InterlockedXor(g_tTex2du1[u2], u1);
 | 
						|
    InterlockedXor(g_tTex2du1[u2], u1, out_u1);
 | 
						|
 | 
						|
    // 3D int
 | 
						|
    InterlockedAdd(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedAdd(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedAnd(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tTex3di1[i3], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedMax(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedMax(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedMin(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedMin(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedOr(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedOr(g_tTex3di1[i3], i1, out_i1);
 | 
						|
    InterlockedXor(g_tTex3di1[i3], i1b);
 | 
						|
    InterlockedXor(g_tTex3di1[i3], i1, out_i1);
 | 
						|
 | 
						|
    // 3D uint
 | 
						|
    InterlockedAdd(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedAdd(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedAnd(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tTex3du1[u3], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedMax(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedMax(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedMin(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedMin(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedOr(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedOr(g_tTex3du1[u3], u1, out_u1);
 | 
						|
    InterlockedXor(g_tTex3du1[u3], u1);
 | 
						|
    InterlockedXor(g_tTex3du1[u3], u1, out_u1);
 | 
						|
 | 
						|
    // 1D array int
 | 
						|
    InterlockedAdd(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedAdd(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedAnd(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedMax(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedMax(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedMin(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedMin(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedOr(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedOr(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedXor(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedXor(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
 | 
						|
    // 1D array uint
 | 
						|
    InterlockedAdd(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedAdd(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedAnd(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedMax(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedMax(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedMin(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedMin(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedOr(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedOr(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedXor(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedXor(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
 | 
						|
    // 2D array int
 | 
						|
    InterlockedAdd(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedAdd(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedAnd(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedMax(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedMax(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedMin(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedMin(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedOr(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedOr(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
    InterlockedXor(g_tTex1di1a[i2], i1b);
 | 
						|
    InterlockedXor(g_tTex1di1a[i2], i1, out_i1);
 | 
						|
 | 
						|
    // 2D array uint
 | 
						|
    InterlockedAdd(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedAdd(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedAnd(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedMax(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedMax(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedMin(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedMin(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedOr(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedOr(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
    InterlockedXor(g_tTex1du1a[u2], u1);
 | 
						|
    InterlockedXor(g_tTex1du1a[u2], u1, out_u1);
 | 
						|
 | 
						|
    // buffer int
 | 
						|
    InterlockedAdd(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedAdd(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedAnd(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedAnd(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedCompareExchange(g_tBuffI[i1], i1b, i1c, out_i1);
 | 
						|
    InterlockedExchange(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedMax(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedMax(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedMin(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedMin(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedOr(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedOr(g_tBuffI[i1], i1, out_i1);
 | 
						|
    InterlockedXor(g_tBuffI[i1], i1b);
 | 
						|
    InterlockedXor(g_tBuffI[i1], i1, out_i1);
 | 
						|
 | 
						|
    // buffer uint
 | 
						|
    InterlockedAdd(g_tBuffU[u1], u1);
 | 
						|
    InterlockedAdd(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedAnd(g_tBuffU[u1], u1);
 | 
						|
    InterlockedAnd(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedCompareExchange(g_tBuffU[u1], u1b, u1c, out_u1);
 | 
						|
    InterlockedExchange(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedMax(g_tBuffU[u1], u1);
 | 
						|
    InterlockedMax(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedMin(g_tBuffU[u1], u1);
 | 
						|
    InterlockedMin(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedOr(g_tBuffU[u1], u1);
 | 
						|
    InterlockedOr(g_tBuffU[u1], u1, out_u1);
 | 
						|
    InterlockedXor(g_tBuffU[u1], u1);
 | 
						|
    InterlockedXor(g_tBuffU[u1], u1, out_u1);
 | 
						|
 | 
						|
    PS_OUTPUT psout;
 | 
						|
    psout.Color = 1.0;
 | 
						|
    return psout;
 | 
						|
}
 |