Crystal Generator Tool #4: Improvements

Work In Progress / 20 November 2019

To demonstrate the shader, I modelled a very basic crystal which has around 30-40 polygons maximum. I had to UV these quickly just to make sure I could demonstrate what I wanted to show in terms of progress to my colleagues. Overall, I believe the tool is showing genuine progress, but I am not completely happy with the visuals just yet. I also need to work on the algorithm for the actual mesh generation which could let the user change the size and the amount of crystals present - however I can see the UVs being issues.

The feedback I recieved was as follows:


  • Make a clone of the crystals in the middle and then put the pattern on top of it and it could look better – maybe look into it with shaders
  • Move "randomise all" to the top so a user doesn’t accidentally click it when they customise it loads
  • Whack an alpha parameter into the texture
  • Add colour choice to emissive
  • Edge damage on the crystals
  • Random directions for placement

Good things

  • Visuals are nice
  • Reflections are really good
  • Nice customisation

Bad things

  • Looks “too” solid

After looking at this feedback, it is important to look at prefab variations and overrides as it could greatly improve the customisation and will allow me to implement them into the tool itself. Much of the feedback is also stating movements and adding colour choice to other elements such as emissive, which should be easy to implement when using Shadergraph.

  Current Shadergraph Set-up:

Crystal Generator Tool #3: Adding Texture

Work In Progress / 20 November 2019

One of the core components of the crystals I wanted to implement was adding refraction which could be affected by the texture the designer wants to add to their crystals. I added a texture node within Shadergraph which can be readily changed in my UI as well as implementing texture co-ordinates so the texture can move on the horizontal and vertical axis as designated by the user.

I also added the functionality for Shadergraph to create a normal map from the texture supplied to add a bit more realism to the design itself; by doing this, the light can refract using the normals and the crystals can then have a bit of added geometry which doesn't affect the polygon count.

I think it may be worth looking into the feedback I receive shortly and add this to the development of the tool, as I am not quite happy with the position of it yet - is it possible to achieve the crystal I want visually?

Crystal Generator Tool #2: Basic Integration

Work In Progress / 20 November 2019

Learning and implementing Unity UI into my tool has allowed a method of customisation that I would like to be featured within the tool. 

By setting up parameters such as colour, size, patterns etc. the user will be able to customise these elements without even touching the Shadergraph code attached to the material. This is ideal as it will save a designer the complexity of having to learn Shadergraph and gives the designer a clean and easy to use interface.

So far, there is implementation for colour and fresnel customization through the sliders which are connected to the attributes within the Shadergraph - interestingly, the attributes were just Hex values until I renamed them which seems to be a weird way of going about it (@Unity).

The Fresnel slider is a simple 0-1 slider, while the colour involves a colour picker or the ability to randomise the colours using "Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);" which allows the randomisation to pick brighter colours as recommended by the Unity documentation ( and also prevents the crystals from being a horrible colour.


Crystal Generator Tool #1: Concept and Implementation

Work In Progress / 20 November 2019

For an assignment, we have to create a product we can sell - this could be a game, app, tool etc. Wanting to work with shaders and the roles of a technical artist, I have decided to combat a tool which would allow a designer to create a crystal and save out the prefab to use within the scene itself. 

This generator tool would include (in order of priority):

  • Colour customisation using EditorGUILayout.ColorField.
  • Size/Amount of points customisation using integers.
  • Pattern/Noise customisation for the noise shader using textures.
  • Reflection customisation.
  • A ‘randomise’ function to allow the generation of random crystals – allow constraints to be customised using [MinMax in Unity UI].

Stretch Goals:

  • The ability to ‘paint’ the crystals onto the scene for easier placing.
  • Growing crystals.

Looking at these similar examples there seems to either be a ‘generator OR pretty’ dynamic happening within the Unity Store; the assets seem to either be very aesthetically appealing or actually have a generator that works – but not both.

I believe the idea I am proposing here could work due to its gap in the market, and it would allow me to have an excellent portfolio piece with technical art.