Custom 2.5D shadows in Godot 4.0
0:27
LEGO Racing Game (made in Unity)
4:12
LEGO Stop Motion: The Robbery
8:02
5 жыл бұрын
LEGO Stop Motion: Fire and Water
7:58
Mega Bloks Minions Star Wars Film
0:50
Lego Flugzeug - Test
1:10
8 жыл бұрын
Lego Harry Potter Pannen beim Dreh
1:51
LEGO Batman Stop Motion
1:02
9 жыл бұрын
Lego Star Wars Film 2
0:16
9 жыл бұрын
LEGO Stop Motion: Research Institute
0:41
Пікірлер
@HubertZieliński-e7g
@HubertZieliński-e7g 5 күн бұрын
Hi, I am already very grateful for your tutorial nad shaders. I tried to implement this for trees instead of walls in my game. Unfortunately I stumbled upon several issues, one of which is self-shadowing, which I already managed to fix without shaders using light masks and two sources of light. How is it possible, that without changing masks, object casting the shadow is unshadowed by it, but those behind are? Also, I noticed that in your video objects get completely dark when light source is behind them, but it doesn't work for me. Do you have any idea why it happens?
@SpeckhoferEnterprises
@SpeckhoferEnterprises 2 күн бұрын
If you just take a wall (as in the video) and replace its texture by your tree texture, then it should still be rendered correctly without any self-shadowing (you don't have to change any masks). The wall shader essentially reads the brightness value from the background layer at the position just below the bottom of the wall texture. Maybe your light occluders are too large, or they are positioned too low, thus casting a shadow on the tree. Also make sure that the tree texture does not have any scaling or offset, since this may cause problems with the shader. Concerning your last question: Did you set up your scene like in the video? Which version of Godot are you using?
@HubertZieliński-e7g
@HubertZieliński-e7g 3 сағат бұрын
@@SpeckhoferEnterprises Thank you for your response! I managed to get it work partially and discovered what is the problem: it seems like what breaks the shader system is the lower viewport resolution, which I set for my game (320x180). The object then is getting self-shadowed from the shadows created by wall shader, not those casted by occluder. When the light source is behind the object, it is partly lit from the top. When I set the viewport resolution in project settings to 1280x720 it starts working. The same also applies for the editor view: it works only, when it is zoomed out to a certain point (the change is not sudden, but rather the shadow slowly fades in and out starting at the top). Another problem I encountered is that the method you used for the shader doesn't work that well with more 'organic' shapes. Basically, when the object's sprite doesn't have straight base, the shadows are still created based on the straight line at the bottom of sprite, thus resulting in its weird behaviour in those cases. The trees on the other hand don't get fully shadowed when under the light source, because of the shape of my occluder which covers just the base of the trunk.
@user-ws7ub3kt4r
@user-ws7ub3kt4r 11 күн бұрын
if it have a water wall lower than ground how to render
@SpeckhoferEnterprises
@SpeckhoferEnterprises 2 күн бұрын
First, you can change the order of the nodes in your scene and move all background elements up in the scene tree (so they are rendered first). You can also edit the Light Masks of your nodes, the Occluder Light Masks of your light occluders, and the Item Cull Masks of your light sources to decide which lights and occluders affect which nodes. I hope that helps!
@pdd5793
@pdd5793 12 күн бұрын
hi, that's a great tutorial. I've tried using it in my game and it's working very well for the environment. i am only having some issues when applying the wall's shader in my character: when it gets above a wall and starts moving it starts to glitch like it's entertainment and existing the shadow (that is casting downward) constantly, and only stops when it's moving to the right. do you have a suggestion on how can i fix that?
@SpeckhoferEnterprises
@SpeckhoferEnterprises 11 күн бұрын
I tried to reproduce this issue, but I didn't get any glitches. You can try resetting all modified settings of your character sprite, e.g. its scale or Z index (and make your character a child of the same Y-Sort node as the walls). Or you can also send me the project (or a minimal example) as a zip file, then I will try to fix it (you can find my email address in my channel details).
@pdd5793
@pdd5793 9 күн бұрын
@@SpeckhoferEnterprises deleted my old response because that was't the problem! apparently, if you use spritesheet for animation, the shader will get the UV value from the entire spritesheet and use that region UV. so it wasnt sampling the screen correctly
@SpeckhoferEnterprises
@SpeckhoferEnterprises 2 күн бұрын
@@pdd5793 That makes sense! In that case, it should be easy to compute the current region's uv coordinates: For example, if the spritesheet has 8 colums and 4 rows, then replace UV.x by fract(8.0*UV.x) and UV.y by fract(4.0*UV.y) Alternatively, you can split your spritesheet into single image files and use them as SpriteFrames in an AnimatedSprite2D.
@warriorcats7874
@warriorcats7874 19 күн бұрын
Ich bin begeistert von diesem Stopmotion Film, ein wares Meisterwerk und ich liebe die Szene als die alte Dame die beiden Kerle aus dem Fenster wirft.😂
@Iceyboy1207
@Iceyboy1207 Ай бұрын
Mr stark i don’t feel so good
@laurencalderone4391
@laurencalderone4391 2 ай бұрын
That 💧 drop was funny to
@user-vw5si8mv8s
@user-vw5si8mv8s 3 ай бұрын
Germyn😅
@user-vw5si8mv8s
@user-vw5si8mv8s 3 ай бұрын
Hajrá
@janoschStudios
@janoschStudios 4 ай бұрын
Ich fände es auch mega super, wenn du einen Lego Superhelden Film drehen könntest, ich hab das vor kurzem auch gemacht und er ist schon fast viral!
@janoschStudios
@janoschStudios 4 ай бұрын
Ich fände es auch mega super, wenn du einen Lego Superhelden Film drehen könntest, ich hab das vor kurzem auch gemacht und er ist schon fast viral!
@janoschStudios
@janoschStudios 4 ай бұрын
Ich fände es auch mega super, wenn du einen Lego Superhelden Film drehen könntest, ich hab das vor kurzem auch gemacht und er ist schon fast viral!
@uNkNowN5642
@uNkNowN5642 5 ай бұрын
Hi, thank you for making this tutorial. I've been trying to adapt this to work with tilesets, but I'm still trying to figure it out and learn shaders. If you've worked with that before, do you have any pointers? Thank you!
@SpeckhoferEnterprises
@SpeckhoferEnterprises 5 ай бұрын
*The following should work for tilemaps:* Suppose you already have a background layer with the MultiplyShader like in the video (this may also be a tilemap, e.g. with floor or grass tiles) and you have a texture with wall tiles. - Add a TileMap to your scene and create a new TileSet. - Adjust the tile size and add an Occlusion Layer under "Rendering" - "Occlusion Layers" in the TileSet properties. - Add the texture containing your tiles to the TileSet resource and draw occlusion polygons onto the wall tiles which you want to cast shadows. - Assign a new ShaderMaterial to your tilemap, using the following shader. This is important: You have to adjust the value of "Tile Height" in the shader parameters to the actual height of your tiles in pixels! (If you need tiles with varying heights, you will need separate tilemaps, one for each height.) // TilemapShader.gdshader shader_type canvas_item; render_mode unshaded; uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; // Note that this shader only works for tiles of the following height: uniform int tile_height = 16; void fragment() { int rows = textureSize(TEXTURE, 0).y / tile_height; // number of rows in the texture float uv_height = (SCREEN_PIXEL_SIZE.y / TEXTURE_PIXEL_SIZE.y) / float(rows); // ratio of tile height and screen height // Get vertical UV coordinate with respect to current tile instead of whole texture: float uv_y_inside_tile = float(rows) * UV.y - floor((float(rows) * UV.y)); // Compute the uv coordinates (with respect to the screen) of the bottom of the current tile: float bottom_y = SCREEN_UV.y + (1.02 - uv_y_inside_tile) * uv_height; // Read lighting value from this position: vec4 lighting = textureLod(SCREEN_TEXTURE, vec2(SCREEN_UV.x, bottom_y), 2.0); // Combine texture and lighting: COLOR = texture(TEXTURE, UV) * 2.0 * lighting; }
@uNkNowN5642
@uNkNowN5642 5 ай бұрын
Hi, sorry for the late response--a lot's happened in the last week and I'll have to shift my focus elsewhere. First off, thank you so much for providing all of this! It works well, but I ran into a few issues that you can see in this video (different account): kzfaq.info/get/bejne/r8xzlbVhyrmuqZ8.html I tried setting the tile heights to 32, 64, 128, 144, and 160, and you can see the various effects on it. It's unlikely that I can continue with this any time soon, but I wanted to give you an update. Thank you so much, again!
@SpeckhoferEnterprises
@SpeckhoferEnterprises 5 ай бұрын
​@@uNkNowN5642 you are welcome! The issue with your character's head being in the shadow should be easily solved by giving your character sprite a material which uses the WallShader (also make sure that "Use Parent Material" is not checked in the "Material" tab). This way, the lighting intensity on your character is taken from right below its feet, whereas without this shader, the character is treated as a flat object lying on the floor, and therefore, the occluder of the wall casts a shadow onto the character's head. The wrong lighting on the walls might be caused by some scaling issue. The "Tile Height" shader parameter should always be the actual height in pixels of your tiles, as it is used to compute the number of rows in your tileset texture (by dividing the texture height by a single tile height). The result is needed to convert the UV coordinates from a small rectangle of your tileset texture to the whole unit square, i.e., values from 0 to 1. I suggest that you try setting "Tile Height" to 16 and, just for testing, make the wall just one layer of 16x16 tiles and see if it works. Also, the height of your tileset texture should be a multiple of 16 px. If this simplified version works correctly, I would create a 32x32 or 32x16 tileset for your walls such that you don't need two rows of tiles stacked on top of each other to construct a wall, but just one row. Then you can set the "Tile Height" in the shader to 32 px again. If you wish, you can also send me your project files, and I can try to fix the issues!
@timkreil2109
@timkreil2109 7 ай бұрын
Hallo
@arcoriasanimations
@arcoriasanimations 7 ай бұрын
Tja. Unrecht gut gedeihet nicht. Die Seniorin war allerdings sehr mutig und schlagkräftig, da fragt man sich, warum sie die Gauner nicht nur niederschlagen, sondern auch gleich hätte fesseln können. Schöner Film 👍
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Vielen Dank!
@arcoriasanimations
@arcoriasanimations 7 ай бұрын
Gutes Teamwork zahlt sich immer aus 🙂. Gute Idee, klasse verfilmt 👏
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Danke!
@owenlloyd2528
@owenlloyd2528 7 ай бұрын
Thank you
@williamlopezsalas2599
@williamlopezsalas2599 7 ай бұрын
0:48 Lego version vs Movie
@rosateti1227
@rosateti1227 10 ай бұрын
Metti Harry Potter con Voldemort Harris Ma lo capisci l'italiano metti Harry e Voldemort che Me lo metti per favore O capisci l'italiano Sì o no età fa
@TheBlossom1984
@TheBlossom1984 Жыл бұрын
The rock,paper,scissors thing is so funny.
@bembe8038
@bembe8038 Жыл бұрын
Tutorial Please
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
I have finally made a tutorial! kzfaq.info/get/bejne/a6hhfJRhusXUpmw.html
@ninjaofwind2374
@ninjaofwind2374 Жыл бұрын
Wow looks so good
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Thank you!
@kriegerproductionsofficial
@kriegerproductionsofficial Жыл бұрын
Nice! I love how you use the same buildings multiple times. How long did it take to make this film?
@kriegerproductionsofficial
@kriegerproductionsofficial Жыл бұрын
Ha ha ha! Very much like the movie. What made you decide to do this sence?
@kriegerproductionsofficial
@kriegerproductionsofficial Жыл бұрын
No way! First person is insanely hard. How did you do this? Were the arms fixed on the camera some how?
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
If I remember correctly, the arms belonged to two different minifigures which were placed directly to the left and right of the camera lens.
@kriegerproductionsofficial
@kriegerproductionsofficial Жыл бұрын
This is amazing! You should make more castle themed films! What FPS did you use to film this? Your movement seems to be so smooth!
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Thank you! I used 24 fps.
@kriegerproductionsofficial
@kriegerproductionsofficial Жыл бұрын
Wow, Great video! Lots of smooth movement. I now know how hard that is.
@legobudterencestudios
@legobudterencestudios Жыл бұрын
cool
@JOSHSLEGO
@JOSHSLEGO Жыл бұрын
amazing! Why only nine comments? It Deserves 9k 😊
@JOSHSLEGO
@JOSHSLEGO Жыл бұрын
This is amazing! 😊
@JOSHSLEGO
@JOSHSLEGO Жыл бұрын
Amazing! Much, much better than mine 😊
@Francluded
@Francluded Жыл бұрын
BRO WHY GRANNY GOT THE MOVES 😂
@scamazoncrime5165
@scamazoncrime5165 Жыл бұрын
Should have seen the empty left tactical glove coming for the face. 0:57 followed by a bit of blur after the punch and the right hand lightsaber coming for the back 0:58 and the far right corner of the screen, would have been a good touch.
@GaiusJuliusCaesar_SPQR
@GaiusJuliusCaesar_SPQR Жыл бұрын
So ein gutes Stop-Motion Video..
@twobrothersstudyo9159
@twobrothersstudyo9159 Жыл бұрын
its very Good
@twobrothersstudyo9159
@twobrothersstudyo9159 Жыл бұрын
I like your films
@CowbellStudioss
@CowbellStudioss Жыл бұрын
Love the fact that grandma beats them up, but doesn’t turn them in
@JamesBricks06
@JamesBricks06 Жыл бұрын
Yeah 😂
@akueche
@akueche Жыл бұрын
Thanks for very much speckhofer enterprises❤
@stahlmann581
@stahlmann581 2 жыл бұрын
Sehr schön gemacht 😁 Aber der Wortschatz dürfte ruhig etwas umfangreicher sein als "Hmm".
@Brickhausen
@Brickhausen 2 жыл бұрын
Wow, das ist ein sehr schönes Video. Ganz besonders beeindruckt bin ich von den Kameraschwenks, die dann über Kopf weiter geführt werden. Super Idee. Außerdem finde ich, dass die Geschichte wirklich gut erzählt ist. Animation, Beleuchtung, "Dialoge", Sound Design - alles top. Hab gleich mal deinen Kanal abonniert.
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Vielen Dank!
@LEGOLandOfficial
@LEGOLandOfficial 2 жыл бұрын
Keep up the fantastic work and always keep me updated on your latest videos that are the best and will always be the best in the world.💘❤I make lego stop motion animation. you can see it
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Thank you very much! I watch your videos regularly and I think they are really great!
@lucas7618SUBSCRIBE
@lucas7618SUBSCRIBE 2 жыл бұрын
sehr gut weiter so
@luisathummler2385
@luisathummler2385 2 жыл бұрын
Cool
@Hxhcjcjjcjc
@Hxhcjcjjcjc 2 жыл бұрын
Wow really good quality! Btw why do the robbers always lose?
@Hxhcjcjjcjc
@Hxhcjcjjcjc 2 жыл бұрын
Every single robbery stop motion the robbers lose
@Crayons_skates
@Crayons_skates 2 жыл бұрын
Did you just reply to yourself
@jamesproduction7536
@jamesproduction7536 2 жыл бұрын
Nice
@CHASEPRODUCTIONS18
@CHASEPRODUCTIONS18 2 жыл бұрын
U r god at this game
@legocityman1475
@legocityman1475 2 жыл бұрын
Also das ist mit Abstand eins der besten Lego Stop-Motion Videos das ich je gesehen hab🤯 Viele der Filmtechniken, die ihr verwendet habt, hab ich so noch nie gesehen... Alle Soundeffekte auch sehr akkurat, sogar extra für Kopfhörer eingestellt. Und die Ideen, Übergänge, sowie das Skript im Allgemeinen sehr beeindruckend👏 👏
@SpeckhoferEnterprises
@SpeckhoferEnterprises 7 ай бұрын
Vielen Dank!
@themanwhowouldbebrick
@themanwhowouldbebrick 2 жыл бұрын
Cool!
@lillamarkus7569
@lillamarkus7569 2 жыл бұрын
I think Fly........
@youssefnr1310
@youssefnr1310 2 жыл бұрын
I actually really liked that, that was awesome
@12yearmindlegostopmotion
@12yearmindlegostopmotion 2 жыл бұрын
3:29 How is the rooster still alive after this lol But seriously, GREAT WORK!!! The quality and lighting is amazing, and the stop motion's with no talking and just inaudible noises is always a nice thing to see in LEGO, it just reminds you of how LEGO is still a toy, and thats awesome. Amazing job Speckhofer!