I realize part of my explanation was unclear (or maybe in explanation for
WHY it has these functions). If I'm rendering a bunch of 3D objects of
rabbits, it can be convenient to have a different texture on each one, but
GL_REPEAT isn't needed at all in that context. If I'm rendering a bunch of
planes, I may want to change the image texture scale, and then be able to
take advantage of the GL_REPEAT effect (because tiling on a bunch of sprites
looks so darn cool and modern).

On Sat, Oct 29, 2011 at 5:43 PM, George Toledo <[email protected]> wrote:

>
>
> On Sat, Oct 29, 2011 at 5:15 PM, vade <[email protected]> wrote:
>
>> You have no control over how the target consumer patch is going to handle
>> rendering, or if it is going to override any GL state on texture unit 0, or
>> for that Gluint texture ID. Just because you set an image to have a
>> particular parameter does not mean downstream consumers cant change those
>> values, or that intermediate image processing patches, be it GLSL or Core
>> Image Units wont change the associated parameter, on the original or on its
>> new resulting output texture.
>>
>>
> No, this is a consumer patch. I'm taking the input image and setting the
> metadata to GL Texture 2D, and texture repeat. There's nothing downstream at
> all, n/a.
>
>
>
>> Why not just tile where you need to tile, while rendering
>>
>
>> Are you rendering something in this patch (ie, consumer, writing vertex
>> data to the GL Scene), or are you just tagging metadata on an input image
>> and sending it back out and on its way?
>>
>
> This is a consumer patch that renders multiple objects.
>
> I'm taking QCStruct or NSArray, and using that to dictate vector positions.
> Then I'm using another input to dictate geometry, whether it be raw
> QCStructures or Kineme3D Object types.
>
> I have an image port, and an image structure port. If image comes from the
> image port, every item is textured identically. If I use the structure port,
> each object can get a different texture.
>
> The reason to control repeat inside of the plugin, is that if you're
> already feeding video to a bunch of pips, and are feeding keyed data that
> established the placement of the pips, it's really easy to pass more
> parameters to control the texture offsets - but it has to happen IN the
> patch. Well... the offsetting will work if one has placed an image texturing
> properties, set to 2D target, but I'd like to maintain the way this has
> worked in Leopard, and Snow Leopard, at least function-wise.
>
>
>> The internal QC image pipeline is probably going to change, as the runtime
>> version is now 4.5 (and will most likely change in subtle ways in 5.0, etc).
>> This is the whole reason the internal state mechanisms of QC are meant to be
>> internal, so bugs can be fixed and isolated from 3rd party
>> developers. Perhaps you relied on a bug, or unsupported behavior in 4.0, and
>> now 4.5 has fixed internal bugs, resulting in different behavior? I dont
>> know, and, strictly speaking neither *should* you, because this is internal
>> to the QC runtime, and not for your eyes.
>>
>>
> I understand the preaching, but if this has changed and doesn't work, I'm
> certain that other patches have been affected, and likely Apple ones. I'm
> not confident that this has been recognized, or was even intended. I would
> guess it's likely not known and totally unintended, if I had to bet.
>
>
>> How about explaining what you are trying to accomplish? Of course, I know,
>> there are still things 3rd party plugins using vanilla API can't accomplish.
>> That sucks, but it *is stable*, and does work as intended (except, you
>> know, that whole port ordering issue, the execution time parameter bug and,
>> well some other stuff, har).
>>
>> ;)
>>
>>
> Agree to disagree. :-) The vanilla API isn't so stable, it's barely used by
> Apple so it gets absolutely no love, and it has some major bugs (port order,
> rendering time, lack of qc types). On the flip side, QC Lion was worked on
> by the same person that made the SkankySDK, new patches are skanky, etc.
>
> The one thing that's hackish is assuming that when a texture is set on
> context, that it's bound, and that's not "on" the SkankySDK, so to speak. I
> thought it was gnarly when I originally did it. Now, it was originally
> pretty hackish to stop at GL_TEXTURE_2D once GL_REPEAT started happening on
> it's own.
>
> Also, I'd use the vanilla api, but I'm using custom ports to read the K3D
> objects and QCMesh.
>
>>
>>
>> On Oct 29, 2011, at 4:39 PM, George Toledo wrote:
>>
>> So, I'm testing more. To recap, in SL, it used to be that setting the
>> metadata of the image to be a 2D texture would automatically put the image
>> in a mode where it was in GL_REPEAT.
>>
>> In SL, what was in the last post can be boiled down to:
>>
>> if([inputGLTEXTURE2D booleanValue])
>>  {
>>  [[inputImage imageValue]setMetadata:[NSNumber numberWithInt:
>> GL_TEXTURE_2D] forKey:@"textureTarget" shouldForward:YES];
>>  }
>>  [inputImage setOnOpenGLContext: context unit:GL_TEXTURE0];
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
>>
>>
>> }
>>
>> To get it working, and have "tiling" repeat effect.
>>
>> Now, since just making the image 2D to begin with gives the GL_REPEAT
>> freebie, I've reconfirmed this by testing:
>>
>> if([inputGLTEXTURE2D booleanValue])
>>  {
>>  [[inputImage imageValue]setMetadata:[NSNumber numberWithInt:
>> GL_TEXTURE_2D] forKey:@"textureTarget" shouldForward:YES];
>>  }
>>  [inputImage setOnOpenGLContext: context unit:GL_TEXTURE0];
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
>>  //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
>>
>>
>> }
>>
>> This, as expected in Snow Leopard, results in a clamped texture.
>>
>> By this process of elimination, I'm pretty darn sure I'm calling my
>> parameters in the correct place, and the correct way. This is making me feel
>> like there has been a regression in the QC Image pipeline that's likely to
>> effect more patches negatively, but I'm not 100% sure about that of course.
>>
>> Again, any thoughts or help are greatly appreciated. As is, I think this
>> is a bug, but since I'm using GFPlugin, I can't really file.
>>
>> Best,
>> gt
>>
>> On Sat, Oct 29, 2011 at 4:26 PM, George Toledo <[email protected]>wrote:
>>
>>> So, I'm trying more, and this won't work either - well, it works fine in
>>> SL, but produces no output in Lion.
>>>
>>> if([inputGLTEXTURE2D booleanValue])
>>> {
>>>  [[inputImage imageValue]setMetadata:[NSNumber
>>> numberWithInt:GL_TEXTURE_2D] forKey:@"textureTarget" shouldForward:YES];
>>> }
>>>  [inputImage setOnOpenGLContext: context unit:GL_TEXTURE0];
>>> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
>>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
>>> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
>>>  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
>>> glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
>>>  }
>>>
>>>
>>> This seems like it should work, because I'm setting the metadata to 2D
>>> texture, then after the texture context is set, I'm trying to pass the
>>> parameters.
>>>
>>> I've wondered if I should be using glTexParameterf, but I wouldn't think
>>> that would be making the difference here.
>>>
>>> I'm kind of worried, because it's feeling like maybe one can't make any
>>> assumptions that when texture is set on context, that it's bound. Or maybe
>>> it's just a stupid error here, but as said, both work in SL, but not Lion.
>>> Any help is greatly appreciated.
>>>
>>> I'm guessing I can just treat the image with "Image Texturing Properties"
>>> ahead of time if needed, but it's not as eloquent as having that happen
>>> inside of the patch, and it's problematic to pass the output of Image
>>> Texturing Properties to some things, so this has been great to be able to
>>> have happen in the past.
>>>
>>> On Sat, Oct 29, 2011 at 2:34 PM, George Toledo <[email protected]>wrote:
>>>
>>>> In Leopard and SL, I was able to make image into a QC Image port do GL
>>>> Repeat by doing something like this:
>>>>
>>>> if([inputGLTEXTURE2D booleanValue])
>>>> {
>>>> [[inputImage imageValue]setMetadata:[NSNumber
>>>> numberWithInt:GL_TEXTURE_2D] forKey:@"textureTarget"
>>>> shouldForward:YES];
>>>> }
>>>> [inputImage setOnOpenGLContext: context unit:GL_TEXTURE0];
>>>> }
>>>>
>>>>
>>>> For some reason, this has broken in Lion. What's the quickest way for me
>>>> to get this going again, and is this a bug? I understand I'm not going "all
>>>> the way" and specifying the repeat, but this used to "just work". What's 
>>>> the
>>>> proper way to set the metadata to get the repeat? I'm not using the 
>>>> standard
>>>> API, so I take my lumps on that one, but any help would be great.
>>>>
>>>> -gt
>>>>
>>>
>>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Quartzcomposer-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>>
>> http://lists.apple.com/mailman/options/quartzcomposer-dev/doktorp%40mac.com
>>
>> This email sent to [email protected]
>>
>>
>>
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to