Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Administrator
HLSL-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
sampler2D implicitInput : register(s0); float4 GetNeighborPixel(float2 uv, float2 pixelOffset) { float2 PixelSize = float2(10.0, 10.0); float2 normalizedPixel = 1.0 / PixelSize; return tex2D(implicitInput, uv + normalizedPixel * pixelOffset); } float GetIntensity(float4 pixel) { float intensity = (pixel.r + pixel.g + pixel.b) / 3.0; return intensity; } float4 main(float2 uv : TEXCOORD) : COLOR { float2 PixelSize = float2(10.0, 10.0); float2 normalizedPixel = 1.0 / PixelSize; int2 position = uv / normalizedPixel; float3x3 pixelMatrix; pixelMatrix._11 = GetIntensity(GetNeighborPixel(uv, float2(-1.0,-1.0))); pixelMatrix._21 = GetIntensity(GetNeighborPixel(uv, float2(-1.0, 0.0))); pixelMatrix._31 = GetIntensity(GetNeighborPixel(uv, float2(-1.0, 1.0))); pixelMatrix._12 = GetIntensity(GetNeighborPixel(uv, float2( 0.0,-1.0))); pixelMatrix._22 = GetIntensity(GetNeighborPixel(uv, float2( 0.0, 0.0))); pixelMatrix._32 = GetIntensity(GetNeighborPixel(uv, float2( 0.0, 1.0))); pixelMatrix._13 = GetIntensity(GetNeighborPixel(uv, float2( 1.0,-1.0))); pixelMatrix._23 = GetIntensity(GetNeighborPixel(uv, float2( 1.0, 0.0))); pixelMatrix._33 = GetIntensity(GetNeighborPixel(uv, float2( 1.0, 1.0))); float4 result = pixelMatrix._22; if (((int)position.x % 2) == 1 && ((int)position.y % 2) == 0) { // Position: Blue result.r = (pixelMatrix._11 + pixelMatrix._13 + pixelMatrix._33 + pixelMatrix._31) / 4.0; result.g = (pixelMatrix._21 + pixelMatrix._12 + pixelMatrix._23 + pixelMatrix._32) / 4.0; result.b = pixelMatrix._22; } else if (((int)position.x % 2) == 0 && ((int)position.y % 2) == 1) { // Position: Red result.r = pixelMatrix._22; result.g = (pixelMatrix._21 + pixelMatrix._12 + pixelMatrix._23 + pixelMatrix._32) / 4.0; result.b = (pixelMatrix._11 + pixelMatrix._13 + pixelMatrix._33 + pixelMatrix._31) / 4.0; } else if (((int)position.x % 2) == 0 && ((int)position.y % 2) == 0) { // Position: Green result.r = (pixelMatrix._12 + pixelMatrix._32) / 2.0; result.g = (pixelMatrix._11 + pixelMatrix._13 + pixelMatrix._33 + pixelMatrix._31) / 4.0; result.b = (pixelMatrix._21 + pixelMatrix._23) / 2.0; } else if (((int)position.x % 2) == 1 && ((int)position.y % 2) == 1) { // Position: Green result.r = (pixelMatrix._21 + pixelMatrix._23) / 2.0; result.g = (pixelMatrix._11 + pixelMatrix._13 + pixelMatrix._33 + pixelMatrix._31) / 4.0; result.b = (pixelMatrix._12 + pixelMatrix._32) / 2.0; } if (position.y == 0) { if(position.x == 0) { return float4(0.63, 0.79, 0.20, 1); } else if(position.x == 1) { return float4(0.62, 0.80, 0.20, 1); } else if(position.x == 2) { return float4(0.62, 0.82, 0.21, 1); } else if(position.x == 3) { return float4(0.62, 0.83, 0.21, 1); } else if(position.x == 4) { return float4(0.62, 0.80, 0.20, 1); } else if(position.x == 5) { return float4(0.62, 0.82, 0.21, 1); } else if(position.x == 6) { return float4(0.61, 0.79, 0.21, 1); } else if(position.x == 7) { return float4(0.61, 0.78, 0.21, 1); } else if(position.x == 8) { return float4(0.63, 0.79, 0.21, 1); } else if(position.x == 9) { return float4(0.63, 0.80, 0.20, 1); } } return float4(result.rgb, 1); } |
Administrator
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fexis« (24.01.2019, 14:19)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sylence« (24.01.2019, 20:00)
Administrator
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
WriteableBitmap ImageStream = img; Rectangle r = new Rectangle(); r.Fill = new ImageBrush(ImageStream); r.Effect = new SDK.Media.Effect.DebayeringEffect() { PixelSize = new Size(ImageStream.Width, ImageStream.Height) }; Size sz = new Size(ImageStream.PixelWidth, ImageStream.PixelHeight); r.Measure(sz); r.Arrange(new Rect(sz)); RenderTargetBitmap rtb = new RenderTargetBitmap(ImageStream.PixelWidth, ImageStream.PixelHeight, ImageStream.DpiX, ImageStream.DpiY, PixelFormats.Pbgra32); rtb.Render(r); byte[] pixelData = new byte[ImageStream.PixelWidth * ImageStream.PixelHeight * 4]; rtb.CopyPixels(pixelData, ImageStream.PixelWidth * 4, 0); ImageStream.Lock(); ImageStream.WritePixels(new Int32Rect(0, 0, ImageStream.PixelWidth, ImageStream.PixelHeight), pixelData, ImageStream.BackBufferStride, 0); ImageStream.AddDirtyRect(new Int32Rect(0, 0, ImageStream.PixelWidth, ImageStream.PixelHeight)); ImageStream.Unlock(); |
HLSL-Quelltext |
|
1 2 3 4 5 6 |
sampler2D implicitInput : register(s0) = sampler_state { MipFilter = POINT; MagFilter = POINT; MinFilter = POINT; }; |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Fexis« (28.01.2019, 15:18)
Werbeanzeige