Native resolution of each "layer"?


#1

Hello !
I ordered a looking glass yesterday, I obviously don’t received it yet but I observed the file HoloPlay.js to see how it works. I think I understood the main idea but I would like to know more about the native resolution of each layer used in the looking glass.

In the code, I saw that rendering could be done using a 2048x2048 or 4096x4096 texture.

With a 2048 texture, the resolution of each view is 512x256
With a 4096 texture, the resolution of each view is 819 x 455

We know that the resolution of the device is 2560 x 1600 but I don’t know how to understand this value : a resolution of a view in high resolution (820x455) is very far from 2560x1600 , and it’s impossible to fill 2560x1600 pixels with 45 images made of 820x455 pixels.

What I really want to know is the native resolution of each “layer” and if it’s possible to read a kind of movie (not interactive) made of 45 view of 2560x1600 or maybe “only” in 1280x720 or something like that. ; what is the maximum data I can send to the device for each frame and for each view.

I also saw that you can ajust the amount of view , I thought it was defined by the amount of physical “layers” but maybe it’s not. Can you give me more information about the minimum & maximum of view we can use at the same time.

Thank you for reading

EDIT : Sorry I have another question

Let say I want to render a rotating plane in 3D with the better quality possible.

The classical way to do it imply to use a certain amount of views with the same resolution for each, but if I do that, most of my views will fill be filled by transparent pixels then it’s really easy to work with but not very efficient.

An optimized way to process could be to send multiples images for each view corresponding to the bounding box of each “painted areas” and some basic infos (x,y,width,height) for each image to allow the device to draw only what need to be draw for each view. It would be not only faster to render but it also allow to use a much better quality because if you remove the empty space of each view you can transfer much more data by frame.

So my question is "would it be possible to do that in the future ? - if its not already possible - "


#2

It’s quite analog and you’re thinking digital. :wink:

Also, it does not have “layers”, it has “views”.

The 2560x1600 pixels are really 7680 x 1600 RGB sub-pixels. Each subpixel sends light in some horizontal direction. There are many, many views, but each one is has some spread so it’s practically around 45 views (if you have more than that they can’t be distinctly seen).

The image “quilts” (45, 32, or however many views) are device-independent ways of rendering and sharing multi-view content. They are used as a source texture by a full-screen pixel shader that generates the per-sub-pixel device-specific (based on calibration parameters) image that your device uses. That is why the quilt texture resolution isn’t directly tied to the device resolution.


#3

Thank you for your message

" The image “quilts” (45, 32, or however many views) are device-independent ways of rendering and sharing multi-view content. They are used as a source texture by a full-screen pixel shader that generates the per-sub-pixel device-specific (based on calibration parameters) image that your device uses. That is why the quilt texture resolution isn’t directly tied to the device resolution."

I know how a shader works and I think I understand that part but I guess the final output quality mainly depends of the size of each view inside the “sprite sheet” (the texture with all the view).

So I wonder if it’s possible to use a 8192x8192 texture as “sprite sheet” with 45 view of 1638x910 inside it ?
If it’s possible, will the device really paint 1638x910 pixel by view ?
Maybe the term “pixel” is confusing here…

Will the quality really be 4x better than if I use a 4096x4096 texture and 16x better than a 2048x2048 texture , or is there a limit of the quality you can get ?


#4

Lower limits: If quilt size too small it will produce blurry output, and too few views will cause “stepping” between views.

Upper limits: Too many views is not a problem, except for texture size. But about 45 is not really visibly different. Too much resolution per view means you are undersampling the source images, which could cause aliasing.

Sweet spot: Someday I was going to calculate horizontal and vertical sampling pitch and make some recommendations for quilt size. I just haven’t gotten to it yet.


#5

Thank you for your message

I understand all theses limits and behaviour but can you please just clarify something :

Is 4096x4096 the max size of the “sprite sheet” texture ?
Or is it possible to use a bigger texture like 4096x8192 or 8192x8192 ?

8192x8192 texture make possible to render 45 view in a resolution close to full-HD which is pretty good , but it also represent a huge amount of data to transfert for each frame between the computer and the lookingGlass , I’m not sure if it’s possible.


#6

Texture sizes maximums are set by the GPU and maybe the application software. I don’t know what either are.


#7

I have rendered quilt sequences that are 4096x4608 (4x8 quilt of 1024x576 panels), and played them on the Looking Glass. So, it’s at least possible to render larger quilts. I believe the shader that generates the lenticular image is just doing a pixel lookup in the quilt, so while possible, it’s probably not increasing the resolution of the displayed image.

Also, my system wasn’t able to drive that video at full speed, so I usually scale it down to 2048x2304, which runs fine.


#8

100% correct on both counts. The quilt is used as a lookup. If it’s to low res, result can be blurry. If too high res, it’s being undersampled and this could cause aliasing (although how aliasing affects the lenticular display is something not completely understood by me). The output shader always runs at device resolution, and the quilt texture does not affect that.


#9

Hello !
Thank you Bob & Dithermaster for your messages

“If it’s to low res, result can be blurry. If too high res, it’s being undersampled and this could cause aliasing”

It leads to my original question : what is the native resolution of the “output screen” .

If I want to use the maximum quality, with a single frame and a single view , just to know the true drawing-context. What should be the size of my view in my texture ?


#10

The output frame is physically 2560x1600 (for smaller LG; 4K for larger). But that doesn’t necessarily mean the quilt should be 45 views of 2560x1600. People are still experimenting to find the best sizes.


#11

Of course, 2560 x 1600 is too big , it would requier too much calculation for each frame.

I think the best you can get is 45 views of 1280x800 ( 5 x 9 quilts) inside a texture of 8192x8192 but it requiers some adjustment in the vertex-shader

Rhaaaaa, I’m so impatient to try !!! :slight_smile: