The fiddle doesn’t show anything here.
…
OK, I made it work locally with a few fixes, and then discovered that I had to roll the mouse wheel for anything to show. That works in the fiddle too. 
GL points are basically two-dimensional. The vertex shader decides their screen position and size, and the fragment shader colors them. You get two-dimensional relative coordinates in the fragment shader, and can also use whatever you manage to forward from the vertex shader. But you cannot make a point into a sphere using a texture. You can, however add a static rendering of a sphere seen from one direction and under one set of lighting, and add that as a 2D texture to the point. As is done in some threejs examples. three.js examples
There is no obvious way to map a 3D texture to a GL point, as you don’t get any local depth information for free. You can do stuff like coloring the point according to where it is located spatially “in” a 3D texture, by using position as coordinates into the texture. You can also take u,v from the local coordinates of the GL point and w as an extra attribute (per point).
Do you understand the format of the data array that is to be passed to DataTexture3D? Basically, the data is stored sequentially, R,G,B,R,G,B,R,G,B… Three consecutive entries form a pixel, or rather a voxel, since it is a 3D texture. Besides that, I don’t know right now the order of the dimensions. But I think you will end up with something like this:
for (let i = 0; i < width; i++) {
for (let j = 0; j < height; j++) {
for (let k = 0; k < depth; k++) {
let offset = 3*(i*height*depth+j*depth+k);
data[offset] = redLevel(i,j,k);
data[offset+1] = greenLevel(i,j,k);
data[offset+2] = blueLevel(i,j,k);
/*an alternative to calculating offset by multiplication is to
just increment it by 3 here at the end of the inner loop*/
}
}
}
Where redLevel, greenLevel, blueLevel are functions of position in the texture.