How are toon shading and dynamic shadows possible on the N64?

  Рет қаралды 78,171

James Lambert

James Lambert

Күн бұрын

Пікірлер: 184
@Sauraen
@Sauraen 2 жыл бұрын
Hi! You said that cel shading was not used in any N64 *games*, which is true AFAIK, but we used it in Triforce% OoT ACE Showcase for BotW Link and Zelda. It is a completely different technique which does not require an 8-bit or color index framebuffer. Custom microcode moves the light intensity from shade color to shade alpha, and then alpha compare is used to draw or not draw the pixels based on whether the light level is above or below a threshold. Triangles are drawn once per cel level, and the combiner is used to tint the cel levels differently for the lighting and to invert the shade alpha if needed. glank and I developed this cel shading implementation in October 2021, before your video, but we didn't release it until July 2022 along with Triforce%, so you did publish first. Wiseguy also developed a completely different cel shading implementation around the same time, but never released it. It uses textures and CPU modification of ST coordinates which is much less flexible and efficient.
@Sauraen
@Sauraen 2 жыл бұрын
Here is a video of the cel shading from December 2021: youtu . be/dbRklrBvzXM Here is the main Triforce% video: youtu . be/2x_pqyrf9lA
@orangehatmusic225
@orangehatmusic225 2 жыл бұрын
Inverse matrices for the win.
@ETXAlienRobot201
@ETXAlienRobot201 2 жыл бұрын
i was curious how exactly those microcode patches actually worked!
@dialog_box
@dialog_box 2 жыл бұрын
@@Sauraen oh that's a smart way to get around youtube's url suppression. just put it a reply instead of the main comment
@Sauraen
@Sauraen Жыл бұрын
@@ZanaGBYT We did not directly lie--we chose our words in the narration extremely carefully--however we absolutely did help the audience suspend their disbelief until the end. Not everyone liked this "magic trick" style plot, but that's okay, we can't satisfy everyone! Drily explaining "we made this piece, we made this piece" as it was going on would have ruined the experience for people who did like the "magic trick".
@pleaserespond3984
@pleaserespond3984 2 жыл бұрын
"Doesn't work on emulator" is a sure sign you're doing something really cool with the hardware.
@flintfrommother3gaming
@flintfrommother3gaming Жыл бұрын
Or maybe it's that Project64 is an emulator stitched together by game only pathces.
@xdanic3
@xdanic3 Жыл бұрын
@@flintfrommother3gaming I wonder if it could work with a graphic engine that uses software renderer
@ikannunaplays
@ikannunaplays Жыл бұрын
@@flintfrommother3gaming That's correct, it doesn't emulate hardware it emulates the result of the code. The N64 emulators that were attempting to emulate actual hardware have died off due to the popularity of the former.
@fuel-pcbox
@fuel-pcbox Жыл бұрын
@@ikannunaplays Not entirely. Right now, the most accurate n64 emulator is neither mupen64plus nor project64, but instead another emulator, called ares. ares's n64 core was started by the late Near, known for also creating bsnes. ares is FAR more accurate than any other n64 emulator out there, to the point that it's the only n64 emulator that can emulate n64 linux. not even cen64 can do that lol
@ikannunaplays
@ikannunaplays Жыл бұрын
@@fuel-pcboxI was unaware of Ares, but good to know. It does seem very promising, but as with the high accuracy of emulating hardware vs emulation of the effects of the code comes high computational requirements. The reviews say there are many games that slow down very badly, but that's to be expected as emulating hardware would require a machine 1000x more powerful than the original machine itself. Though in around 2008 there were many N64 emulators attempting to emulate the hardware that performed equally as well and this tells me that Ares may not be using the multi-threaded approach as the clock speeds on PC's then is about on par with PC's now and thus the the performance would be about the same. It's still an early development but I would hope using the multiple cores of modern CPU's would be implemented as that's the only way to get performance gains though it seems they've adopted the single threaded linear approach for now.
@-mw.
@-mw. 2 жыл бұрын
I love the jank on pixel lighting by just repeating the values 3 times. That's the best way to game jam.
@C.I...
@C.I... 2 жыл бұрын
It's not jank if it works :D
@thezipcreator
@thezipcreator 2 жыл бұрын
@@C.I... I think it's possible for things to be jank and work at the same time
@jackthehacker05
@jackthehacker05 2 жыл бұрын
@@thezipcreator I'm pretty janky and I work almost just fine.
@ReyndOut
@ReyndOut 2 жыл бұрын
Well, didn’t stop Super Mario 64 😂
@Art1stical
@Art1stical 2 жыл бұрын
You say lighting on the player is so subtle is not noticeable. Believe me, it's noticeable. As an environment artist myself, those subtle details that you think nobody notices, are exactly the ones that ground a scene together. If you don't have those subtleties, something would feel off and people would notice, even if they don't know exactly what's missing. So, you taking the time to do it is wonderful. Fantastic video!
@renakunisaki
@renakunisaki 2 жыл бұрын
I draw character art with vector graphics. Sometimes I'll add a shadow or light and then blur it so heavily, you can barely even tell it's there. But if you delete it, the difference is night and day. Sometimes the things you think you can't even notice are very important.
@inthefade
@inthefade 2 жыл бұрын
As a painter who gets lots of compliments on my rendering, I agree 100%. Some people can render well enough, but often won't go the extra mile to include these kinds of "barely noticeable" lighting effects, & everything ends up looking disconnected.
@sporks5000
@sporks5000 2 жыл бұрын
"You probably didn't even notice the effect on the player..." THE FIRST thing I noticed and WAS BLOWN AWAY BY was the shadows on the player. HOLY WOW, dude.
@OLDmanBOB
@OLDmanBOB Жыл бұрын
i know, it was the first thing i noticed.
@GavinandthePiano
@GavinandthePiano 2 жыл бұрын
Underrated as hell, you’ve got some excellent chops as a programmer and it’s so cool to see someone push n64 like this with really creative ideas
@meetsys
@meetsys 2 жыл бұрын
so cool to see a n64 can handle toon shading + shadows while keeping the frame rate higher than 0
@3of12
@3of12 2 жыл бұрын
Yeah the more I learn about the subject the more its becoming apperent the programming that was used back in the day was very inefficient and there is so much potential for improved performance on old consoles. There is a project on KZbin about making Mario 64 run at 60 fps on original hardware.
@Aeduo
@Aeduo Жыл бұрын
@@3of12 The game production industry seems rather harsh, and it was probably no better back then. Just get everything done as quickly as possible. Obviously plenty of great games came out of it, but it's neat what people can make given a genuine passion for it.
@LeadHeadBOD
@LeadHeadBOD 11 ай бұрын
​​@@3of12 admittedly, all of this is being done with 20 years of hindsight and time to experiment. The original developers probably could have done something very similar, but the reality is they had to publish something RIGHT NOW. Additionally, while the original developers had access to N64 documentation, it was basically up to themselves to create something from nothing. Information access these days is so much more widespread, not to mention that we have access to code from different studios with unique approaches. Even exceptionally good programmers like John Carmack have gone on to point out deficiencies in their code multiple years later with the notion of "I have no idea why I did this, it can be done way more efficiently like that".
@UltimatePerfection
@UltimatePerfection 2 жыл бұрын
Actually, I have read somewhere that SM64 originally was to have dynamic shadows, but the players found jumping confusing so a decision was made to remove dynamic shadows and light everything from the top, having the "blob" shadow under Mario to help aim the jumps.
2 жыл бұрын
The newer Mario games most definitely do have dynamic lighting, but they keep an extra shadow exactly below Mario for jumping purposes. It's interesting how in Mario Galaxy, this shadow's calculations are part of the whole gravity calculations because where Mario will land is affected by gravity.
@clouds-rb9xt
@clouds-rb9xt 19 күн бұрын
source?
@PixelPipes
@PixelPipes 2 жыл бұрын
Really really cool! This looks so unlike anything else on the N64 (including the unfiltered textures) that it sort of mentally registers as something else entirely.
@someoneelse1534
@someoneelse1534 2 жыл бұрын
Really impressive that this was one of the only "finished" games in the jam, as well as pioneering new techniques.
@HaveYouTriedGuillotines
@HaveYouTriedGuillotines 2 жыл бұрын
The lighting on the player was one of the first things I noticed because I don't remember seeing that in any N64 game I played growing up. Your lighting makes the game look more like it's a PC game from that era.
@DanielSavageOnGooglePlus
@DanielSavageOnGooglePlus 2 жыл бұрын
I feel as though every idea for a N64 game I think up has a moment where I coldly ask myself “will the fillrate be okay?”
@VoonNBuddies
@VoonNBuddies 2 жыл бұрын
What a creative solution given the limitations! It's kind of crazy that this look (which is beautiful by the way) was possible on the N64 but just, like, hadn't been invented yet. Like this was just complicated enough that no one thought to do it but is still possible if you already know what the end goal is.
@r.g.thesecond
@r.g.thesecond 2 күн бұрын
Do I WISH you'd do more graphics programming videos like this! This, along with your MegaTextures demo explainer, have been a source of inspiration for me. The clear editing and the visualizations complement your superb technical speaking!
@darkowl9
@darkowl9 2 жыл бұрын
I'm not sure if cel shading wasn't done as much because of technical limitations so much as no-one really tried it. IIRC, Jet Set Radio on the Dreamcast was one of the first, if not the first, games to use cel shading as a style, at least as we see it today. I think there were a few earlier PS games but not to the same graphical extreme as JSR.
@williamist
@williamist 2 жыл бұрын
yay more n64 videos! always love your stuff :D
@C.I...
@C.I... 2 жыл бұрын
Love the video and what you're doing on the ol' 64. I couldn't help but notice the interlaced comb artifacts on the footage, though. I imagine you could get rid of those by de-interlacing the footage and rendering at 60fps, then it would look even better!
@takacsadam2850
@takacsadam2850 2 жыл бұрын
i like the art style, much better than *slap a random generic toon shader on top of everything* since yours has character and everything. it never looks off and the character light is also a nice touch
@harrydsgn
@harrydsgn 2 жыл бұрын
Wish we had gotten more late era N64 stuff that looked like this! Definitely reminds me of a much more technically impressive Doubutsu no Mori
@mrhs5220
@mrhs5220 2 жыл бұрын
It's so exciting to see the advances that are being made in the N64 homebrew scene. I hope that someday we will see some brand-new limit-pushing games like we have on the Genesis now.
@DommoDommo
@DommoDommo 2 жыл бұрын
Game looks cute as hell, you all did a fantastic job.
@JoSilverNG
@JoSilverNG 2 жыл бұрын
Ahhhhh, bullying hardware/software in to doing things it wasnt meant to do, honestly my favorite passtime.
@DougSalad
@DougSalad 2 жыл бұрын
Amazing work, I'll definitely be popping this one in the everdrive! :)
@JuanesChiwirosky
@JuanesChiwirosky 2 жыл бұрын
Thank you very much for sharing those techniches, it is really awesome to see that kind of stuff running on the beloved N64
@stephencooper3067
@stephencooper3067 Жыл бұрын
I'd love to see a full platformer from this. The animations look incredibly smooth and and full. You say the shadow on the player was subtle but i think i was drawn to how good the character looked moving and i think the shadows played a large part in that even if it was subconsciously. It may be a small piece on its own but without it the larger whole would be incomplete, or at least thats my take!
@danieleguercia6483
@danieleguercia6483 2 жыл бұрын
Riders on the storm!! This is incredible! Subscribed
@kylespevak6781
@kylespevak6781 2 жыл бұрын
The game looks like a PS1 Wind Waker, if that makes sense
@phirenz
@phirenz 2 жыл бұрын
Interesting, not the technique I was expecting. I was expecting a threshold lookup texture and a modified microcode to feed the result of lighting calculation into the UV coordinates. It's a shame 2cycle mode doesn't let you specify two sets of UV coords, then you could use one set for the toon shading lookup texture, and the other for actual texture data and multiply them. Means this lookup technique can't use texturing, unless you do multiple passes.
@kenh6096
@kenh6096 2 жыл бұрын
Great work, Loving seeing what you are getting out of the N64.
@command-tab
@command-tab 2 жыл бұрын
This was really cool, informative, and well explained. Excellent work!!
@MCgranat999
@MCgranat999 Жыл бұрын
The player shadows are super important. The first thing I've checked, looks great!
@mantax55
@mantax55 2 жыл бұрын
I wish Quake’s (in GLQuake at least) original shadows were updated to your technique. (enabled by using r_shadows 1)
@loganmahoney2284
@loganmahoney2284 Жыл бұрын
Man this is amazing. Good work.
@lamenwatch1877
@lamenwatch1877 2 жыл бұрын
Beautiful. Just beautiful.
@Timmzy27
@Timmzy27 2 жыл бұрын
Great work my man 😊
@NonTwinBrothers
@NonTwinBrothers 2 жыл бұрын
👍
@davidpyne6414
@davidpyne6414 2 жыл бұрын
You are a god! this is amazing, keep up the amazing work you do. thank you so much!! :D
@PhillipsAlbright
@PhillipsAlbright 2 жыл бұрын
Hey, I saw yall's game shown off at the Oak City indie games event and now i see this recommended to me on youtube. Really cool stuff and I had a great time trying out your games, the Telelocation one also being super fun. Edit: Just realized you are the portal n64 guy, I've been following you for a while and didn't realize you were local, small world.
@tslim250
@tslim250 2 жыл бұрын
Fantastic work. the world needs your genius for so much more too. Keep doing great interesting things!
@DanielTRBeats
@DanielTRBeats 2 жыл бұрын
Esse vídeo vai ser histórico, e estou marcando a minha presença aqui
@kairon156
@kairon156 2 жыл бұрын
I think it's very neat that your able to make N64 games today.
@Visleaf
@Visleaf 2 жыл бұрын
Very impressive!!
@gky93
@gky93 2 жыл бұрын
Hi, thanks for your video ! I managed to use the Dynamic shadows technique, that you used for your game, on a casio graphical calculator.
@dyscotopia
@dyscotopia 2 жыл бұрын
And this is how you get lit at a game jam
@Hito_kun
@Hito_kun 2 жыл бұрын
Could Mega Man 64 be considered toon shaded ? It immediately came to my mind when talking of N64 with "cartoon" graphics. Still, this is on a league of it's own. Amazing work.
@Aeduo
@Aeduo Жыл бұрын
Neat to see what could've been on the N64 had something been given as much time as it needed. Although modern tools and techniques seem to help too. This almost looks like something that could've been on Dreamcast or something.
@Fixaah
@Fixaah 2 жыл бұрын
FightAgainstTheAlgorithm
@NoReverse77
@NoReverse77 2 жыл бұрын
One of my favorite racing games is pixel shaded and I love it.
@thrashvictim6591
@thrashvictim6591 Жыл бұрын
What a time to be alive as a huge n64 fan
@TylerjWebb
@TylerjWebb 2 жыл бұрын
I love how this looks
@numberoneappgames
@numberoneappgames 2 жыл бұрын
Loved your work on the N64.
@orangehatmusic225
@orangehatmusic225 2 жыл бұрын
Inverse matrices for the win.
@ndavid42
@ndavid42 Жыл бұрын
The game looks fun! Reminds me of Wilmot's Warehouse feat. Overcooked :)
@xneoken
@xneoken 2 жыл бұрын
Very informative video! I hope to see more!
@axelguizar1
@axelguizar1 2 жыл бұрын
quality content, thank you
@shadowman_390
@shadowman_390 2 жыл бұрын
Awesome, really enjoyed de video.
@MoonSarito
@MoonSarito 2 жыл бұрын
This looks pretty awesome for the N64 hardware.
@irkandcrew
@irkandcrew 2 жыл бұрын
But how'd ya do on the contest?
@VariaPrime
@VariaPrime 2 жыл бұрын
their team got first place!
@irkandcrew
@irkandcrew 2 жыл бұрын
@@VariaPrime oh sick!
@sirp0p0
@sirp0p0 2 жыл бұрын
Funny enough, it looks like a DS game with those effects. Pretty neat.
@adamgreenhill110
@adamgreenhill110 2 жыл бұрын
The player is fully lit... And your videos are Fully Lit too (sorry I had to)
@D_VAULTZ
@D_VAULTZ 2 жыл бұрын
i noticed it straight away, sick.
@m.s7839
@m.s7839 2 жыл бұрын
This is really impressive.
@Kenbomp
@Kenbomp 2 жыл бұрын
U should label the lit and unlit columns in diagram to make more clear . Great job. In that's the great thing about games you can develop on anything and it's not wrong.
@valentinorubio703
@valentinorubio703 2 жыл бұрын
can't stop noticing that the stone tables are using the bedrock texture from Minecraft
@sebastiangudino9377
@sebastiangudino9377 Жыл бұрын
The shadows on the player effect are indeed so subtle that most games actually ignore them! Two famous examples are Wind Waker HD and Genshing Impact. Those games run in hardware that would make shading the character trivial. And yet they do not! They do REACT to lighting. But they only change the color pallet, they dont really cast the corresponding shadow on the player model. The resason is not only to save the unecesary computation during rendering, but the fact that in general ignoring shading produces a more appealing result! Of course thar doenst mean the effect should ALWAYS be ignored. Zelda BOTW does cast shadows on Link! And the result is quite nice. But is also ignores shadows in some other entities for stylistic purposes. Deciding what to shader and what not to shade is always a very intresting question. And i feel like in a game that is pretty much an excuse to showcase a bunch of cool lighthing methods and hacks in hardware that did not support it, then doing the shading was absolutely the right call!
@skeleton_craftGaming
@skeleton_craftGaming 2 жыл бұрын
You my friend our wizard
@MapSpawn
@MapSpawn 2 жыл бұрын
I'm a Half-Life modder and the word "Lambert" in these terms meant full bright lighting, no shadows.
@RADkate
@RADkate 2 жыл бұрын
might aswell go all the way and implement pbr next haha
@galaxygod9262
@galaxygod9262 Жыл бұрын
I did a speedrun for this game a few months ago, it’s 13 minutes flat so anyone else who wants to try just know it’s not a long run at all!
@danielboigenzahn9565
@danielboigenzahn9565 2 жыл бұрын
Loved the tutorial man this thing is legit 100% !! althogh i wish if theres a way you can do it on computer
@fantasmashy
@fantasmashy 2 жыл бұрын
the snowman in paper mario 64 used cellshading
@kez963
@kez963 2 жыл бұрын
How long time did you spend making this game? :D
@brandonlunchbag
@brandonlunchbag 2 жыл бұрын
no that subtlety helps sell it. good call
@redfoxbennaton
@redfoxbennaton Жыл бұрын
Toon shading was possible on N64. It was available on Toy Story 2 level selections and should have been more available.
@Ficehdulah
@Ficehdulah 2 жыл бұрын
Hey is there a similar scene for GameCube? Very interested in what people can pull off on that console as well.
@MasterNinjaKF
@MasterNinjaKF 2 жыл бұрын
Awesome! I want develop games for N64 too
@pastiesandagstring
@pastiesandagstring Жыл бұрын
Hello. Recently found your channel. I’m so excited about the portal 64 game. It looks so great. Better than the ds version which was pretty great version as well. Im lazy and don’t want to compile it right now though lol. Least not til it’s more complete. I checked this out in the mean time. I have it running on provenance for iOS which uses mupen for its core. It seems to work but I just wanted to know is the first level supposed to be black and white? Or is this a glitch with the emulator?
@madmax2069
@madmax2069 2 жыл бұрын
1:52 that crack probably doesn't help..... Joking aside, well done, you're doing what once was thought impossible possible.
@renakunisaki
@renakunisaki 2 жыл бұрын
I'm curious now, how it would look if you made the palettes gradients instead of repeating the same color 3 times.
@Keyspot
@Keyspot 2 жыл бұрын
This is incredible
@l-l
@l-l 2 жыл бұрын
Awesome!
@Fuuntag
@Fuuntag 2 жыл бұрын
Very good work!
@emptyedits.
@emptyedits. 2 жыл бұрын
Hey if possible could you link me to resources for learning about development for the n64?
@sadierobotics
@sadierobotics Жыл бұрын
The first thing I noticed was the shadows on the player, and they look amazing! This whole game looks amazing!
@pontusedberg
@pontusedberg 2 жыл бұрын
will portal n64 support portal nvidia's Raytracing next?
@SK83RJOSH
@SK83RJOSH 2 жыл бұрын
Well, the low precision color buffer was my first guess so the rest of this was unfortunately not that exciting. 😅
@guyug6940
@guyug6940 2 жыл бұрын
Ratio
@JamesTDG
@JamesTDG 2 жыл бұрын
Tbh, once portal 64 is made, we need half life 64 next
@Myako
@Myako 2 жыл бұрын
Looks incredible, great job! 👏🏻👏🏻👏🏻💪🏻💪🏻💪🏻
@josiahjack455
@josiahjack455 Жыл бұрын
This video is lit. Err....shaded, whatever, it's cool
@Shnowz
@Shnowz 2 жыл бұрын
you know you watch too much youtube when you understood everything in this video but haven't written a line of code in your life
@ivonnatrolue6747
@ivonnatrolue6747 2 жыл бұрын
I clicked on this video because I'm pretty high at this moment. I wouldn't click on it otherwise. But I just want to say I appreciate when people get into their niche interests. Cool shit.
@terrordisco2944
@terrordisco2944 2 жыл бұрын
You did the programming in InDesign?
@coloringontheline
@coloringontheline 2 жыл бұрын
Incredible as always! I'm so stocked for more updates on Portal 64. If I wanted to check out the game. What does one recommended I do to play it on n64?
@pix06pix06
@pix06pix06 2 жыл бұрын
You'd wanna grab an everdrive cartridge
@KrakenCasting
@KrakenCasting 2 жыл бұрын
What a clever work around! While that was a fun diversion, I'm excited for more Portal videos.
@ManecoSonic
@ManecoSonic Жыл бұрын
Please give the Sega Dreamcast some love too!❤
@rebornreaper194
@rebornreaper194 Жыл бұрын
What is a "scissor box"?
@Jkauppa
@Jkauppa 2 жыл бұрын
how about true 3d ray casting, with sun rays from every camera ray intersection
@Jkauppa
@Jkauppa 2 жыл бұрын
each entity has a sphere boundary volume, which can be: a) simply sorted (faster than triangle sorting, n_entity
@Jkauppa
@Jkauppa 2 жыл бұрын
draw each pixel only once, on just the cpu, optimize maximally
@randomcatdude
@randomcatdude 2 жыл бұрын
on the n64? are you insane?
@Jkauppa
@Jkauppa 2 жыл бұрын
@@randomcatdude draw each pixel only once per frame, dude
@randomcatdude
@randomcatdude 2 жыл бұрын
@@Jkauppa and how exactly does that help? the n64 cpu isn't super powerful, it's not gonna be very happy about having to do that for every pixel at whatever resolution you expect this to work at
@asmithgames5926
@asmithgames5926 2 жыл бұрын
Impressive!
@WannabeMarysue
@WannabeMarysue 2 жыл бұрын
cute looking game
@esmooth919
@esmooth919 2 жыл бұрын
Wasn't this kind of lighting possible on the original PS1?
@erockbrox8484
@erockbrox8484 2 жыл бұрын
I don't like games where I'm taking orders from people because I already do that enough in real life.
How can the N64 handle fast moving objects? | Portal64
9:18
James Lambert
Рет қаралды 521 М.
The Genius of the N64's CACHE Instruction
21:15
Kaze Emanuar
Рет қаралды 133 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
3DS Can Now Play Virtual Boy Games
15:02
Good Vibes Gaming
Рет қаралды 111 М.
Nintendo 64 LOST BITS | Leaked Debug Tech Demos [TetraBitGaming]
23:10
TetraBitGaming
Рет қаралды 367 М.
I Made A Difficult Game About Climbing
15:04
Pontypants
Рет қаралды 2,3 МЛН
Iron Lung is not as bleak of a setting as people think(sorry)
19:16
How Spherical Planets Bent the Rules in Super Mario Galaxy
28:31
Better engine, Better graphics (Nintendo 64)
8:05
Kaze Emanuar
Рет қаралды 228 М.
The Doctor V64 - Nintendo 64 DevKit or Piracy Device ? | MVG
13:07
Modern Vintage Gamer
Рет қаралды 875 М.
How scrolling textures gave Super Mario Galaxy 2 its charm
14:01
When Life Makes a Game Jam Harder (Mix and Jam 2020)
14:27
Vimlark
Рет қаралды 119 М.
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН