public void Draw(IBitmap canvas) { for (var x = 0; x < canvas.Width; x++) { for (var y = 0; y < canvas.Height; y++) { var position = _coordinateConverter.Convert(new Vector2Int(x, y)); if (!Physics.Raycast(position, Vector3.down, out var hit, RAYCAST_DISTANCE, _raycastMask, QueryTriggerInteraction.Ignore)) { continue; } var materialBitmap = _materialSource.GetTexture(hit.collider.gameObject.name.ToLower()); if (materialBitmap == null) { continue; } canvas.SetPixel(x, y, NormalColorBlending.Instance.Blend(canvas.GetPixel(x, y), materialBitmap.GetPixel(x, y))); } } }