-
Notifications
You must be signed in to change notification settings - Fork 4
/
MultiplyShaderNode.ts
49 lines (47 loc) · 1.68 KB
/
MultiplyShaderNode.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import {CompositionType} from '../../definitions/CompositionType';
import MultiplyShaderityObject from '../../../webgl/shaderity_shaders/nodes/Multiply.glsl';
import {ComponentTypeEnum} from '../../../foundation/definitions/ComponentType';
import {CompositionTypeEnum} from '../../../foundation/definitions/CompositionType';
import { AbstractShaderNode } from '../core/AbstractShaderNode';
export class MultiplyShaderNode extends AbstractShaderNode {
constructor(
lhsCompositionType: CompositionTypeEnum,
lhsComponentType: ComponentTypeEnum,
rhsCompositionType: CompositionTypeEnum,
rhsComponentType: ComponentTypeEnum
) {
super('multiply', MultiplyShaderityObject.code);
let outValueCompositionType = CompositionType.Unknown;
if (
lhsCompositionType === CompositionType.Mat4 &&
rhsCompositionType === CompositionType.Mat4
) {
outValueCompositionType = CompositionType.Mat4;
} else if (
lhsCompositionType === CompositionType.Mat4 &&
rhsCompositionType === CompositionType.Vec4
) {
outValueCompositionType = CompositionType.Vec4;
} else if (
lhsCompositionType === CompositionType.Scalar &&
rhsCompositionType === CompositionType.Scalar
) {
outValueCompositionType = CompositionType.Scalar;
}
this.__inputs.push({
compositionType: lhsCompositionType,
componentType: lhsComponentType,
name: 'lhs',
});
this.__inputs.push({
compositionType: rhsCompositionType,
componentType: rhsComponentType,
name: 'rhs',
});
this.__outputs.push({
compositionType: outValueCompositionType,
componentType: lhsComponentType,
name: 'outValue',
});
}
}