A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Assets and Asset Store' started by Amplify_Ricardo, Sep 13, 2016.
Thanks, it will help me greatly!
EDIT: You can send it to email@example.com
Can you use/edit pre-written shaders with this?
Also, does this support vertex-color masking? I'm trying to implement vertex color masking into a pre-existing shader and i'm considering buying the beta if it is capable of doing the forementioned things.
For the first question, no, you can't. The editor saves the node information on the shader file, then it loads that information, not the actual shader code.
For the second on, yes, you can easily do blends using vertex color, you can use "lerps" manually or you can use specialize nodes for it, here's an example:
If you have not already, be sure to check out the latest Amplify Shader Editor BETA. We would also like to take this opportunity to remind you that you can download the latest development build directly from our website.
Amplify Shader Editor - Asset Store Page
Having trouble with vertex color, blend mode and fog.
Making a shader that should read vertex color as transparency and respond properly to fog and it's not working quite right.
The shader is applied to the disk, it should be black in the center and transparent at the edge, also the white fringe stays white far in the fog, where other objects are the color of the fog.
Solution : switch blend mode to fade.
How do I make an additive material?
I bought this one on the asset store two days ago and I like it a lot.
I did run into some issues, though:
- the scale nodes do not work. If I set a value and open the shader again, the value resets to 1. I am using the multiply node as a workaround now.
- using the "tex" input of the texture node with a wrong input instantly kills Unity
- in rare cases there are a few repainting errors that I am not sure of how to reproduce: the value of one node is temporarily painted in another one, zoom artifacts in the editor. forcing a repaint through scrolling etc. removes them.
Unfortunately I can only search the whole forum, but not only this thread for keywords, so I don't know if those were already mentioned.
Keep up the great work, looking forward to the next versions!
PS: Also when using Multiply or FMod with multiple components, those nodes often lose all values except the first one, e.g. X=2,Y=2, Z=2, W=2 will be X=2, Y=0, Z=0, W=0 afterwards.
Hey, @Amplify_RnD_Rick, will we be able to create true front and back shaders with this. I am planning on creating characters with clothing and I want to be able to assign different textures to the front and back of surfaces, especially for cloth sim...
Unfortunately this is still not possible on ASE directly but we'll try to add it on a near future. You would need to set both Source and Destination to One the shader Blend mode.
We really want to add a multiple pass feature on ASE which would be the solution to render double side materials with correct lighting. Unfortunately we are unable to provide you a correct estimate on which the would be included on ASE.
You can however for now go with Kebrus suggestion bellow:
"While multiple passes don't come where's a quick solution. It's not as fast as doing separate passes for front faces and back faces but at least it works for now. If performance is an issue don't use either, just duplicate the faces in your 3d software, invert them and give them proper uvs, that's the cheapest way in which you don't even have to deal with multiple passes.
Thank you so much for reporting these issues. Some of these are already fixed on our latest version. For you to get access to it you need only to head out to our download page, write your invoice on the text area and hit to unlock button.
Thank you for your reply!
Just a quick feedback: I did download the new version after posting here. The crash of the tex input cannot be reproduced as it blocks invalid input. The loss of values for the scale, fmod and multiply nodes is still there, though.
I will have to try this... and also with a toggle to turn it off if I don't want it...
A suggestion (I have no idea if that is possible to do):
I would love to have some profiling in the editor, so I can see the performance impact of my nodes. That way I would better know what parts to reduce or remove if the framerate is reduced too much.
If this asset could use the inputs/outputs of pre-existing shaders i would buy it.
Would this even be possible to implement, or am i asking too much?
Just uploaded a new build fixing some of the reported issues.
Release Notes v0.3.1 dev 005:
Side menus are now resizable
Tweaked 'Weighted Blend' node
Added 'Summed Blend' node
Added 'Toggle Switch' node
Added new 'Scale and Offset' node
Fixed issues on 'Vertex Binormal World' and '[VS]Vertex Tangent' nodes
Fixed issues with 'Texture Sample' nodes created via dragging a texture to ASE
Fixed issue with 'Scale' node
Fixed issues on incorrectly reading 'Receive Shadows' parameter from ASE shader previous to v0.2.5
We managed to easily replicate the Scale node issue but we don't quite understand in which situation fmod and multiply is making you loosing data.
Is it possible for you to let us know your steps on doing that so we can replicate on our end and fix it?
We are planning on showing the instruction count generated from the graph. This way you can have a grasp on the impact each node is generating.
Parsing a pre-existing shader and generate a full graph of it is really tricky. We are however working on this being possible but through some tiny changes on the shader you want to import.
I recorded a small video:
It is an understandable effect, but it would be very convenient if the node stores those values even if the input is connected to an empty head node and reconnected later on.
Also: Your new beta download says "4th December 2017". I'm pretty sure I haven't slept for that long...
PS: There is an expeption (see below) when doing this:
- create two multiply nodes
- connect the output of the first with any input of the second
- select the second one (the downstream one)
- remove the connection with ALT+click on it or dragging it
- see console
This only happens if the second node is selected.
ArgumentException: Getting control 1's position in a group with only 1 controls when doing Repaint
UnityEngine.GUILayoutGroup.GetNext () (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/LayoutGroup.cs:114)
UnityEngine.GUILayoutUtility.DoGetRect (Single minWidth, Single maxWidth, Single minHeight, Single maxHeight, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption options) (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUILayoutUtility.cs:421)
UnityEngine.GUILayoutUtility.GetRect (Single minWidth, Single maxWidth, Single minHeight, Single maxHeight, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption options) (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUILayoutUtility.cs:410)
UnityEditor.EditorGUILayout.GetControlRect (Boolean hasLabel, Single height, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:7498)
UnityEditor.EditorGUILayout.Vector3Field (UnityEngine.GUIContent label, Vector3 value, UnityEngine.GUILayoutOption options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:6773)
UnityEditor.EditorGUILayout.Vector3Field (System.String label, Vector3 value, UnityEngine.GUILayoutOption options) (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:6767)
AmplifyShaderEditor.InputPort.ShowInternalData (Boolean useCustomLabel, System.String customLabel) (at Assets/AmplifyShaderEditor/Plugins/Editor/Wires/InputPort.cs:301)
AmplifyShaderEditor.ParentNode.DrawProperties () (at Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/ParentNode.cs:1131)
AmplifyShaderEditor.ParentNode.SafeDrawProperties () (at Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/ParentNode.cs:1094)
AmplifyShaderEditor.NodeParametersWindow.Draw (Rect parentPosition, AmplifyShaderEditor.ParentNode selectedNode, Vector2 mousePosition, Int32 mouseButtonId) (at Assets/AmplifyShaderEditor/Plugins/Editor/Menu/NodeParametersWindow.cs:58)
AmplifyShaderEditorWindow.OnGUI () (at Assets/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderEditorWindow.cs:2633)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
So the double sided shader trick worked... now just gotta get the light rendering the sides correctly
Edit: Ok...I get it know, I should read the tooltip before I post, sorry for the interruption
Hi, just wan to ask, is the Queue Index in the shader editor = the Render Queue in Unity Inspector?
Cause I realize if I change and save the Queue Index value in the shader editor, the Render Queue value at the Unity inspector wont update/change
I dont necessarily need to convert or edit the pre-existing shader, I just want to be able to use its IO with the nodes.
It was awesome for you to take the work on creating a video demonstrating the issue. Really cool indeed!
What you shown is kinda of an expected behavior. Nodes like Multiply and FMod automatically adapt their ports to what is connected to them but start as Floats.
So taking it step by step:
You create FMod and it will have all its ports set to Float by default
As soon as you connect the Vector 3 to it, it will change all its ports and respective internal data to Vector 3.
We have a priority system on which it always chooses the type of connected ports to be used over disconnected ones
All other input ports which are not connected will be changed to the new chosen type and their internal data will be adjusted
If both ports are connected, then each type as an associated weight and the result type is chosen according to it.
P.e. Vector 3 as an associated weight of 6 as a Float on have a weight of 4 so if you connect a Float and a Vector 3 to a Multiply node then the Output port type will be a Vector 3.
You then modify the internal data for the B port which is internally set to a Vector 3
When creating a Multiply node it will again, by default, have all it's ports also set to Float
As soon as you connect it to the A input FMod, and since it is the only input connection, you will be forcing B to also change to Float
Since now B is a Float, its internal data will cast to Float, on which we internally achieve by getting its first float element ( thus loosing all the remaining elements )
You then connect the Vector 3 node into the Multiply, which changes its type to Vector 3 and propagate this change to FMod resulting on its A port internal data to be set to Vector 3
Since it was previously a Float, it only contains one element which is set to the Vector 3 first component, thus showing the result you reported
Sorry for the long explanation, but just wanted to explain why this is the intended behavior.
Concerning the exception you reported, we already fixed it and uploaded a new build into our webpage.
No problem at all, please do always report any issue you may have or something you don't quite understand.
I'll just give a brief explanation here to other community members that may come across with this.
Queue index is an offset which is summed to the selected render queue index.
Here are the internal indexes associated with each render queue:
So in this case, as we have Geometry Render Queue selected and have a Queue Index of 2000, the resulting Render queue is 2000 + 2000 = 4000.
Those tags I referred earlier may also be used to accomplish that. But to be honest, we are still very early on our research and cannot give yet a proper estimate on when and what we can achieve with our plans.
I do apologize for not being able to give you a more straight answer.
As a coder I was expecting something like that. That's why I wrote "It is an understandable effect". At the same time, I would think about adding a memory of previously used values. Even when switching type it would still keep the value of the components that are still applicable.
So I would probably implement it with a fixed internal data structure of float to store the value and only use the components necessary for the currently assigned type. e.g. use float for a simple float or Vector3(float, float, float) when switching to Vector3, so even when switching back and forth between those types, the most recently assigned values would still be there. Might be more complicated if you have a type that float is incompatible with.
But that does not necessarily match your coding pattern or grand picture. As I said: It would be a convenience feature and when you know what happens (thanks for your in depth explanation) you can work around or anticipate those effects.
I would like to report a very minor bug: Copying nodes does not take the names with them. I tried to copy a section of one of the shader examples into one of our custom shaders and the names for the properties (in this case floats) were not carried over.
Thank you for reporting this issue. We'll register it on our bug tracker and fix it as soon as possible.
I also noticed a clipping bug in the interface (so nothing major) with the connections. Details in the attached image.
This is a question that may have been answered in the 15 pages, but didn't nothing seemed to pull from searches so...
The handful of gbuffer related global textures that hold the various render layers: Depth + Stencil and CameraGBufferTexture0-3, does Amplify Shader give me access to that, or is this still something I will have to write code for manually?
I made a similar post about this over the holidays. I'd love it if you could keep similar names, if possible, when copy and pasting within the same shader as well.
Eheh nicely caught!
Unfortunately we do not give access to them via ASE but we'll register your request in our community suggestions section of our roadmap.
We apologize for not answering back to you about this issue, you are totally right on noting that this had already been reported by you.
Rest assured that we'll take care of it and will be fixed on a near future.
Anyone using the Custom Expression node? It's super quick to setup!
We encourage you to share your creations with the growing ASE community. In addition to this thread and our own Sample Page, we will feature the latest notable samples in the ASE Asset Store page.
Submit Content here!
Context menu with option to delete a node? I just like a mouse centric workflow sometimes.. and it seems the only way to delete a node is by hitting the delete/backspace key.
Things like resizing the comment box.. the mouse cursor doesn't change to signify you're over the corner edge to resize it. .. also a faster way to disconnect a connection that doesn't involve clicking on it, moving out of the input and releasing, when it then opens the popup.. its kinda annoying sometimes.
Selecting a connection spline directly so it highlights, you can dbl click on it to add another point, but it would be nice to be able to select them and also be able to delete completely, maybe right click on a connection input/out deletes the connecting spline(s) directly, that way don't have to drag it out and get that auto popup to deselect out of.
Could amplify andle some sort of internal variation of shaders so you can within one shader make something, take a snapshot of it, to set as the main shader, then make some changes based off it, and bookmark that as wip.. then whatever bookmark your variation is set to will get compiled...
A bit like photoshop layer compositions..so amplify stores all the compositions in the shader file commented out in its own format as it does already, but whatever the main comp is set to is what gets compiled and generated as the main shader code? (not really a subshader though.. it would be like variation system for subshaders aswel ) Failing that making it easier to save a shader directly to another filename within amplify?
How far off is amplify from being able to open existing shaders and display them as nodes? I often just find myself wanting to make tweeks to existing shaders, sadly still have to open them in code form
"Anyone using the Custom Expression node? It's super quick to setup!"
I didn't know about it.. haven't gone through most the nodes.. though I did find the layer blend type nodes pretty useful
After cleaning up my first shader a bit, I have a few notes:
- when moving the comment node it will swallow all nodes it gets dropped on, I expected it to be a more stable grouping element and only contain the initial assigned nodes or nodes that are dragged into it
- the shader editor is coming to the front a bit too aggressively for my taste. often when I was just checking a gameObject with a shader to see the input values, the shader editor popped up and moved the inspector to the back as I have those two tabs in the same container
- after switching the inputs of all my multiply nodes at least three times each, I was wondering if there should be a key modifier letting you switch connections with each other, e.g. holding down CTRL while dragging the top input of the multiply node onto the bottom one would switch those two.
- when I tried dragging around multiple nodes using a multiselection while zoomed out, I often accidentally hit a connection and started dragging that one instead. When there is a multiselection, the inputs could probably be locked to avoid this. maybe as an option?
- BTW: will there be options to customize the behaviour of the editor? probably define own key shortcuts, etc.?
PS: Is this art yet? XD
art node spaghetti rating 4.4
And are you planning on showing each node's result within the node?
I like that idea, I've had that problem many times before
Player7 and ScaniX, thanks for all the suggestions, there are some really cool ideas in there.
Will also take a look at the reported issues.
Regarding the more direct ASE questions:
We are researching the best way to be able to tackle this request so it will take a while until we can give you an estimate on this.
Unfortunately we are not planning on adding this level of customization.
This has been a very requested feature so we are heavily considering on implementing this but if so, wont be on a near beta update.
Also, we are planing to upload a new build tomorrow with some of the reported bugs already fixed.
Thanks to all of you guys which are taking the time ( and having patience ) on reporting bugs and giving us such cool suggestions.
First of all, I'm really loving Amplify Shader Editor, so far. You guys are doing some really amazing work here!
Question 1: Are toon shaders possible, yet? Looking at the manual I see "The Opacity Mask, Per-Vertex Data and Custom Light Model input ports of the Master Node are currently disabled." Do we need to wait until custom lighting is implemented?
Question 2: Will light maps be supported for custom lit shaders? I ask because Shader Forge does not support light maps for custom lit shaders. If possible, I would really like to see this added to Amplify since it doesn't sound like it's going to be implemented in Shader Forge any time soon:
Some notes about the new expression note:
- it took me a while to get it to work, the first attempts just ended with a shader compiler error (undefined variable v), using two float3 as inputs
- adding and removing inputs using the +/- at the inputs will create wrong indices at the inputs (e.g.  in0,  in1,  in2,  in3, ...), but I don't know if that has any impact
- if you use i or v (or maybe others as well) as names for your inputs, they will collide with the ones created by the node
Negativity compensation note:
- I really like this node. After playing around with it for a while I got it to work and was able to do stuff that I normally would need lots of separate nodes for
Thank you so much for such kind words!
You can already play/hack around a bit with it by writing on the emission channel but it will be far easier ( and correct ) when we will launch support for custom lighting.
Since we are internally using Surface Shaders on ASE, they automatically support lightmaps.
Thanks for yet another cool feedback. We'll take a look at the index issue you reported and fix it as soon as possible.
That's awesome news!!! -- Thanks again : )
Follow up question: Looking through the list of available nodes, I'm trying to find equivalents for these 3 nodes from Shader Forge:
I don't see them in the list, but maybe they're just named differently? If not, would it be possible to put these nodes on the to do list?
@studio1h answering about the nodes you requested.
You can use our 'World Space Light Pos' node. This returns a light direction if you are using directional lights.
Please check our 'World Normal' node.
We don't have a node which gives light attenuation directly but we have a 'Light Color' node which also takes attenuation into account.
We also uploaded a new build. Here are the release notes:
Release Notes v0.3.1 dev 008:
Small fix to 'Virtual Texture Object' node
Fixed issues on 'Texture Sample' node
Fixed issue on not correctly unregistering nodes from 'Commentary' nodes when they were deleted
Fixed issue when reading old shaders created with v0.2.4 dev 004
Fixed issue with 'Texture Coordinates' node when using Tessellation
Fixed issues and tweaked overall normals generation
Fixed issue on 'Vector From Matrix' node
Fixed issue on ASE canvas camera incorrectly panning when hitting a tooltip with Middle/Right Mouse Button
Fixed connection errors with 'Vector From Matrix' node
Fixed issue with 'Vertex To Fragment' node
Deprecated 'Local Position' node
Added 'Grab Screen Position' node
Tweaks on nodes and ports names to maintain overall consistency
Added new Scale and Offset option on 'Screen Position' node
'Register Local Var' node now also has system to prevent duplicate names
Please let us know if you have any issues and happy shader creations!
Here's another build.
Release Notes v0.3.1 dev 009:
Fixed 'Grab Screen Color' node issues
Minor tweaks on Context menu
Tweaked 'Screen Position' and 'Grab Screen Position' behavior
Added switching of input ports connections by holding the CTRL key
Added removing of input ports connections by double clicking with the left mouse button on them
Forcing Shader Model to at least 4.6 if Tessellation is active
Just a few notes:
Regarding the context menu tweaks, it now doesn't show when picking up a input port. It also now creates a node from the original mouse start position you right mouse clicked instead of the actual one when selecting the desired node.
A new 'Noise Generator' node is also on the works since the current one has lots of artifacts. You can already check it out but please take note it is still is a work in progress.
Like always please let us know if you have any issues and happy shader creations!
Awesome news! It is really fun to see this evolve at an amazing speed.
Concerning the expression node (or all shaders in general):
Could there be a region in the .shader file that you ignore and keep as is? This would allow me to write my own little function (e.g. angleBetween()) and then use it in the custom expression node.
Just an idea.
PS: I think you are still investigating the index problem in the expression node, so this could be related:
Bug: Expression node input arrogantly ignores connections
- Create expression node
- Add second input
- Delete first input (using "-" on first input)
-> Remaining input no longer accepts connections
I'm a happy camper
Since it has not been addressed for a few months and i don't see this on the roadmap, i would just like to ask when we might get refraction support.
Otherwise we are really happy with the beta, keep up the great work
I love this as well. You can also switch connections between different nodes.
Another crazy idea to enable us to write reusable functions in the shader:
Have a node that has N inputs (or N*M inputs) and N outputs, so I can use the same expression to evaluate several cases.
Another way to do this would be to add that "instance" vs. "object" toggle that exists in texture nodes. So I can have one custom expression node as the function and add instances of it to evaluate other cases in the same graph with the same expression.
PS: I used the expression node yesterday to create an animated shader and I guess without it the graph would be totally unmanagable with like 30 extra nodes for all the calculations. So this is definitely a great thing.
Refraction was one of first things I did with the editor after the first few updates, so in a sense it was one of first things to be addressed. Here's the simplest example I can come up with using one of the samples as a base:
I also shared a different refraction version in the first pages that has the normal of the object into consideration and does chromatic aberration. Here's an updated version using new nodes to support normal maps as well
*download in attachment*
(Now i feel stupid)
Thanks man, awesome! Much, much appreciated!
This is shaping up quite well... I have been meaning to ask, how do I set the comments for a shader tree? I keep seeing them in examples, but I can't seem to create it.
Select some nodes, then press C. I hope I remember it correctly.
PS: I experienced this as some sort of hidden feature as well. I started to believe they were trolling me by showing something in their screenshots that wasn't really there... ^-^
Quick question: Do we have an acces to HDR color for the emissive ?
And I'm not sur if the baked mode for the GI works propreply. I have well setup the shader in opaque geometry as it was specify in a previous update but it is still not working for me :/
Here is an exagerate exemple where I have boost the emissive and the color.