Skip to content

Instantly share code, notes, and snippets.

@SableRaf
Created November 23, 2020 15:26
Show Gist options
  • Save SableRaf/0351afd587971dec725f833602505c15 to your computer and use it in GitHub Desktop.
Save SableRaf/0351afd587971dec725f833602505c15 to your computer and use it in GitHub Desktop.
Sohail Mehra – Spark AR Scripting - Ep 2 – Updated for Spark AR Studio v102
// How to load in Modules
const M = require('Materials');
const S = require('Shaders');
const T = require('Textures');
const R = require('Reactive');
const Time = require('Time');
// Use export keyword to make a symbol available in scripting debug mode
export const D = require('Diagnostics');
function print(a)
{
D.log(a);
}
function modulate(time, lum)
{
const ct = R.mul(time,0.001); // -> Signal3
const curve = R.abs(R.sin(ct)); // -> Signal4
const modulationColor = R.pack4(curve,0,0,1); // -> Signal6
const lum4 = R.pack4(lum,lum,lum,1);
const finalModulation = R.add(modulationColor,lum4);
return finalModulation;
}
function luminance(color)
{
return R.dot(color, R.pack4(0.2125, 0.7154, 0.0721,0));
}
async function main()
{
const material0 = await M.findFirst('material0');
const cameraTexture = await T.findFirst('cameraTexture0');
const myTextureSignal = cameraTexture.signal; // -> Signal1
const uvs = S.vertexAttribute({variableName: S.VertexAttribute.TEX_COORDS}); // -> Signal2
const color = S.textureSampler(myTextureSignal, uvs); // -> Signal5
const lum = luminance(color);
const modulationColor = modulate(Time.ms, lum);
const finalColor = R.mul(color, modulationColor); // -> Signal7
material0.setTextureSlot('DIFFUSE', finalColor); // Set Signal8 -> material
};
main();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment