Modifying shader requires restarting application
Lately, every time I make a change to my shader and return to the editor window that has my running application, the meshes that were previously using that shader disappear or turn gray. This has been happening on versions 5.5 and 5.6b.
I suspect this is happening as a result of a 'for' loop that occurs in my shader. The structure of the fragment shader is as follows:
int best[2];
for (int i= 0; i < 50; i++) {
if (some_condition)
best[0] = i;
if (another_condition)
best[1] = i
[...]
}
return UNITY_SAMPLE_TEX2DARRAY(_TexArray,float3(x,y,best[0])) +
UNITY_SAMPLE_TEX2DARRAY(_TexArray,float3(x,y,best[1]));
The Frame Debugger shows Draw calls corresponding to the meshes that are in the scene, and there are no errors displayed in the console.
A few things that might be relevant:
It's been quite a bit longer than usual (3-4 minutes vs 5 seconds) to compile the shader.
I'm using quite a few calls to the built-in Tex2DArray macros within the shader.
If I return float4(1,1,1,1) in the first line of the fragment shader, or remove the loop, I don't encounter this problem.
Another perhaps relevant detail:
Reducing the length of the loop to a small number (e.g. 1) doesn't solve the issue.
Removing all calls to UNITY_SA$$anonymous$$PLE_TEX2DARRAY inside and outside the loop also does not solve the problem.
Your answer
Follow this Question
Related Questions
Metallic material decomposing light in rainbow spectre? 0 Answers
Is there any way to make a custom written shader with hdrp? 0 Answers
See-Through effect for top-down game (Performance issues) 0 Answers
Material.SetFloat not working 0 Answers
Unity shaders/materials outside unity enviroment,Unity object export with shaders from shadergraph 0 Answers