public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
    {
        if (ditherMat == null)
        {
            Debug.LogError("Material not created.");
            return;
        }

        if (!renderingData.cameraData.postProcessEnabled)
        {
            return;
        }

        var stack = VolumeManager.instance.stack;

        dither = stack.GetComponent <Dither>();
        if (dither == null)
        {
            return;
        }
        if (!dither.IsActive())
        {
            return;
        }

        var cmd = CommandBufferPool.Get(k_RenderTag);

        Render(cmd, ref renderingData);
        context.ExecuteCommandBuffer(cmd);
        CommandBufferPool.Release(cmd);
    }
Esempio n. 2
0
 // Start is called before the first frame update
 void Start()
 {
     _box    = GetComponent <Box>();
     _camera = Camera.main;
     _dither = FindObjectOfType <Dither>();
     _box.SetVisible(false);
 }
Esempio n. 3
0
    void Start()
    {
        cameraForOps = GameObject.Find("Camera");
        retroS       = cameraForOps.GetComponent <RetroSize>();
        retroS.horizontalResolution = Screen.width / 4;
        retroS.verticalResolution   = Screen.height / 4;
        post   = cameraForOps.GetComponent <Posterize>();
        dither = cameraForOps.GetComponent <Dither>();
        stats  = GetComponent <Statistics>();
        inv    = GetComponent <Inventory>();
        refreshStats();
        Cursor.lockState = CursorLockMode.Locked;
        movement         = mouseController;
        movement        += movementController;
        tick             = 0;
        statsPage        = stats.updateStatPage();
        equipTextures    = new Texture2D[10];
        reach            = stats.meleeReach;
        guiStyle         = new GUIStyle();
        tx = new Texture2D(1, 1);



        //if (!isLocalPlayer)
        //    disableCamHud();

        //style = new GUIStyle();
        //style.alignment = TextAnchor.UpperCenter;
    }
Esempio n. 4
0
        protected override void ConvertBitmapData()
        {
            int scale = (int)Math.Pow(2, Power);

            Image.Data.Width  = Image.Data.Width * scale;
            Image.Data.Height = Image.Data.Height * scale;
            Image.Data.Data   = new byte[Image.Data.GetRealSize()];

            int[,] ditherMatrix = Dither.GenerateDitherMatrix(Power);

            for (int i = 0; i < oldData.Width; i++)
            {
                for (int k = 0; k < oldData.Height; k++)
                {
                    byte oldValue  = oldData.Get8BitDataAt(i, k);
                    int  threshold = (int)((double)oldValue / 255 * scale);
                    for (int m = 0; m < scale; m++)
                    {
                        for (int n = 0; n < scale; n++)
                        {
                            if (threshold >= ditherMatrix[m, n])
                            {
                                Image.Data.Set1BitDataAt(i * scale + m, k * scale + n, true);
                            }
                            else
                            {
                                Image.Data.Set1BitDataAt(i * scale + m, k * scale + n, false);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
    void OnPreprocessTexture()
    {
        var importer = (assetImporter as TextureImporter);

        if (Dither.isDither(assetPath))
        {
            importer.textureType   = TextureImporterType.Default;
            importer.npotScale     = TextureImporterNPOTScale.ToNearest;
            importer.isReadable    = false;
            importer.textureFormat = TextureImporterFormat.RGBA32;
        }
    }
Esempio n. 6
0
    static public void reloadDitherTexture()
    {
        Dither.generateDitherList();
        List <string> reloadList = Dither.getDitherList();
        string        prePath    = CommonDefine.A_RESOURCE_PATH + "Texture/TextureAnim/";
        int           pathCount  = reloadList.Count;

        for (int i = 0; i < pathCount; ++i)
        {
            reloadPath(prePath + reloadList[i] + "/");
        }
        Dither.clearDitherList();
    }
    static void Main(string[] args)
    {
        var settle = new Settle {
            Pixels = 1.5, Time = 8, Timeout = 40
        };
        var parameterList = new ArrayList {
            10, false, settle
        };
        var dither = new Dither {
            Method = "dither", Parameters = parameterList, Id = 42
        };

        string temp = JsonConvert.SerializeObject(dither);
    }
Esempio n. 8
0
    public DemoCanvas()
    {
        startTime = DateTime.Now;

        string message = " --- POWERED BY LIBCACA --- OLDSCHOOL TEXT EFFECTS ARE 100% PURE WIN";

        scroll = new Canvas(new Size(message.Length, 1));
        scroll.setColorAnsi(AnsiColor.WHITE, AnsiColor.TRANSPARENT);
        scroll.putStr(new Point(0, 0), message);

        Caca.Font f = new Caca.Font(Caca.Font.getList()[1]);
        int w = f.Size.Width * message.Length;
        int h = f.Size.Height;
        image = new uint[w, h];
        d = new Dither(32, new Size(w, h), w * 4,
                            0xff00, 0xff0000, 0xff000000, 0xff);
        f.Render(scroll, image, image.GetLength(0) * 4);
    }
Esempio n. 9
0
        public void TestGenerateDitherMatrix()
        {
            var matrix = Dither.GenerateDitherMatrix(1);

            Assert.Equal(new int[2, 2]
            {
                { 0, 2 },
                { 3, 1 }
            }, matrix);
            matrix = Dither.GenerateDitherMatrix(2);
            Assert.Equal(new int[4, 4]
            {
                { 0, 8, 2, 10 },
                { 12, 4, 14, 6 },
                { 3, 11, 1, 9 },
                { 15, 7, 13, 5 }
            }, matrix);
        }
Esempio n. 10
0
    public DemoCanvas()
    {
        startTime = DateTime.Now;

        string message = " --- POWERED BY LIBCACA --- OLDSCHOOL TEXT EFFECTS ARE 100% PURE WIN";

        scroll = new Canvas(new Size(message.Length, 1));
        scroll.setColorAnsi(AnsiColor.WHITE, AnsiColor.TRANSPARENT);
        scroll.putStr(new Point(0, 0), message);

        Caca.Font f = new Caca.Font(Caca.Font.getList()[1]);
        int       w = f.Size.Width * message.Length;
        int       h = f.Size.Height;

        image = new uint[w, h];
        d     = new Dither(32, new Size(w, h), w * 4,
                           0xff00, 0xff0000, 0xff000000, 0xff);
        f.Render(scroll, image, image.GetLength(0) * 4);
    }
Esempio n. 11
0
    // Update is called once per frame
    void Update()
    {
        if (_dither == null)
        {
            _dither = FindObjectOfType <Dither>();
        }

        if (_active)
        {
            Vector3 pos = _camera.ScreenToWorldPoint(Input.mousePosition);

            int centerX = (int)Mathf.Clamp(pos.x, boxLeftBound + boxWidth, boxRightBound - boxWidth);
            int centerY = (int)Mathf.Clamp(pos.y, boxBottomBound + boxHeight, boxTopBound - boxHeight);
            _box.SetBoxCoords(centerY + boxHeight, centerY - boxHeight, centerX - boxWidth, centerX + boxWidth);

            if (Input.GetMouseButtonDown(0))
            {
                if (pos.y < boxTopBound && pos.y > boxBottomBound && pos.x < boxRightBound && pos.x > boxLeftBound)
                {
                    Vector3 topLeft = new Vector3(
                        Mathf.Clamp01((pos.x - (boxLeftBound + boxWidth)) / ((boxRightBound - boxWidth) - (boxLeftBound + boxWidth))),
                        Mathf.Clamp01((pos.y - (boxBottomBound + boxHeight)) / ((boxTopBound - boxHeight) - (boxBottomBound + boxHeight))), 0);

                    Debug.Log(pos);
                    _dither.ZoomIn(topLeft);
                    _zoomLevel = _dither.GetZoom();
                }
                Deactivate();
            }
            else if (Input.GetMouseButtonDown(1))
            {
                Deactivate();
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(1) && _zoomLevel != 0)
            {
                _dither.ZoomOut();
                _zoomLevel = _dither.GetZoom();
            }
        }
    }
Esempio n. 12
0
    void OnPostprocessTexture(Texture2D texture)
    {
        if (!Dither.isDither(assetPath))
        {
            return;
        }

        var texw = texture.width;
        var texh = texture.height;

        var pixels = texture.GetPixels();
        var offs   = 0;

        var k1Per15 = 1.0f / 15.0f;
        var k1Per16 = 1.0f / 16.0f;
        var k3Per16 = 3.0f / 16.0f;
        var k5Per16 = 5.0f / 16.0f;
        var k7Per16 = 7.0f / 16.0f;

        for (var y = 0; y < texh; ++y)
        {
            for (var x = 0; x < texw; ++x)
            {
                float a = pixels[offs].a;
                float r = pixels[offs].r;
                float g = pixels[offs].g;
                float b = pixels[offs].b;

                var a2 = Mathf.Clamp01(Mathf.Floor(a * 16) * k1Per15);
                var r2 = Mathf.Clamp01(Mathf.Floor(r * 16) * k1Per15);
                var g2 = Mathf.Clamp01(Mathf.Floor(g * 16) * k1Per15);
                var b2 = Mathf.Clamp01(Mathf.Floor(b * 16) * k1Per15);

                var ae = a - a2;
                var re = r - r2;
                var ge = g - g2;
                var be = b - b2;

                pixels[offs].a = a2;
                pixels[offs].r = r2;
                pixels[offs].g = g2;
                pixels[offs].b = b2;

                var n1 = offs + 1;
                var n2 = offs + texw - 1;
                var n3 = offs + texw;
                var n4 = offs + texw + 1;

                if (x < texw - 1)
                {
                    pixels[n1].a += ae * k7Per16;
                    pixels[n1].r += re * k7Per16;
                    pixels[n1].g += ge * k7Per16;
                    pixels[n1].b += be * k7Per16;
                }

                if (y < texh - 1)
                {
                    pixels[n3].a += ae * k5Per16;
                    pixels[n3].r += re * k5Per16;
                    pixels[n3].g += ge * k5Per16;
                    pixels[n3].b += be * k5Per16;

                    if (x > 0)
                    {
                        pixels[n2].a += ae * k3Per16;
                        pixels[n2].r += re * k3Per16;
                        pixels[n2].g += ge * k3Per16;
                        pixels[n2].b += be * k3Per16;
                    }
                    if (x < texw - 1)
                    {
                        pixels[n4].a += ae * k1Per16;
                        pixels[n4].r += re * k1Per16;
                        pixels[n4].g += ge * k1Per16;
                        pixels[n4].b += be * k1Per16;
                    }
                }
                ++offs;
            }
        }
        texture.SetPixels(pixels);
        EditorUtility.CompressTexture(texture, TextureFormat.RGBA4444, TextureCompressionQuality.Best);
    }
Esempio n. 13
0
 public OrderedDitherConverter(BmpImage data, int DitherMatrixPower) : base(data)
 {
     ditherMatrix     = Dither.GenerateDitherMatrix(DitherMatrixPower);
     ditherMatrixSize = (int)Math.Pow(2, DitherMatrixPower);
 }
Esempio n. 14
0
 public OrderedDitherConverter(BmpImage data) : base(data)
 {
     ditherMatrix     = Dither.GenerateDitherMatrix(1);
     ditherMatrixSize = 2;
 }
Esempio n. 15
0
 public void TestThrowsWhenArgumentInvalid()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => Dither.GenerateDitherMatrix(0));
 }