tex2Dlod in Tessellation shader - Shader receives 1 (and slowly raising) value on all Float variabels
Hello,
i have a problem with building an unity project. I am working with unity for my university project and want to create a grass field (implemented with my own shaders). For the presentation I want to build a .exe with unity's build wizard and run it, but unity sends a value of 1 to my grass and terrain shader for every float value I use in the properties. The value is raising very slowly. This bug only occurs on the finished build and not during game preview in the editor itself.
Setting the value (hardcoded) in the shader itself works in the build. A workaround would be to pass a vector with the needed float values, but it does not work, too.
The Code can be found on github: link to github (i hope everyone can access it)
picture of error More pictures can be found in git.
Update: I found the line of Code that couse the problem. My TerrainCreatorShader calls in the domain shader a displace function that runs this line of Code:
No Problems:
input.vertex.y = tex2Dlod(_HeightMap, float4(input.texcoord.xy, 0, 0)) * 50;
Problems:
input.vertex.y = tex2Dlod(_HeightMap, float4(input.texcoord.xy, 0, 0)) .r * _heightmapCoeffizient;
It seems like Tessellation (and Geometry) stage cannot accress uniform variables.
I would appreciate any suggestions and help in finding my error.
Regards Gregor
Answer by GregorKobsik · Feb 04, 2017 at 11:11 PM
Solution:
I renamed my uniform variable from _heightmapCoeffizient to _Hoehe. Also renamed my uniform variable in my Grass Sahder with the same error from _Width to _BreiteDesGrashalms which works now.
Then i built it and run immidiately without entering the preview mode. (one renaming with previous entering the preview mode didn't help)
I would like to know what coused the problem for future generations, but my problem is somehow solved now.
Gregor