core image

Metaballs Core Image (Composition by gtoledo3)

Author: gtoledo3
License: Creative Commons Attribution-NonCommercial
Date: 2012.11.11
Compatibility: 10.5, 10.6, 10.7, 10.8
Categories:
Required plugins:
(none)

A classic "metaballs" setup in core image, with some simple lighting.

Pacman Core Image (Composition by gtoledo3)

Author: gtoledo3
License: Creative Commons Attribution-NonCommercial
Date: 2012.11.11
Compatibility: 10.5, 10.6, 10.7, 10.8
Categories:
Required plugins:
(none)

This is a pacman animation, working in core image.

Raytrace Core Image (Composition by gtoledo3)

Author: gtoledo3
License: Creative Commons Attribution-NonCommercial
Date: 2012.11.11
Compatibility: 10.5, 10.6, 10.7, 10.8
Categories:
Required plugins:
(none)

Nothing super fancy, but a raytracer working in core image.

I'd been thinking about doing this for awhile, from being interested in the way core image always has a dedicated image output without having to render to screen/texture to do something with the result.

It's a little bit of a pain because of typically used functions and working styles not being supported, but it works if you stay within the boundaries. It seems a little slower than GLSL. Less substantial/2D oriented fragment shaders tend to perform better when transferred, seemingly.

Core Image Conundrum

cybero's picture

I wonder why this Core Image kernel code isn't working for me. It was found on the fromaremotevillage blog. http://fromaremotevillage.blogspot.com/2007/03/cocoa-application-with-cu...

/*
A Core Image kernel routine that computes a convolution effect.
The code looks up the source pixel in the sampler and then multiplies it by the value passed to the routine.
*/
 
kernel vec4 Convolution3by3(sampler image,
float r00, float r01, float r02,
float r10, float r11, float r12,
float r20, float r21, float r22)
{
  vec2 loc;
  vec4 result = vec4(0,0,0,0);
  //0,0 in my mind is left and up.
  loc = vec2(1.0,0.0);
  vec4 p12 = unpremultiply(sample(image, (samplerCoord(image) + loc) ));
  result.rgb += p12.rgb * r12;
 
  loc = vec2(-1.0,-1.0);
  vec4 p20 = unpremultiply(sample(image, (samplerCoord(image) + loc) ));
  result.rgb += p20.rgb * r20;
 
  loc = vec2(0.0,-1.0);
  vec4 p21 = unpremultiply(sample(image, (samplerCoord(image) + loc) ));
  result.rgb += p21.rgb * r21;
 
  loc = vec2(1.0,-1.0);
  vec4 p22 = unpremultiply(sample(image, (samplerCoord(image) + loc) ));
  result.rgb += p22.rgb * r22;
 
  result = premultiply( result );
  return result;
}

Currently produces nothing more than blank empty space when run in QC 4.5 on Lion. Haven't tried it in Snow or earlier as yet.

Away Walk

gtoledo3's picture

I threw the James Gang's Walk Away in the sonic orange juicer, and made this qtz visual by feeding some footage of them playing on a webclip to QC.