How to make OWN MATERIAL NODE for Material Editor

Hello there I’m try to reach the goal of making or editing Unreal Engine from C++ side.
One of the things I always wanted to know is how to make a MATERIAL NODE for which could be spawned at the material editor. For instance something like below which is NOT a CUSTOM NODE :
image

Now I have came across some articles where this topic was touched; however never got explained clearly one how does it work

  1. Creating own material nodes?

2.Custom material node to extract UTexture2D data in C++ - #3 by oktomus_tuatara

While the article no.2 does give the insight; however; my first AIM is to call a .usf as a native material node for instance the SkyAtmosphereViewLuminance node which does gives off the color from SkyAtmosphere.usf
image

So here I created a very basic .usf named " test_f.usf "

AS I noticed that all material nodes have a “MaterialExpression” named file I also tried to make one:

However I’m getting errors . .

Now, all these are in a Plugin module which is for shader only and has the below build.cs

Also, the load-phase is “PostConfigInit” as it’s what any Shader module needs to have.

You may ask why I want to do such thing via a Plugin. .
I just want it to be modular and avoid editing engine code as much as possible; also this " GENERIC " plugin is a free for all for Unreal.

Now could anyone give me some info on how I can call/link my .usf to MaterialExpression and also make it possible to appear as a spawnable material node ? ?

1 Like

@oktomus_tuatara I have found the way and was able to make bunch of nodes :slight_smile:


I’ll make a tuto on this soon. The best part is I no longer have to get headache dealing with node noodles. . .

1 Like

Hi! I am stuck with the same problem. Could you share your solution? Thx in advance :slight_smile:

Hi there we have sent you the support channel link. Check your email

Also for anyone interested creation of these advanced type of nodes directly please contact us via link below

Hi, I am looking to create a custom node based on SkyAtmosphereLightDirection or AtmosphereSunLightVector. Except that instead of from the light, I would like to retrieve the Forward Vector from a selected object in the scene. I assume that the Forward Vector is what the AtmosphereSunLightVector provides. Do you think it’s possible to rework an existing node or create a new one that will behave identically to the original and allow you to point to the object whose Forward Vector it will feed? Assuming that the node will occur several times in the material, probably, as in SkyAtmosphereLightDirection, an Index input will be needed. (Actor Index/Object Index)