Color Quantization and Dithering

  Рет қаралды 391,094

Acerola

Acerola

2 жыл бұрын

In this third installment of the post processing series we learn how all these indie games have been faking their pixel art. Topics covered include texture filtering, bayer dithering, color palette quantization, sharpness, and color palette swapping.
Support me on Patreon!
/ acerola_t
Twitter: / acerola_t
Twitch: / acerola_t
Code: github.com/GarrettGunnell/Pos...
Join My Discord Server! / discord
Music:
Joy - Persona 3 OST
During The Test - Persona 3 OST
Afternoon Break - Persona 3 OST
Sandgem Town (Day) - Pokemon Diamond/Pearl OST
This Mysterious Feeling - Persona 3 OST
New Game - World Of Horror OST
Blow Me Away - Cover by @LittleVMills
Thanks for watching!
This video is dedicated to my friend, Alotryx.
#acerola #gamedev #graphics #unity #unity3d #madewithunity #indiedev #unity2d #shader #pixelart

Пікірлер: 410
@Acerola_t
@Acerola_t 2 жыл бұрын
Please let me know if this video is too shitpost-y lmao
@_zurr
@_zurr 2 жыл бұрын
Never
@gonderage
@gonderage Жыл бұрын
no, it's shitposty enough. i freaking love the windows movie maker montage of a sheik rendered in different ways
@Acerola_t
@Acerola_t Жыл бұрын
@@gonderage thanks I really peaked with that
@dawnrock2391
@dawnrock2391 Жыл бұрын
Yeah the meme cut-ins are funny af, needs more shitposting
@TavishMcEwen
@TavishMcEwen Жыл бұрын
It's great, loving it
@Gymomanen
@Gymomanen 2 жыл бұрын
The windows movie maker montage with Blow Me Away was spot on. Thanks for the nostalgia 😂
@mou.2
@mou.2 Жыл бұрын
All it was missing was some "unregistered hypercam 2" in the corner.
@magnushmann
@magnushmann Жыл бұрын
@@mou.2 Except it wouldn't be a screen recording, but a purely windows movie maker production, so that wouldn't really make sense. Unless you for some reason recorded your final video with the screen recorder instead of just exporting it properly.
@devRat
@devRat Жыл бұрын
I started laugh crying. I think I made the exact montage when I was in highschool...
@2iinfinite
@2iinfinite Жыл бұрын
Or paralyzer
@gigawattsfactory6777
@gigawattsfactory6777 Жыл бұрын
The memories you brought back by doing the windows movie maker bit was Insane. Thank you.
@ddnava96
@ddnava96 Жыл бұрын
Fun fact: Madeline (Celeste) is a combination of pixel art and 3D (or actuallh 2D). Her body and face are made of sprites but her hair is actually a flat 3D model
@GLEPCHANNEL
@GLEPCHANNEL 11 ай бұрын
source?
@ddnava96
@ddnava96 11 ай бұрын
@@GLEPCHANNEL. I don't have a link for you, but you can easily find videos in KZbin that show how the game renders certain things, including Madeline's hair, lighting, etc
@TheRealAnsontp
@TheRealAnsontp 9 ай бұрын
I love spline 3D animation for hair
@fiskurtjorn7530
@fiskurtjorn7530 Жыл бұрын
10:57 To me, this feels odd with a .5 step in the middle. I would have chosen [0.00] [0.33] [0.66] [1.00], but I also experienced my visual system playing nasty tricks on me.
@JoBot__
@JoBot__ Жыл бұрын
I agree.
@RosarioLeonardi
@RosarioLeonardi Жыл бұрын
Is preferable to sample a pixel in the middle most of the time. So pixel 0 become 0.5 and pixel 3 becomes 3.5. Divided by the total number of pixels (4) you get a nice and uniform [0.125; 0.375; 0.625; 0.875].
@stevethe3307
@stevethe3307 Жыл бұрын
Thank you soo much, I developed one heck of a headache trying to even find the correct terms to describe what I was attempting to do (restrict all colors on screen after dynamic lights and such to my color pallet). At one point thought I was going to have to go for some out of the box or super inefficient brute force solution but your vid showed me the correct most efficient way in terms I could actually understand! Definitely subbing for that alone, keep up the good work man.
@Acerola_t
@Acerola_t Жыл бұрын
Thanks! Dithering is my comfort effect lol I will take any chance I can get to talk about it.
@suop1234
@suop1234 5 ай бұрын
same, i only just remembered that acerola literally made a whole video on it... thanks acerola!
@realastropulse
@realastropulse Жыл бұрын
This is pretty interesting. As an experienced pixel artist, pixel art faker, and pixel art gatekeeper, this is a great description of how it works. I actually put together my own Blender based shader that I use for 3D -> pixel art work. Really cuts down on time, especially for animations. One thing that you can do to improve 3D scenes is actually use the depth buffer to apply some outline/darkening effects. Another trick is to use more solid blocks of color, because anything too detailed creates noise. This is why in games that use this style the objects typically have one color per section of the model.
@guitarguyjones
@guitarguyjones Жыл бұрын
Fun fact, the last handful of pixel-art King of Fighters games also used 3D models to create the animations (like Dead Cells and other newer games), but instead of using an automated process to convert the models to sprites, SNK's artists did it all by hand, redrawing everything in 2D, frame by frame.
@noskillpureandy
@noskillpureandy Жыл бұрын
4:45 correction, that would be 1-bit. 2-bit would be black, dark gray, light gray, white (00, 01, 10, 11)
@Nayckron
@Nayckron Жыл бұрын
I loved the montage section, you have the perfect combination of educational, humourous and good editing.
@anthonysilveira6181
@anthonysilveira6181 Жыл бұрын
You're videos are fire, it's so interesting actually seeing the math that creates these effects.
@mrgreenskypiano
@mrgreenskypiano Жыл бұрын
I love the combination of shitposting and still explaining how everything works in enough detail that I understood most of the concepts first try. Great video!
@skylarcanode-rhodes9771
@skylarcanode-rhodes9771 Жыл бұрын
Just found you yesterday! I'm looking forward to seeing more of your videos, keep up the good work! 😃
@KingBobXVI
@KingBobXVI Жыл бұрын
The dithering bit is super interesting, I've never actually looked into how to do it on non-ascii-art images before, lol. For the pixelization bit though, is there a specific reason to do down-sampling at all? It seems like it would be much easier (and more efficient) to render at, say, 1/4 scale and up-sample it instead (which may also avoid some artifacting you can get from nearest neighbor down-sampling).
@Acerola_t
@Acerola_t Жыл бұрын
Yeah that would be more efficient, I like having it parameterizable in the shader though since then this effect could be used as a photo mode effect for a game that isn't specifically made to look like this. For example, I ported the effect over to ReShade for use in Final Fantasy XIV but if it was reliant on rendering at a lower resolution then the effect wouldn't work there.
@razeenag8478
@razeenag8478 Жыл бұрын
Your channel is an absolute gem, educative and entertaining!!
@AutisticYui
@AutisticYui Жыл бұрын
Pretty much just binged all your videos, great stuff. Fun style and approach to the topic. Thanks for stressing the importance of optimization.
@evgenyaleksandrov1206
@evgenyaleksandrov1206 Жыл бұрын
Your fascinating manner of explaining and good taste makes this interesting concept even more amazing. Thanks. I hit a subscribe button after first thing I saw from you.
@JulsGeekPI
@JulsGeekPI Жыл бұрын
very good work for the video, the formulas, the detailed explanation of the algorithm, thanks master Acerola, also the music and the relaxed mode of teaching.
@thecompl33tnoob
@thecompl33tnoob Ай бұрын
I'm writing up my very first game design documentation and thought just yesterday "damn, I wish there was an Acerola video on converting 3D assets to pixel art, I should stop by the channel." and BOOM the heavens opened and this absolute jewel of a video came soaring down. I have no idea how I missed this one, as I've watched nearly everything on your channel. Please keep going man, your content is supremely helpful and immensely entertaining. The nostalgia hit hard on that montage. 😂😂😂
@5alpha23
@5alpha23 Жыл бұрын
I don't know why this landed in my recommended videos but boy am I glad it did! - Perfect video for a Sunday afternoon, at least in my case. 😁 Your tongue-in-cheek approach is really refreshing. 🙂
@loremaster1253
@loremaster1253 2 жыл бұрын
Great video! Really helpful given how popular the pixel look is in modern indie design.
@dmnkb
@dmnkb Жыл бұрын
This gave me some fantastic mid-2000 vibes, thanks for that! Kinda reminds me of how much more fun the internet used to be back then. Thanks for your detailed explanations, really inspiring!!
@peppidesu
@peppidesu Жыл бұрын
2:51 Mipmaps are copies of the original texture scaled down by some factor. Because the pixels being sampled at a large distance change rapidly when the camera moves around, using the original texture would introduce noise to the texture. So instead, a mipmap is used in its place depending on how far away / how small the texture is. Switching between mipmaps causes banding artifacts at the distance boundaries, though. to counter that, *trilinear filtering* is used, which fades textures from one mipmap to the next. But there is another problem. The copies of the textures are scaled down by the same amount on both X and Y axis, a.k.a. they are scaled isotropically. If a texture were to be scaled down a lot on one axis, but stay the same on the other axis (for example when you stand close to a wall) the texture becomes more blurred than normal because the mipmap used is too small. *Anisotropic Filtering* takes care of that, by making copies for every combination of X and Y scalings. Side note: The term anisotropic filtering is actually not correct because it isn't a filtering mode. It is a alternative way of generating mipmaps. In other words, you can use anisotropic mipmaps with point filtering (that is, if your GPU and graphics API support that), they are not mutually exclusive like bilinear and trilinear filtering would be.
@fungo6631
@fungo6631 Жыл бұрын
There's yet another problem you forgot to mention. Textures consume fillrate. Fillrate doesn't grow on trees. Mimpaps also reduce the fillrate requirements for distant objects that don't require as much fillrate. This allows you to add more detail where it matters with the same performance.
@Marcos42563
@Marcos42563 Жыл бұрын
@@fungo6631 Fillrate?
@fungo6631
@fungo6631 Жыл бұрын
@@Marcos42563 Yes, fillrate. What's so strange here?
@ShinyVeggie
@ShinyVeggie Жыл бұрын
@@fungo6631 He doesn't know what fillrate is/means and was hoping for you to expand on it instead of googling it himself.
@Krilium
@Krilium Жыл бұрын
Simplified: Mipmaps are a set of images, each half the size of the last. When the camera is far enough away (among other reasons), the lower resolution versions fade in. This is to save memory, and to avoid weird artefacts.
@SamiTheAnxiousBean
@SamiTheAnxiousBean Жыл бұрын
As a pixel artist this was a extemely Interasting watch thank you for the incredible presentation
@feelshowdy
@feelshowdy Жыл бұрын
Great video. I know my way around Photoshop so I'm familiar with these effects, and they're actually so useful for practicing art. What I do is I pass my references through a downsamping filter to reduce the number of colors. When the reference is simplified like that, it helps me a lot with understanding how to shade and color everything.
@nicholasjones7822
@nicholasjones7822 Жыл бұрын
if possible, would be cool to see limited anti-aliasing as well to smoothen out the sometimes sharp edges of the sprite
@microdavid7098
@microdavid7098 Жыл бұрын
such a detailed video. I love it. I don't use unity but have learned a lot about how things work from it
@samueldavies646
@samueldavies646 Жыл бұрын
the dither explination was amazing, I found it super interesting!
@SwifterYT
@SwifterYT Жыл бұрын
This channel's very addicting, wanting to get into shaders soon so this stuff will be helpful. Thanks!!
@DanTDMs-homunculus
@DanTDMs-homunculus Жыл бұрын
you just popped up on my recommended and i gotta say i love your editing, your style is just very cool and nice to look at thanks for making things
@Acerola_t
@Acerola_t Жыл бұрын
Thank you!
@DanTDMs-homunculus
@DanTDMs-homunculus Жыл бұрын
@@Acerola_t 👍
@aiden_3c
@aiden_3c Жыл бұрын
I actually really love this video, also how you actually talk about the math now I understand how I'd do some shader shit like this. Thank you
@sparkymcsparkerton8109
@sparkymcsparkerton8109 Жыл бұрын
I literally almost never comment on KZbin. You can fact check that if you like. But, I could not resist sending you a message to say I love everything about your videos. Like literally everything. It is edutainment [chef finger kiss]. I didn’t even skip the ads because it’s the literal least amount of “work” I could do to pay you with my attention. And I never don’t skip the ads. I love these videos that much. I commented on this one, not because it’s my favourite, but it’s the one I most recently watched and after watching it I said, “you have got to let this person know that their work is appreciated” So, yeah, keep it up. You’re winning at KZbin and I couldn’t be happier for you and everyone that has the pleasure of watching your work.
@Acerola_t
@Acerola_t Жыл бұрын
Thanks!
@lastsipahi
@lastsipahi Жыл бұрын
I recently bought ProPixelizer asset and this video gave me the insides of how it's working. Thank you!
@christianwilliam1167
@christianwilliam1167 Жыл бұрын
I made a very similar shader in Blender but I based on PS1 aspects, it's funny to see you came up with pretty much the same solutions.
@ShinSpiegel
@ShinSpiegel 10 ай бұрын
This was a freaking amazing video. Thanks for sharing
@kwmcgreal
@kwmcgreal 9 ай бұрын
Very helpful to learn what these functions do!
@sampson217
@sampson217 Жыл бұрын
This was amazing. Thank you. 👏
@Acerola_t
@Acerola_t Жыл бұрын
Thanks!
@CaveyMoth
@CaveyMoth Жыл бұрын
0:16 Wait. This isn't Monogatari! The downsampling and dithering give the graphics a really nice PS1 vibe. It especially reminds me of Silent Hill's graphics.
@Ash_Cafe
@Ash_Cafe Жыл бұрын
My thoughts exactly lol
@Queer_Nerd_For_Human_Justice
@Queer_Nerd_For_Human_Justice Жыл бұрын
Thanks, Shaggy! This was honestly funny and informative. As someone who's dabbled in pixel art, I can say the actual practical difference that one might notice during gameplay between hand-drawn pixel art and converted 3d models, is easy to spot: Hand-drawn pixel art can defy the laws of physics Constantly. Stretching, warping, cartoon physics, etc. The excessive bounciness or smear-like movement is one facet of what gives high-quality pixel art its viscerally enjoyable nature, especially animated pixel art for playable characters. Although I'll never gatekeep. If someone makes a game that looks like hand-drawn, then it's clear they have a passion for pixel art and are only making QOL improvements on the development cycle itself. I'm sure they would have loved to go hand-drawn if it was feasible. And I actually really like many indie games that are intended to be seen as obviously 3d but with a low-res "environment", like making a 3d game meant to be played on pretend gameboy for instance. Whether it's imitating pixel art or doing its own thing, I find the effect magical, like a painting that makes more sense when you step back from it, or in this case, graphics that come alive as you move through them. Anyway, all mediums and tools are good when it comes to art. The more methods we embrace, the more variety of art we get!
@Cyfrik
@Cyfrik Жыл бұрын
Having messed around with similar effects in an image editor instead of a game engine, I've noticed you can also get some interesting effects if you give each separate color channel a different dither map.
@andrewalvarez1480
@andrewalvarez1480 Жыл бұрын
I started cracking up halfway through the video when I realized how hilarious your animations were. truly great video 5/7
@cruz6550
@cruz6550 6 күн бұрын
which software is Acerola using??? i thought he used blender
@glitched_code
@glitched_code Жыл бұрын
this is very useful, thank you!!
@BakeBakePi
@BakeBakePi 9 ай бұрын
That's so cool! Great video!
@Crazymoniker
@Crazymoniker Жыл бұрын
That Blow Me Away montage was nostalgiac as hell. I really miss the good old days of playing Halo after school and watching shitty gameplay compilations on youtube.
@aeleequis
@aeleequis Жыл бұрын
Monogatari, persona 3 (if I'm not mistaken) and more references, paired with cool jokes and awesome video editing. You deserve way more followers than you have
@medj7218
@medj7218 Жыл бұрын
i really apreciate your help with dowloanding this software
@rainbowzzzplayzzz
@rainbowzzzplayzzz Жыл бұрын
Ive never once wondered about any of this. Despite that this was a very fun video and I enjoyed it v much ty for giving me your knowledge.
@pallabwagle
@pallabwagle 3 ай бұрын
I learnt a lot from this video. Thank you
@Roxor128
@Roxor128 Жыл бұрын
I did something similar to this, but the destination palette was the EGA default. The shader included it as a 16-entry lookup table and found the two closest colours in the palette, then used dithering to decide which of the two to use for the final pixel. Given most of the colours in the EGA palette are so saturated, I had to add an extra stage that significantly increased the colour saturation first in order to get decent-looking results. Without it, most of what came out was greys, as the more realistic source material I was feeding into it just wasn't anywhere near that saturated.
@Rubyllim
@Rubyllim Жыл бұрын
Thanks, yoinking this for my school project
@UrSoMeanBoss
@UrSoMeanBoss 4 ай бұрын
omfg i loved the montage xD really cracked me up
@STICKOMEDIA
@STICKOMEDIA Жыл бұрын
That montage is beautiful
@wii58739
@wii58739 9 ай бұрын
That windows movie maker montage was lit!
@augmentedcamel
@augmentedcamel Жыл бұрын
fantastic edit
@LillyValentineFGC
@LillyValentineFGC Жыл бұрын
the persona music is the cherry on top, great video!
@filipgaming1233
@filipgaming1233 Жыл бұрын
The montage reminded me of a video montage i watched when I was like 7 years old, just watched it again, good times.. thanks
@krawieck
@krawieck Жыл бұрын
very cool video, im gonna now watch every other video on ur channel
@WhiteDeVil3
@WhiteDeVil3 6 ай бұрын
Appreciate the WMM 2000's vibe montajjjjj, cheers bruv.
@theseatoad
@theseatoad Жыл бұрын
Using a downsample + dither on 3D looks great, but I always like a nice thick outline around my pixel art. It would be interesting to create a shader that adds outline around Sheik. It always helps distinguish characters from environment.
@fernandaalmeida6670
@fernandaalmeida6670 Жыл бұрын
thanks a lot!!! so nice reverb
@csxcatgirl9896
@csxcatgirl9896 Жыл бұрын
ABSOLUTE BANGER
@firedbluex
@firedbluex Жыл бұрын
the amv in the middle of the video is absolutely captivating
@bernhardeiling3265
@bernhardeiling3265 9 ай бұрын
sick montage
@Rullisi
@Rullisi 3 ай бұрын
The montage was amazing.
@DeuxisWasTaken
@DeuxisWasTaken 8 ай бұрын
Thanks Acerola very cool The montage not only made me giggle but also reminded me of the existence of Breaking Benjamin to which I last listened like 10 years ago lol, thanks for the nostalgia
@badkluster
@badkluster 7 ай бұрын
is this the best and most informative channel in KZbin? maybe
@jdigi78
@jdigi78 Жыл бұрын
love the montage
@DigitalCasm
@DigitalCasm Жыл бұрын
You have a gift for being concise.
@TheRealBoof
@TheRealBoof Жыл бұрын
That montage is FIRE
@mandelbro1
@mandelbro1 10 ай бұрын
Got a give a like because you use the cheapest most basic Samson mic and frankly I love it. Also, good video
@darknessflame101
@darknessflame101 3 ай бұрын
Love the windows movie maker throwback, absolutely brilliant
@nguyenhoangminhtrung2779
@nguyenhoangminhtrung2779 Жыл бұрын
I love these videos!
@chlorine6539
@chlorine6539 Жыл бұрын
i have no idea whats going on but this showed up on my recommended and Im having a good time
@SporkleBM
@SporkleBM Жыл бұрын
i have no place to apply this, (as of yet) but this has been really interesting to learn anyway!!! (well. minus the matrices and math in the dithering section of this video- sorry haha!!) thank you for putting this out! i think im going to try messing around with this sometime! :]
@theai_1
@theai_1 4 ай бұрын
I'd love to see an effect like this on larger terains - like for example that ocean simulation. Looks incredible
@Purpial
@Purpial Жыл бұрын
this is so cool
@Krilium
@Krilium Жыл бұрын
I am here to say that I'm happy because I remembered what mipmaps were off the top of my head and I have minor short term memory problems. YAY LEARNING!
@ZX_STH
@ZX_STH Жыл бұрын
The T-pose Sheik color pallet montage would make a great meme.
@Zomboik
@Zomboik 8 ай бұрын
200X called, They want their Montage back.
@sarerusoldone
@sarerusoldone Ай бұрын
the windows movie maker dithering AMV was *chef's kiss*
@StHappyfaces
@StHappyfaces Жыл бұрын
Thank you kindly, stranger
@mr_clean575
@mr_clean575 Жыл бұрын
I would love to see what the different color shading effects using the grayscale mapping would look like on the sheik model
@spuryaas
@spuryaas Жыл бұрын
I played Persona 3 for the first time about a week ago and now I hear music from it in every second video
@klausmichel6515
@klausmichel6515 Жыл бұрын
Respect ♥
@joemama-bu5ue
@joemama-bu5ue Жыл бұрын
The edition was filled with shitpost and super fluid, exactly the type of edit I love, congrats for whoever edit it.
@Absbor
@Absbor Жыл бұрын
love it
@ragingdonut
@ragingdonut Жыл бұрын
love the monogatari theme
@ofuskinha
@ofuskinha Жыл бұрын
O cara é literalmente o Acerola
@fivestarman9474
@fivestarman9474 7 ай бұрын
I love the 2004 montage
@ferenccseh4037
@ferenccseh4037 Жыл бұрын
Very cool
@VapeKidJr
@VapeKidJr 3 ай бұрын
Montage goes hard
@Andros_Art
@Andros_Art 4 ай бұрын
I actually used this video to make my own color quantization algorithm, in Scratch of all places!
@blakerussell5538
@blakerussell5538 Жыл бұрын
I fucking love this guys taste in video game music. WOH is neat
@HyagoPinheiro
@HyagoPinheiro Жыл бұрын
Dude, this is clever!
@Koplerio
@Koplerio Жыл бұрын
This video is literally going back in time.
@firecrusades3397
@firecrusades3397 Жыл бұрын
the most important video of the last decade
@Soundy777
@Soundy777 2 жыл бұрын
KZbin! light this channel up!
@Xenthera
@Xenthera Жыл бұрын
7:35 calm down 2007 youtube
@ongamex
@ongamex Жыл бұрын
that color clamping montage made me feel15 years younger
@tciddados
@tciddados Жыл бұрын
I feel like a good addition to this might be explanation of non-standard palette dithering. The kind explained at the end is neat, but ultimately a fake color picture from greyscale, and the color-choosing algorithm shown before just assumes an RGB palette with equally-spaced items. Would be interesting to go a bit into palette-aware algorithms (like ones with a higher # of greens than blues, to make the night landscape picture show up better).
@Acerola_t
@Acerola_t Жыл бұрын
Very true!
@SynthGirl64
@SynthGirl64 Жыл бұрын
Bro this video's too fucking good, I knew all of this already except for the times 2 rule, aswell as the sharpening, so I actually did learn something 👍 also I died laughing at the colour compression montage
This is the Kuwahara Filter
18:16
Acerola
Рет қаралды 375 М.
How Are Games Rendering Fur?
28:51
Acerola
Рет қаралды 397 М.
【獨生子的日常】让小奶猫也体验一把鬼打墙#小奶喵 #铲屎官的乐趣
00:12
“獨生子的日常”YouTube官方頻道
Рет қаралды 64 МЛН
Useful Gadget for Smart Parents 🌟
00:29
Meow-some! Reacts
Рет қаралды 7 МЛН
Giving Personality to Procedural Animations using Math
15:30
t3ssel8r
Рет қаралды 2,3 МЛН
The Strange Graphics Of LETHAL COMPANY
15:59
Acerola
Рет қаралды 594 М.
Ordered Dithering - Computerphile
10:35
Computerphile
Рет қаралды 127 М.
Optimizing my Game so it Runs on a Potato
19:02
Blargis
Рет қаралды 217 М.
I Mastered Perfect Handwriting in 24 Hours
13:51
viyaura
Рет қаралды 31 М.
I Made A Fully Ray Traced Game
26:17
Acerola
Рет қаралды 140 М.
I Tried Simulating The Entire Ocean
27:19
Acerola
Рет қаралды 455 М.
I Tried Sorting Pixels
18:03
Acerola
Рет қаралды 828 М.
When Your Game Is Bad But Your Optimisation Is Genius
8:52
Vercidium
Рет қаралды 1,3 МЛН
Moebius-style 3D Rendering | Useless Game Dev
8:12
Useless Game Dev
Рет қаралды 752 М.
Phone charger explosion
0:43
_vector_
Рет қаралды 36 МЛН
Такого вы точно не видели #SonyEricsson #MPF10 #K700
0:19
BenJi Mobile Channel
Рет қаралды 2,5 МЛН
Эволюция телефонов!
0:30
ТРЕНДИ ШОРТС
Рет қаралды 2,7 МЛН