Need to lock nodes in Material Graph for security

HI,

We are a service facility that want’s to protect our shader development on projects that we share with other studios. Is there a way to create a ‘black box’ that we can put all our shader nodes from the material graph? A way to lock up and secure our shader network?

Does this exist or is this something that needs to be created? Please advise. Thanks!

subscribing to this question because its an interesting one.

Its also a little bit odd, because unless you are creating custom shader stuff, anybody with decent ue4 material/shader knowledge can recreate what they see, or eyeball/wet finger it enough to get a result thats close (or even better depending on the artist) to what they see.

It makes me wonder what kind of product would need such a thing that the shader-content needs to be hidden behind a black box.

I do know for a fact that its not available in the regular ue4 engine, as it would help a lot of us marketplace creators to make sure a shader is not recreated.

Hi Luos, we are a content creator specializing in photo-real digital humans. Our shaders and other aspects of our pipeline are very specialized.

For example, let’s say that a major studio is developing VR content and the director wants to use our characters. Once we integrate our characters into another studio’s pipeline, they will have access to our source material. We can not protect our work from being integrated into other pipelines unless there is a feature in which we can black box it.

The space we are in is very competitive and we have a desirable product.

Considering other companies would need stack UE4 to access it i don’t see this possible to implement it smooth way, best would be in Epic would implement something like that,

A lot easier would be making a plugin (this is impossible without C++) that would have special asset type (inhereted of UMaterial) which would override editor opening function to do nothing and somehow convert materials to it. Since that asset would be still inherent from UMaterial it would be still normally functional material asset, just you would not be able to open material editor.

If you interested in this then good starting point is AssetTools module:

https://github.com/EpicGames/UnrealEngine/tree/e528f9f7fa161504dd629c3b390deac93650e43a/Engine/Source/Developer/AssetTools

Which contains classes with information how to deal with specific assets and how they are displayed with Content Browser (this is good thing to study either way since this is how you make your own assets and this is quite easy once you grasp it):

https://github.com/EpicGames/UnrealEngine/tree/e528f9f7fa161504dd629c3b390deac93650e43a/Engine/Source/Developer/AssetTools/Private/AssetTypeActions

For some reason UE4 have them contained in one module but you can make this in any other module. Each such class need to be manually registered on module start like this:

.h

TSharedPtr<class FAssetTypeActions_YourAssetType> Action;

.cpp:

Action = MakeShareable(new FAssetTypeActions_YourAssetType);    
FModuleManager::LoadModuleChecked<FAssetToolsModule("AssetTools").Get().RegisterAssetTypeActions(Action.ToSharedRef());

I not sure abour asset conversion i never did that ii would need to study that myself. 2nd hand user would need to hjave that plugin too… but i’m not sure how UE4 editor would behave with such asset without that plugin, if it’s gonna see asset? if yes, it will open it in material editor? I think not but i never tested that. Editor extension is very nondocumented so it all try and see.

Still this is only dummy-proof solution, if somebody really wanted to break it he could easily do it with some C++ work, same with your box idea, there still would be needed material data which can be read. For real deal security you would need some DRM-like asset encryption which would need to be deeply implemented in UE4.

You could try start discussion about this by making feature request in feedback forum, but best would be if you not request box idea but overall asset protection, making selected assets unviewable and uneditable yet usable, because as i said best would be inf Epic implement that as both you and 2nd hand developer need code to keep things hidden

I think doing so is pretty pointless, simply because there are reliable ways of ripping the shader code at various stages.
Besides, honestly, I doubt that you can use material graph editor to make something that would be worth hunting for.
If you have really revolutionary tech, secure a patent for it and/or safeguard yourself with contacts/agreements. Otherwise what you are trying to protect has no actual significant value.