public unsafe void CompilePixelateEffectWithDefaultOptions() { const string source = @" #define D2D_INPUT_COUNT 1 #define D2D_INPUT0_COMPLEX #define D2D_REQUIRES_SCENE_POSITION #include ""d2d1effecthelpers.hlsli"" struct ComputeSharp_D2D1_Tests_Effects_PixelateEffect_Shader_Constants { int inputWidth; int inputHeight; int cellSize; }; ComputeSharp_D2D1_Tests_Effects_PixelateEffect_Shader_Constants constants; D2D_PS_ENTRY(PSMain) { float2 scenePos = D2DGetScenePosition().xy; uint x = (uint)floor(scenePos.x); uint y = (uint)floor(scenePos.y); int cellX = (int)floor(x / constants.cellSize); int cellY = (int)floor(y / constants.cellSize); int x0 = cellX * constants.cellSize; int y0 = cellY * constants.cellSize; int x1 = min(constants.inputWidth, x0 + constants.cellSize) - 1; int y1 = min(constants.inputHeight, y0 + constants.cellSize) - 1; float4 sample0 = D2DSampleInputAtPosition(0, int2(x0, y0)); float4 sample1 = D2DSampleInputAtPosition(0, int2(x1, y0)); float4 sample2 = D2DSampleInputAtPosition(0, int2(x0, y1)); float4 sample3 = D2DSampleInputAtPosition(0, int2(x1, y1)); float4 color = (sample0 + sample1 + sample2 + sample3) / 4; return color; }"; ReadOnlyMemory <byte> bytecode = D2D1ShaderCompiler.Compile( source, "PSMain", D2D1ShaderProfile.PixelShader40, D2D1CompileOptions.Default); Assert.IsTrue(bytecode.Length > 0); }
public unsafe void CompileInvertEffectWithErrors() { const string source = @" #define D2D_INPUT_COUNT 1 #define D2D_INPUT0_SIMPLE #include ""d2d1effecthelpers.hlsli"" D2D_PS_ENTRY(PSMain) { float4 color = D2DGetInput(99); float3 rgb2 = saturate(1.0 - color.rgb); return float4(rgb, 1, 4.0); }"; ReadOnlyMemory <byte> bytecode = D2D1ShaderCompiler.Compile( source, "PSMain", D2D1ShaderProfile.PixelShader40Level93, D2D1CompileOptions.Default); Assert.IsTrue(bytecode.Length > 0); }