- Home /
Pass "external" uv's to shader
Hi, I'm trying to draw to a texture dynamically mimicking paint on surfaces.
My current setup is as follows. I render a stamp texture with Graphics.DrawTexture to a render texture that is later used by my shader to display the paint.
float xPos = UV.x * rt.width;
float yPos = UV.y * rt.height;
RenderTexture.active = rt; //Set my RenderTexture active so DrawTexture will draw to it.
GL.PushMatrix(); //Saves both projection and modelview matrices to the matrix stack.
GL.LoadPixelMatrix(0, 512, 512, 0); //Setup a matrix for pixel-correct rendering.
//Draw my stampTexture on my RenderTexture positioned by posX and posY.
Graphics.DrawTexture(new Rect(xPos - stampTex.width / 2, (rt.height - yPos) - stampTex.height / 2, stampTex.width, stampTex.height), stampTex, mat);
GL.PopMatrix(); //Restores both projection and modelview matrices off the top of the matrix stack.
RenderTexture.active = null; //De-activate my RenderTexture.
For simple meshes this work's fine as shown here:
When it comes to more complex meshes, like my simple character, the paint isn't applied consistently.
So i created a material that i pass on to Graphics.DrawTexture to handle the mapping. The problem is I have no idea how to accomplish something like that. How do i map my splat texture to the render texture with my character's UV-set? So that the texture is rendered correctly. Thanks!
Your answer
Follow this Question
Related Questions
How do I get mesh data into post-processing shader (or render a mesh shader to a texture)? 0 Answers
CustomRenderTexture ignores "ComputeScreenPos" 1 Answer
sampler2d object has no methods 1 Answer
Folded UV's results in difference in shading of normals? 0 Answers
How to use Camera.RenderWithShader() to modify rendered image? 0 Answers