Added main channel buffer support
This commit is contained in:
@@ -54,6 +54,11 @@ Item
|
|||||||
property string iChannel2: ""
|
property string iChannel2: ""
|
||||||
property string iChannel3: ""
|
property string iChannel3: ""
|
||||||
|
|
||||||
|
property var bufferA: null
|
||||||
|
property var bufferB: null
|
||||||
|
property var bufferC: null
|
||||||
|
property var bufferD: null
|
||||||
|
|
||||||
id: mainItem
|
id: mainItem
|
||||||
|
|
||||||
Item
|
Item
|
||||||
@@ -145,14 +150,123 @@ Item
|
|||||||
var pack = JSON.parse(json);
|
var pack = JSON.parse(json);
|
||||||
var currentChannel = null;
|
var currentChannel = null;
|
||||||
|
|
||||||
|
if (pack.bufferA)
|
||||||
|
mainItem.bufferA = parseChannel(pack.bufferA, 2);
|
||||||
|
if (pack.bufferB)
|
||||||
|
mainItem.bufferB = parseChannel(pack.bufferB, 2);
|
||||||
|
if (pack.bufferC)
|
||||||
|
mainItem.bufferC = parseChannel(pack.bufferC, 2);
|
||||||
|
if (pack.bufferD)
|
||||||
|
mainItem.bufferD = parseChannel(pack.bufferD, 2);
|
||||||
|
|
||||||
if (pack.channel0)
|
if (pack.channel0)
|
||||||
channelOutput.iChannel0 = parseChannel(pack.channel0, channelOutput);
|
{
|
||||||
|
if(typeof pack.channel0 === "string")
|
||||||
|
{
|
||||||
|
switch(pack.channel0)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
channelOutput.iChannel0 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
channelOutput.iChannel0 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
channelOutput.iChannel0 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
channelOutput.iChannel0 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + pack.channel0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof pack.channel0 === "object")
|
||||||
|
channelOutput.iChannel0 = parseChannel(pack.channel0);
|
||||||
|
}
|
||||||
if (pack.channel1)
|
if (pack.channel1)
|
||||||
channelOutput.iChannel1 = parseChannel(pack.channel1, channelOutput);
|
{
|
||||||
|
if(typeof pack.channel1 === "string")
|
||||||
|
{
|
||||||
|
switch(pack.channel1)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
channelOutput.iChannel1 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
channelOutput.iChannel1 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
channelOutput.iChannel1 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
channelOutput.iChannel1 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + pack.channel1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof pack.channel1 === "object")
|
||||||
|
channelOutput.iChannel1 = parseChannel(pack.channel1);
|
||||||
|
}
|
||||||
if (pack.channel2)
|
if (pack.channel2)
|
||||||
channelOutput.iChannel2 = parseChannel(pack.channel2, channelOutput);
|
{
|
||||||
|
if(typeof pack.channel2 === "string")
|
||||||
|
{
|
||||||
|
switch(pack.channel2)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
channelOutput.iChannel2 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
channelOutput.iChannel2 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
channelOutput.iChannel2 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
channelOutput.iChannel2 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + pack.channel2)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof pack.channel2 === "object")
|
||||||
|
channelOutput.iChannel2 = parseChannel(pack.channel2);
|
||||||
|
}
|
||||||
if (pack.channel3)
|
if (pack.channel3)
|
||||||
channelOutput.iChannel3 = parseChannel(pack.channel3, channelOutput);
|
{
|
||||||
|
if(typeof pack.channel0 === "string")
|
||||||
|
{
|
||||||
|
switch(pack.channel3)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
channelOutput.iChannel3 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
channelOutput.iChannel3 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
channelOutput.iChannel3 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
channelOutput.iChannel3 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + pack.channel3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof pack.channel3 === "object")
|
||||||
|
channelOutput.iChannel3 = parseChannel(pack.channel3);
|
||||||
|
}
|
||||||
|
|
||||||
channelOutput.source = getFilePath(pack.source); // Set the shader source file
|
channelOutput.source = getFilePath(pack.source); // Set the shader source file
|
||||||
channelOutput.type = ShaderChannel.Type.ShaderChannel; // Set the shader
|
channelOutput.type = ShaderChannel.Type.ShaderChannel; // Set the shader
|
||||||
@@ -165,7 +279,7 @@ Item
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recursive helper function to parse channels
|
// Recursive helper function to parse channels
|
||||||
function parseChannel(channel, parent)
|
function parseChannel(channel, typeDefault = 0)
|
||||||
{
|
{
|
||||||
if (!channel) return;
|
if (!channel) return;
|
||||||
|
|
||||||
@@ -182,8 +296,8 @@ Item
|
|||||||
if (component.status === Component.Ready) {
|
if (component.status === Component.Ready) {
|
||||||
result = component.createObject(mainItem, { x: 100, y: 100 });
|
result = component.createObject(mainItem, { x: 100, y: 100 });
|
||||||
}
|
}
|
||||||
result.frameBufferChannel = channel.frameBufferChannel !== undefined ? channel.frameBufferChannel : -1
|
result.frameBufferChannel = channel.frame_buffer_channel !== undefined ? channel.frame_buffer_channel : -1
|
||||||
result.type = channel.type
|
result.type = channel.type ? channel.type : typeDefault
|
||||||
result.anchors.fill = mainItem
|
result.anchors.fill = mainItem
|
||||||
result.visible = false
|
result.visible = false
|
||||||
result.iMouse = Qt.binding(() => { return mainItem.iMouse; })
|
result.iMouse = Qt.binding(() => { return mainItem.iMouse; })
|
||||||
@@ -218,13 +332,113 @@ Item
|
|||||||
result.source = source
|
result.source = source
|
||||||
|
|
||||||
if (channel.channel0)
|
if (channel.channel0)
|
||||||
result.iChannel0 = parseChannel(channel.channel0, result);
|
{
|
||||||
|
if(typeof channel.channel0 === "string")
|
||||||
|
{
|
||||||
|
switch(channel.channel0)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
result.iChannel0 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
result.iChannel0 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
result.iChannel0 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
result.iChannel0 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + channel.channel0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof channel.channel0 === "object")
|
||||||
|
result.iChannel0 = parseChannel(channel.channel0);
|
||||||
|
}
|
||||||
if (channel.channel1)
|
if (channel.channel1)
|
||||||
result.iChannel1 = parseChannel(channel.channel1, result);
|
{
|
||||||
|
if(typeof channel.channel1 === "string")
|
||||||
|
{
|
||||||
|
switch(channel.channel1)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
result.iChannel1 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
result.iChannel1 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
result.iChannel1 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
result.iChannel1 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + channel.channel1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof channel.channel1 === "object")
|
||||||
|
result.iChannel1 = parseChannel(channel.channel1);
|
||||||
|
}
|
||||||
if (channel.channel2)
|
if (channel.channel2)
|
||||||
result.iChannel2 = parseChannel(channel.channel2, result);
|
{
|
||||||
|
if(typeof channel.channel2 === "string")
|
||||||
|
{
|
||||||
|
switch(channel.channel2)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
result.iChannel2 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
result.iChannel2 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
result.iChannel2 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
result.iChannel2 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + channel.channel2)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof channel.channel2 === "object")
|
||||||
|
result.iChannel2 = parseChannel(channel.channel2);
|
||||||
|
}
|
||||||
if (channel.channel3)
|
if (channel.channel3)
|
||||||
result.iChannel3 = parseChannel(channel.channel3, result);
|
{
|
||||||
|
if(typeof channel.channel0 === "string")
|
||||||
|
{
|
||||||
|
switch(channel.channel3)
|
||||||
|
{
|
||||||
|
case "{bufferA}":
|
||||||
|
result.iChannel3 = mainItem.bufferA
|
||||||
|
break;
|
||||||
|
case "{bufferB}":
|
||||||
|
result.iChannel3 = mainItem.bufferB
|
||||||
|
break;
|
||||||
|
case "{bufferC}":
|
||||||
|
result.iChannel3 = mainItem.bufferC
|
||||||
|
break;
|
||||||
|
case "{bufferD}":
|
||||||
|
result.iChannel3 = mainItem.bufferD
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log('Uknown channel type ' + channel.channel3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(typeof channel.channel3 === "object")
|
||||||
|
result.iChannel3 = parseChannel(channel.channel3);
|
||||||
|
}
|
||||||
|
|
||||||
data.channels.push(result) // save for destroying
|
data.channels.push(result) // save for destroying
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user