Access texture as Sampler2DRect from one shader and as Sampler2D from other shader

Summary:
I’m making a game-of-life ofApp that displays the “world grid” on a rendered mesh.

The App::update()/simulation phase is a shader pair operating on the “world grid” which is implemented as a texture.
The App::draw()/render phase then uses another shader pair to map that world grid texture onto a mesh with texCoords and render to screen.

The problem is that simulation phase is implemented with ArbTex = true/Sampler2DRect but the render phase is implemented with ArbTex = false/Sampler2D - and I want it that way, but they are seemingly incompatible.

The question is: How to permit these 2 different texture accesses to the same GPU texture?

Details:
The simulation phase is a modified version of
https://github.com/rystylee/GPGPUGameOfLife (thank you rystylee!) that uses 2x ofFbo in the struct pingPongBuffer {…} (as seen in examples/gl/gpuParticleSystemExample/src/ofApp.cpp)
This code works… until I ofDisableArbTex(), of course.

My render phase shaders can read the texture properly when implemented with Sampler2DRect but I want to access the texture with Sampler2D normalized/uv coordinates, but I can’t figure out how. I am trying to ofDisableArbTex()/ofEnableArbTex() at various points in the code but without success.

Why am I trying to do this?
The simulation phase acts on individual specific cells/pixels and I like the code to reflect that, whereas I want the render to use the texture as a “conventional texture” so it can interpolate and warp it onto a variety of meshes or with meshes that have changing texCoords eg vbo.updateTexCoordData().

I am an oF/openGL ‘beginner’. My objective is not so much about ‘getting it to work’ but rather understanding what is going on. In particular I want to understand what the GPU texture memory looks like in Sampler2D vs Sampler2DRect cases and when, in oF/openGL/GPU hw/ shader stack does the difference manifest. If the GPU texture memory is structured differently in each case then I’ll probably give up. But if it just a matter of using the right ‘texture APIs’ in the oF code and in the shaders then I’d like to figure out how to do that.

My environment:
of_v0.11.0_linux64gcc6_release
ubuntu18.04 x64 mate
nvidia driver 440.100 with GTX960m
I only care about supporting this environment (not old openGL or shader versions or openGL ES)

This old (2015) but open issue seems related
“Avoid having to have separate shaders for sampler2DRect and sampler2D”


but different, ie I WANT 2 different shaders using different samplers of the same texture.