Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] ShaderWiz - Shader Wizard for Unity

Discussion in 'Assets and Asset Store' started by sphericalcubegames, Feb 19, 2015.

  1. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    ShaderWiz 1.0
    ShaderWiz lets you focus on the most important part of shader creation: the shader itself! It eliminates the hassle of configuring your shader in code, by providing an easy to use interface. ShaderWiz generates all the necessary property fields, input struct members, preprocessor directives, custom functions, etc... so that you just have to fill in the blanks without having to read countless pages of the Unity manual.

    Features
    - Support for vertex shaders
    - Support for fragment shaders
    - Support for geometry shader
    - Support for surface shaders
    - Gives you maximum control over the generated code
    - Easy to use interface with helpful tooltips
    - Generates beautiful code with helpful comments
    - Excellent customer support
    - And many more!

    Save time!
    Dive into Unity shader creation right away! No need to browse through any documentation or to learn ShaderLab - just write the shader, and ShaderWiz handles the rest.

    Write less code!
    Let ShaderWiz do the heavy lifting for you by generating the skeleton and configuration for your shader! Your shader will already have the necessary setup, so you just have to fill in the blanks.

    Make better shaders!
    By using ShaderLab, you ensure that you don't miss any little detail in your setup, everything is presented to you by a clear and concise interface that shows you just the right amount of information.

    More features coming
    Though this version of ShaderWiz only supports surface shaders, we are almost ready to release support for vertex/fragment shaders and fixed-function shaders. Remember, the more feedback we receive, the sooner we are ready.

    Coming soon
    - Support for tessellation shaders
    - Support for fixed function shaders
    - Unity 5 specific settings

    Asset Store
    Website
    Email
     
    Last edited: Mar 13, 2015
  2. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    708
    Looks interesting. You should make a quick video to show the use of this product and what kind of features one could expect.
     
  3. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    Hi, great idea, video is in the making. In the mean time, ask me any questions, I'd be more than happy to answer.
    Cheers, Andrew
     
  4. BTStone

    BTStone

    Joined:
    Mar 10, 2012
    Posts:
    1,422
    What's the performance off the generated shaders?
     
  5. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    Hi, ShaderWiz only generates the skeleton (the setup) for the shader, thus the performance only depends on you. We created this tool when we realized that every time we want to create a shader, we have to look up the shader reference in the Unity manual, since there is a bazillion of setup possibilities for a shader in Unity. It saves you time and a lot of headache, since this way there's no way you can miss a required compiler directive or misspell a built-in Unity input variable. We are not intending to replace Shader Forge in any way, this tool is for stubborn people like us, who still want to write their own shaders, but don't like the hassle of making it work in Unity. :p

    All in all, it does not generate the actual shader for you, but it makes writing it dead simple.
    As an example, this is a skeleton that I quickly generated using ShaderWiz:

    Code (csharp):
    1. Shader "SphericalCube" {
    2.     Properties {
    3.         _Diffuse ("Diffuse Map", 2D) = "white" {}
    4.         _Bump ("Bump Map", 2D) = "bump" {}
    5.         _Tint ("Tint", Color) = (0.1686275,0.2431373,0.3137255,1)
    6.         _Saturation ("Saturation", Range (0, 255)) = 77
    7.         _Dir ("Direction", Vector) = (1,2,3,4)
    8.         _Count ("Count", Float) = 2
    9.     }
    10.  
    11.     Subshader {
    12.         Tags { "IgnoreProjector" = "True" }
    13.  
    14.         CGPROGRAM
    15.         #pragma surface surf LightingCustom vertex:vert finalcolor:color tessellate:tess alpha addshadow dualforward fullforwardshadows novertexlights approxview
    16.         #include "Tessellation.cginc"
    17.  
    18.         // If you want to access a property, declare it here with the same name and a matching type.
    19.  
    20.         // To use second uv set, declare uv2<TextureName> inside Input.
    21.         struct Input {
    22.             float2 uv_Diffuse;
    23.             float2 uv_Bump;
    24.             float3 viewDir;
    25.             float4 vertColor : COLOR;
    26.             float4 screenPos;
    27.             float3 worldPos;
    28.             float3 worldRefl;
    29.             float3 worldNormal;
    30.             INTERNAL_DATA
    31.    
    32.             // Declare custom input members here. Name cannot begin with 'uv'.
    33.         };
    34.  
    35.         void vert (inout appdata_full v, out Input o) {
    36.             UNITY_INITIALIZE_OUTPUT(Input,o);
    37.             // Modify vertices here
    38.             // To pass custom data to surface function, write to o.
    39.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
    40.         }
    41.  
    42.         void color (Input IN, SurfaceOutput o, inout fixed4 color) {
    43.             // Modify final color here.
    44.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
    45.         }
    46.  
    47.         float4 tess (appdata v0, appdata v1, appdata v2) {
    48.             // Implement tessellation here.
    49.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderTessellation.html
    50.         }
    51.  
    52.         half4 LightingCustom (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) {
    53.             // Implement custom lighting here.
    54.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
    55.         }
    56.  
    57.         half4 LightingCustom_PrePass (SurfaceOutput s, half4 light) {
    58.             // Implement prepass function for deferred lighting here
    59.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
    60.         }
    61.  
    62.         half4 LightingCustom_SingleLightmap (SurfaceOutput s, fixed4 color) {
    63.             // Implement single lightmap decoder here.
    64.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
    65.         }
    66.  
    67.         half4 LightingCustom_DualLightmap (SurfaceOutput s, fixed4 totalColor, fixed4 indirectOnlyColor, half indirectFade) {
    68.             // Implement dual lightmap decoder here.
    69.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
    70.         }
    71.  
    72.         half4 LightingCustom_DirLightmap (SurfaceOutput s, fixed4 color, fixed4 scale, bool surfFuncWritesNormal) {
    73.             // Implement directional lightmap decoder here.
    74.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
    75.         }
    76.  
    77.         void surf (Input IN, inout SurfaceOutput o) {
    78.             // To complete the shader, fill in the fields in o.
    79.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
    80.         }
    81.         ENDCG
    82.     }
    83.  
    84.     Subshader {
    85.         CGPROGRAM
    86.         #pragma surface surf Lambert
    87.  
    88.         // If you want to access a property, declare it here with the same name and a matching type.
    89.  
    90.         // To use second uv set, declare uv2<TextureName> inside Input.
    91.         struct Input {
    92.             float2 uv_Diffuse;
    93.             float2 uv_Bump;
    94.         };
    95.  
    96.         void surf (Input IN, inout SurfaceOutput o) {
    97.             // To complete the shader, fill in the fields in o.
    98.             // Help: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
    99.         }
    100.         ENDCG
    101.     }
    102.  
    103.     Fallback "Diffuse"
    104. }
     
    Last edited: Feb 21, 2015
  6. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    It looks like a nice asset...but I think you might have to rename your asset. I already have an asset on the store called Shader Wizard, and it is also a shader generation tool. This is much too closely named and will cause customer confusion for both of us. I'm surprised the Unity asset store team let this get past.

    https://www.assetstore.unity3d.com/en/#!/content/4549
     
    Last edited: Feb 21, 2015
  7. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    No, we won't rename it. Renaming the asset is not possible at this point, since then those who already bought it would have to buy it again (that's how Unity works). On the other hand our brand is ShaderWiz, which is fairly unique in my opinion, and the functionality is entirely different from your asset. "Shader Wizard" is not a brand. It is merely a description of the functionality. If you want to avoid such conflicts, you should name your assets in a less generic way. Using "Shader Wizard for Unity" as subtitle seems logical, since our asset is just that - a wizard that helps setting up shaders. If all else fails, I have trust in the Unity community that they can read the description. :)

    Wow, this might have sounded a bit harsh. :) Anyways, I don't think it will mean a problem to most users, and our products don't compete in any possible way.
     
    Last edited: Feb 21, 2015
  8. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    I see better now what your asset does and I agree there is less overlap. Hopefully people can figure it out. I still feel the naming is a bit close, but I do understand the issues with changing it. I probably overreacted somewhat. :)
     
  9. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    Actually you still can without losing your existing customer base... I renamed an asset from "Animated Dissolves for Shader Forge" to "Ultimate Dissolves". Unity told me I would not lose any customers - provided they made the change. If I'd reuploaded a new package or whatever it would've lost everyone.
     
  10. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    Well, ShaderWiz is staying for now, since I introduced it as such on all possible forums. If anything, changing it would result in customer confusion. Good to know though that package names are not carved in stone. I'll keep that in mind.
     
  11. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    Hi there,
    As promised, we are almost done with support for vertex/fragment shaders in ShaderWiz. The right panel shows the settings for a programmable pass. If you have a suggestion, just name it, and we'll get it done (yes, we love feedback). Expect release in a few days. :)
     
  12. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8
    ShaderWiz dev update!
    We are still refining the huge upcoming update. The most recent addition is the vertex attribute panel that will save you even more typing. Chose from one of the Unity presets, or define your own custom input structure!
    If you want to be an early adopter, you can already get it at the Asset Store: http://u3d.as/bBM
     
  13. sphericalcubegames

    sphericalcubegames

    Joined:
    Dec 31, 2013
    Posts:
    8


    Features
    - Support for vertex shaders
    - Support for fragment shaders
    - Support for geometry shader
    - Support for surface shaders
    - Gives you maximum control over the generated code
    - Easy to use interface with helpful tooltips
    - Generates beautiful code with helpful comments
    - Excellent customer support
    - And many more!

    Coming soon
    - Support for tessellation shaders
    - Support for fixed function shaders
    - Unity 5 specific settings
     
    Last edited: Mar 13, 2015