Very interesting article, thanks for sharing!
astounding work there - hope someone important notices! I'm just jrpg fan. . . somebody needs to hire you!
Yasss you guys rule so much LOVE please do the next part!!!
Joyce (MinionsArt) has shared a guide to using the RenderTexture Painting shader the artist shared a while ago. You can do so many things with the help of this cool thing, so take some to study it.
Here are the links if you’ve missed something:
Leave persistent damage from laser or other weapons on the environment
This is the basic setup from linked code, Raycast to the mouse position when you click, adding the brush texture to the lightmap based RenderTexture result on collision
Let the player leave trails with depth in snow/ sand
Set up your shader for tesselation, the Unity Manual here shows how to
Add a vertex function for displacement, using the Paintmap as a texture reference for pushing the vertices
void disp(inout appdata v)
float d = tex2Dlod(_PaintMap, float4(v.texcoord1.xy, 0, 0)).r * _Height;
v.vertex.xyz += v.normal *d;
Now the untouched parts of the snow/sand are slightly higher, and the paintbrush script will push it down
Letting the Player add notes or draw on a map
You dont need the shader for this
Set up a canvas with a raw image, and make a RenderTexture for it
Instead of Raycasting, use the mouse position to paint to the RenderTexture. Get the X and Y coordinates by
xCoordinate = Mathf.Floor(Input.mousePosition.x – rawImage.rectTransform.position.x);
yCoordinate = Mathf.Floor(Input.mousePosition.y – rawImage.rectTransform.position.y);
DrawTexture(texture, xCoordinate, yCoordinate);
With this you can draw on the RawImage UI component
Player Made Textures
Use the painted RenderTextures as a Texture2D for models
Start the same way as the draw map example
To convert the rendertexture to a usable texture, Make a new Texture2D and read the active RenderTexture’s pixels
Texture2D toTexture2D(RenderTexture rTex)
sourceTex = new Texture2D(rTex.width, rTex.height, TextureFormat.RGB24, false);
RenderTexture.active = rTex;
sourceTex.ReadPixels(new Rect(0, 0, rTex.width, rTex.height), 0, 0);
RenderTexture.active = null;
Then assign the result texture to your renderer, and you’ve got a user made custom material!