So to explore 1.5 I decided to port an old project of mine to a shader.
Only tested on iPad2 landscape. The main things I learnt:
you can mess with screen position in shaders
how to hook up custom attribute buffers
modifying vertexes dynamically on the lua side is still slow
Edit: fully rewritten…
Video doesn’t capture the parameters, but that’s the pauses when I’m interacting with them, can show a flat colored surface or textured surface including camera. It has a lighting model, and a colored light will mess with the colors on the texture etc.
Code below. Main oddity is the fragment shader (in lab) kept dissapearing when I had an if in it, no idea. So I split it and switch shader when you add textures. Code is quite messy.
.@spacemonkey Where did you have the if? I found (the hard way) that you can’t put an if outside a function. I wanted to set a flag on a shader that swapped various routines, but found that I could only do it with the if inside main, but then the if gets evaluated for every pixel/vertex which is a waste of time. So I did what you did: put the conditional in the lua part and loaded the shader accordingly.
.@Andrew_Stacey it was a bit weirder than that, I had it in the main() of the fragment shader, and it even worked when I ran it, however I had 2 or 3 occasions where I went back into codea and found that the fragment shader had reverted to the previous version.
So I think it is more likely a fault in Codea shader lab, however at the same time I found on google that if statements in fragment shaders were frowned upon, so split it the way I did above instead.
Another modification (and gridSize lowered, but you can adjust it in the first line of setup). I’ve added a reasonably true wireframe mode. Basically it’s a cheat using a texture for the wireframe and then "discard"ing black pixels in the shader. The shader is still quite heavy in wireframe, but just for the SIN piece, not lighting etc.
Trickiest bit is texture orientation, I’m fairly sure the texture is oriented to the triangles, but could have gotten it wrong