Re: Deep data API: another batch of questions.

Michel Lerenard <[email protected]>
Newsgroups gmane.comp.video.openexr.devel
Message-ID <[email protected]>
Hi,

thanks for your answer. I've read the InterpretingDeepPixels document 
already, and didn't find the answer I'm looking for.
I was quite vague in my last message, typically my question is: should 
the sampling (random, blue noise, etc...) and the filter type (box, 
blackman harris, etc...) used for antialiasing be applied to "bake" the 
deep samples in the file ?
I don't see any other option at the moment to ensure that samples are 
correctly blended, I'm wondering if another option is available.


On 04/29/2014 10:28 AM, Peter Hillman wrote:
> The only standard way to go is that you should write samples according 
> to the "InterpretingDeepPixels" document, and particularly you should 
> take care to guarantee that the "flattening" procedure described gives 
> you the correct RGBA image.
>
> Beyond that specification, there are no official recommendations 
> regarding how many samples you should write, or how and when to merge 
> samples.  It would make sense to anticipate what operations might be 
> applied to the deep image before it is flattened, including merging 
> with other deep images. One should ensure that there is appropriate 
> information for those operations to work as expected without storing 
> too many samples. Since it is hard for software developers to 
> anticipate how images are to be used, it makes sense that tools 
> provide options for end users to control output.
>
>
>
>
> On 29/04/14 19:27, Michel Lerenard wrote:
>> Thanks a lot, that did the trick.
>>
>> I got my export code working, both using Tiled and Scanline images, 
>> depending on user choice.
>>
>> I still one have question, that is more related to deep data than 
>> OpenEXR itself: how should I write anti aliasing samples values. I've 
>> seen that Houdini  writes all anti aliasing samples into the same 
>> data stack, and has an option to merge values. Is it the standard way 
>> to go ? (if there is one...)
>>
>> Thanks again for your help.
>>
>> On 04/22/2014 09:51 AM, Peter Hillman wrote:
>>> You can modify an existing FrameBuffer/DeepFrameBuffer object, using 
>>> something like this (untested!) code:
>>>
>>> outputfile.setFrameBuffer(...);
>>> outputfile.writePixels(32);
>>>
>>> /*later on*/
>>>
>>> FrameBuffer myFrameBuffer = outputfile.frameBuffer();
>>> myFrameBuffer["R"].base -= myFrameBuffer["R"].yStride*32;
>>> myFrameBuffer["G"].base -= myFrameBuffer["G"].yStride*32;
>>> myFrameBuffer["B"].base -= myFrameBuffer["B"].yStride*32;
>>> outputfile.setFrameBuffer(myFrameBuffer);
>>> outputfile.writePixels(32);
>>>
>>>
>>> Just don't forget to call setFrameBuffer. Admittedly there's 
>>> overhead, but not significant compared to the cost of writePixels.
>>>
>>>
>>> On 22/04/14 19:42, Michel Lerenard wrote:
>>>> I had a look at the sources and the docs, I misunderstood you post 
>>>> yesterday, I thought you meant there was a way to modify the 
>>>> pointers of a framebuffer. Creating a new framebuffer and insert 
>>>> new DeepSlices for every batch of lines was what I was trying not 
>>>> to do.
>>>> But reading your messages I guess there's no other option.
>>>>
>>>> On 04/21/2014 12:19 AM, Peter Hillman wrote:
>>>>> You will need to call setFrameBuffer before every call to 
>>>>> writePixels, as you need to update the frame pointers.
>>>>> The pointer you pass to Slice/DeepSlice is the memory location of 
>>>>> pixel (0,0) in the image. This point will move in memory as you 
>>>>> update your memory block with different scanlines.
>>>>>
>>>>> Your first call is probably doing the right thing. For each 
>>>>> subsequent call you need to set up a new FrameBuffer with 
>>>>> yStride*currentScanLine() subtracted from the base pointer, where 
>>>>> currentScanLine() is the y offset of the first scanline you are 
>>>>> writing.
>>>>>
>>>>> The library will only access the memory locations it needs to for 
>>>>> writePixels() - there's no problem in passing an "illegal address" 
>>>>> as a base pointer to setFrameBuffer, as long as 
>>>>> (base+yStride*currentScanLine() + dataWindow.min.x*xStride) is 
>>>>> always a valid location when writePixels() is called.
>>>>>
>>>>> The above is true for xSampling=1 and ySampling=1 - you may need 
>>>>> to adjust the logic accordingly otherwise.
>>>>>
>>>>>
>>>>> On 19/04/14 21:18, Lerenard Michel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> still trying to write deep data image, i'm struggling a bit with 
>>>>>> FrameBuffers.
>>>>>> As I need to write subsampled deep images, I cannot use Tiled 
>>>>>> images. I went for the scanline approach. My idea was to write 
>>>>>> batches of n scanlines, in increasing Y order.
>>>>>>
>>>>>> This way I was thinking I would be able to limit the memory 
>>>>>> footprint:
>>>>>> OpenEXR would not need to cache data, and I would be able to 
>>>>>> reuse the same buffers for every batch of lines: one buffer for Z 
>>>>>> and one for each visible channel.
>>>>>>
>>>>>> So I created a bunch of buffers, whose size was my image width * 
>>>>>> 32. (arbitrary value). I planned to feed these buffers to the 
>>>>>> DeepSlices I added to the FrameBuffer.
>>>>>> Thing is, it appears the FrameBuffer/Slices cannot work that way: 
>>>>>> they need to have memory allocated for the whole image. I 
>>>>>> couldn't find any function limiting / defining the region I want 
>>>>>> to work on.
>>>>>>
>>>>>> Here are my questions:
>>>>>> - Is the statement above correct ?
>>>>>> - Should I work differently ? I doesn't look like using several 
>>>>>> framebuffers would help, I out of ideas at the moment.
>>>>>>
>>>>>> I can explain in more details my process if it can help.
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Michel
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Openexr-devel mailing list
>>>>>> [email protected]
>>>>>> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>>>>>
>>>>> . 
>>>>
>>>
>>
>

_______________________________________________
Openexr-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/openexr-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.