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); }
// Start is called before the first frame update void Start() { _box = GetComponent <Box>(); _camera = Camera.main; _dither = FindObjectOfType <Dither>(); _box.SetVisible(false); }
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; }
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); } } } } } }
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; } }
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); }
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); }
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); }
// 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(); } } }
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); }
public OrderedDitherConverter(BmpImage data, int DitherMatrixPower) : base(data) { ditherMatrix = Dither.GenerateDitherMatrix(DitherMatrixPower); ditherMatrixSize = (int)Math.Pow(2, DitherMatrixPower); }
public OrderedDitherConverter(BmpImage data) : base(data) { ditherMatrix = Dither.GenerateDitherMatrix(1); ditherMatrixSize = 2; }
public void TestThrowsWhenArgumentInvalid() { Assert.Throws <ArgumentOutOfRangeException>(() => Dither.GenerateDitherMatrix(0)); }