Just finished watching your previous 60 videos in this playlist, and now realized that you keep uploading this amazing content. I'm definitely going to come back every week for this. Thank you Ben, your videos taught me everything I know about Shaders.
Looks like most of the comments have already answered your question using the Material Instance method. Another way to do it, which I think is more fitting for a post process shader, is to use a Material Parameter Collection. It's an asset you can create and expose parameters from your materials: the values can be adjusted at edit and run-time.
ooh cool! can we get a posterize effect to go along with it? or even a color palletizer.. (user defined color pallet, and the thing just grabs the closest color in your palette to what is on the screen).
Hi Ben, as always, great tutorials and explanations! An easy solution is to make the resolution parameter as a Material Parameter Collection so you can access it in any BP. Also if I remember correctly, to make the pixels NOT shift diagonally, you could start at the center of the screen and pad them -1 to 1.
in order to change the pixel size in unreal through post process tab, you have to create something known as a global uniform shader parameter, and then replace it with scalar parameter inside the material and then, you have to bind that parameter into the post processing setting struct in source files .
question: is there a way for the pixelation filter to only happen on specific materials, instead of the whole screen? I wanted my player character to be pixelated, but not my environment...
My pixelation work fine, but as the PixelSize was raised, the picture would flicker.(In Unity) I tried changing the injection point to After - Post Process, and adjust PixelSize to 8, it looks better.
In unreal, the most simple form to change the value, it's taking a reference of the global pose, create a dinamic shader and set in the globalpostprocess slot, tha value change like another dinamic material.
Great video! did that couple days ago and I'm glad I had the same way of thinking! :) in Unreal there are 2 ways (that I know) you can tweak variables on PPV Material. 1. Would be just to add the Material Instance on the PPV instead of the Material, so when you change variables on the MI, it will update. (different from just the Material, where you need to keep hitting Apply/Save to see the effect working on screen). 2. Would be to create a quick Blueprint, with a PPV on it. On Construct make a Dynamic MI of the PostProcess Material you want, and set the PPV settings to use the Material. Then you can expose the variables you want in the BP with the nodes you want :)
Hey! Yeah, I'm getting a lot of people suggesting that. I do have a material instance in the array. For some reason, when I was recording the video, I was expecting that the controls would appear there instead of on the instance. Didn't think about it enough. :P
Math is the best. I knew all those years of linear algebra would pay off somewhere 😅 I am trying to get this effect constrained to a local volume so that anything within the volume is pixelated to the viewer. Think of NPCs walking with cube volumes blurring out their entire head/face. I got it working to pixelated only the entire mesh via custom depth mask and lerp between pixel vs non pixel inside of a PPM but that was not the look I was going for. A bit stumped on this and not quite sure how to achieve it. Thoughts? (PS: your video's are an incredible resource, thank you so much even if you never have the time to respond to this, cheers!)
I'm really interested in trying to use this pixel PP shader in a 'localized' manner. Meaning, would it be possible to make it so that a specific object is rendered in a pixilated state, rather than the whole screen? Would this be done via post processing? Via materials? Could you make a material inform a post process shade of 'hey render me pixilated'? Just an idea I had that may be interesting, if anyone knows how to go about this or any ideas?
Hi dear Ben. I know this is off topic. But I would ask if there is some way to use parallax mapping node with procedural texture created in UE. I mean, I use procedual noise based mask which blends plaster on top of brick. I want some depth on plasters. But Parallax node only uses texture object. So I want to make bump where plaster mask is. Is there any way to make it work? :/
Which Engine is best for making 3d mobile game without any single animation? i don't like animals, human in my game. Please which engine is good for me?
I'm a bit biased because I work for Unity. But I would say that Unity is better for mobile games. A very high percentage of popular mobile games use Unity and Unity's focus is much more on making a flexible engine that runs on a wide variety of platforms where Unreal's focus seems to be more on creating the best high-end graphics for powerful PCs and the latest consoles.
Awful solution in performance perspective( Firstly we render all passes in full resolution and then we simulate pixelation (low res) in FULL resolution pass again. Farewell performance. Better approach: Reduce output resolution to desired size of pixels. Disable texture filtering. Done. As a result we will have a huge boost in performance with no additional postprocess passes needed.
In unreal, you just have to create a material instance of your post process material. Then instead of the material itself, you apply the material instance to post process volume. You control the parameters through the material instance. i.imgur.com/PtrWAtu.png
Just finished watching your previous 60 videos in this playlist, and now realized that you keep uploading this amazing content. I'm definitely going to come back every week for this. Thank you Ben, your videos taught me everything I know about Shaders.
Looks like most of the comments have already answered your question using the Material Instance method. Another way to do it, which I think is more fitting for a post process shader, is to use a Material Parameter Collection. It's an asset you can create and expose parameters from your materials: the values can be adjusted at edit and run-time.
Thanks
Thanks a lot!
only vid i found that shows how to make real vhs effect and not overlay tysm❤
I would use a parameter collection instead of an exposed parameter.
Using a Meterial Instance for the UE PostProcess Array. Or a Material Parameter Collection.
ooh cool! can we get a posterize effect to go along with it? or even a color palletizer.. (user defined color pallet, and the thing just grabs the closest color in your palette to what is on the screen).
Awesome easy effect, thanks!
Hi Ben, as always, great tutorials and explanations! An easy solution is to make the resolution parameter as a Material Parameter Collection so you can access it in any BP.
Also if I remember correctly, to make the pixels NOT shift diagonally, you could start at the center of the screen and pad them -1 to 1.
in order to change the pixel size in unreal through post process tab, you have to create something known as a global uniform shader parameter, and then replace it with scalar parameter inside the material and then, you have to bind that parameter into the post processing setting struct in source files .
The posterize node helps if you want to keep it simple. But cool to see the math process.
The effect would most likely be referenced in a blue print and controlled from there on how you set it up.
Hello Ben, Thank you for all videos. Can you recreate the HLSL videos?
This is very good to use in a turn based RPG combat game for switching between the world and combat screen.
Thanks, grate tutorial
You can access that parameter by referencing it in a material parameter collection. Then update it there, via the level blueprint or character.
Hi Ben you mentioned several computer graphics books before, but I can't find which video was that :(
There's a link in the description to Shader Book Recommendations: www.bencloward.com/resources_books.shtml
@@BenCloward oh that's right, sorry I had a stroke, thanks this is what I was looking for :)
Hi Ben. To use your exposed parameter, you have to do a material instance. Double-click on it and change the value and voilà
How can i apply this effect to only certain actors (or exclude certain actors) in unreal? thanks
I have heard that someone else did it with a stencil buffer, but I've never tried that, so I can't tell you how to do it.
THANK YOU
QUESTION: Is there a way to use this (or something similar) to target a specific resolution? e.g. make the screen show exactly 640x480 pixels?
You’d use something like the TexelSize to account for screen resolution in the UV.
question: is there a way for the pixelation filter to only happen on specific materials, instead of the whole screen? I wanted my player character to be pixelated, but not my environment...
just an update: managed to do it by using a custom stencil as a mask!
Thank you for the Tutorial @Ben Cloward. What minimum URP/HDRP Version do I need to use the Fullscreen Shader Graph option?
Mathieu Muller answers that question here: portal.productboard.com/unity/1-unity-platform-rendering-visual-effects/c/230-shader-graph-full-screen-master-node
My pixelation work fine, but as the PixelSize was raised, the picture would flicker.(In Unity)
I tried changing the injection point to After - Post Process, and adjust PixelSize to 8, it looks better.
In unreal, the most simple form to change the value, it's taking a reference of the global pose, create a dinamic shader and set in the globalpostprocess slot, tha value change like another dinamic material.
Great video! did that couple days ago and I'm glad I had the same way of thinking! :)
in Unreal there are 2 ways (that I know) you can tweak variables on PPV Material.
1. Would be just to add the Material Instance on the PPV instead of the Material, so when you change variables on the MI, it will update. (different from just the Material, where you need to keep hitting Apply/Save to see the effect working on screen).
2. Would be to create a quick Blueprint, with a PPV on it. On Construct make a Dynamic MI of the PostProcess Material you want, and set the PPV settings to use the Material. Then you can expose the variables you want in the BP with the nodes you want :)
Came here to suggest the material instance approach! Although I like the idea of exposing parameters via the Post Process Materials array...
Hey! Yeah, I'm getting a lot of people suggesting that. I do have a material instance in the array. For some reason, when I was recording the video, I was expecting that the controls would appear there instead of on the instance. Didn't think about it enough. :P
Sir, write down sometime a lesson on creating a billboard shader. Thanks for teaching! =)
That's a great suggestion. Thank you!
Math is the best. I knew all those years of linear algebra would pay off somewhere 😅 I am trying to get this effect constrained to a local volume so that anything within the volume is pixelated to the viewer. Think of NPCs walking with cube volumes blurring out their entire head/face. I got it working to pixelated only the entire mesh via custom depth mask and lerp between pixel vs non pixel inside of a PPM but that was not the look I was going for. A bit stumped on this and not quite sure how to achieve it. Thoughts?
(PS: your video's are an incredible resource, thank you so much even if you never have the time to respond to this, cheers!)
I'm really interested in trying to use this pixel PP shader in a 'localized' manner.
Meaning, would it be possible to make it so that a specific object is rendered in a pixilated state, rather than the whole screen?
Would this be done via post processing? Via materials? Could you make a material inform a post process shade of 'hey render me pixilated'?
Just an idea I had that may be interesting, if anyone knows how to go about this or any ideas?
Hi dear Ben. I know this is off topic. But I would ask if there is some way to use parallax mapping node with procedural texture created in UE. I mean, I use procedual noise based mask which blends plaster on top of brick. I want some depth on plasters. But Parallax node only uses texture object. So I want to make bump where plaster mask is. Is there any way to make it work? :/
You would need to bake the procedural texture. This can be done with a render target and very simple blueprint.
Which Engine is best for making 3d mobile game without any single animation?
i don't like animals, human in my game. Please which engine is good for me?
I'm a bit biased because I work for Unity. But I would say that Unity is better for mobile games. A very high percentage of popular mobile games use Unity and Unity's focus is much more on making a flexible engine that runs on a wide variety of platforms where Unreal's focus seems to be more on creating the best high-end graphics for powerful PCs and the latest consoles.
becasue of the lack of response I'm guessing you already did it earlier.. lol
Awful solution in performance perspective(
Firstly we render all passes in full resolution and then we simulate pixelation (low res) in FULL resolution pass again. Farewell performance.
Better approach:
Reduce output resolution to desired size of pixels.
Disable texture filtering.
Done.
As a result we will have a huge boost in performance with no additional postprocess passes needed.
Yes, that's a good point! Thank you.
In unreal, you just have to create a material instance of your post process material. Then instead of the material itself, you apply the material instance to post process volume. You control the parameters through the material instance. i.imgur.com/PtrWAtu.png