// Standard 2D rotation formula. private static float2x2 Rotate2x2(float a) { float c = Hlsl.Cos(a); float s = Hlsl.Sin(a); return(new(c, -s, s, c)); }
public void Execute(ThreadIds ids) { B[0] = Hlsl.Sin(A); B[1] = Hlsl.Cos(A); Hlsl.SinCos(A, out float sine, out float cosine); B[2] = sine; B[3] = cosine; }
/// <inheritdoc/> public float4 Execute() { // Normalized screen space UV coordinates from 0.0 to 1.0 float2 uv = ThreadIds.Normalized.XY; // Time varying pixel color float3 col = 0.5f + 0.5f * Hlsl.Cos(time + new float3(uv, uv.X) + new float3(0, 2, 4)); // Output to screen return(new(col, 1f)); }
public void IntrinsicWithInlineOutParamater() { float angle = 80; using ReadWriteBuffer <float> buffer = Gpu.Default.AllocateReadWriteBuffer <float>(4); Action <ThreadIds> action = id => { buffer[0] = Hlsl.Sin(angle); buffer[1] = Hlsl.Cos(angle); Hlsl.SinCos(angle, out float sine, out float cosine); buffer[2] = sine; buffer[3] = cosine; };
/// <summary> /// Makes some magic happen. /// </summary> private float4 Tex(float3 p) { float t = time + 78.0f; float4 o = new(p.X, p.Y, p.Z, 3.0f * Hlsl.Sin(t * 0.1f)); float4 dec = new float4(1.0f, 0.9f, 0.1f, 0.15f) + new float4(0.06f * Hlsl.Cos(t * 0.1f), 0, 0, 0.14f * Hlsl.Cos(t * 0.23f)); for (int i = 0; i++ < NumberOfIterations;) { o.XZYW = Hlsl.Abs(o / Hlsl.Dot(o, o) - dec); } return(o); }
public void Execute(ThreadIds ids) { B[0] = Hlsl.Sin(A); B[1] = Hlsl.Cos(A); Hlsl.SinCos(A, out B[2], out B[3]); }
private static Float2x2 Rotate(float a) { float c = Hlsl.Cos(a), s = Hlsl.Sin(a); return(new(c, s, -s, c)); }