first optimization attempt is to make the render target as small as possible. so i change the render target color format from RGBA32 F to GR32 F. for depth buffer i store it on red channel which is 32 bit, and for the color part inside green channel which also 32 bit.
for the depth it is pretty straightforward, just store it right away and done. for the color part. the color are vec4 value, i use RGBA to Float encoding, so i can have single float value to store that vec4 color into one 32 bit channel.
if you interested in the encoding part you can read it here.
for rendering i need to disable any texture filtering because it might break the encoding and turn color into noise. as shown in the image below. disabling texture filtering exposed the primitive i’m using in the ray marching. yes i’m using cubes for estimating object volume. need a better approach.
here is the rendering window split, i think i can do a simple multi sampling for the color map and normal map to remove the voxelized looks.
 i thought too much detail on depth voxelized my scene, turn out heighmap texture filtering are the problem here. bilinear filtering on the height texture create the voxelized effect. re enabling them fix the problem. i think that voxel looks can be a useful effect someday.