Peter d153fe0f21 Add 'submodules/LegacyComponents/' from commit 'd5594346161c1b7f203d1e87068bbe77bcaac019'
git-subtree-dir: submodules/LegacyComponents
git-subtree-mainline: 608630530451e02e5aec48389d144dbf7a3625b9
git-subtree-split: d5594346161c1b7f203d1e87068bbe77bcaac019
2019-06-11 18:51:15 +01:00

125 lines
3.8 KiB
Objective-C

#import "TGPaintShaderSet.h"
#import "TGPaintShader.h"
#import <LegacyComponents/TGPaintUtils.h>
@implementation TGPaintShaderSet
+ (NSDictionary *)availableShaders
{
return @
{
@"brush": @
{
@"vertex": @"Paint_Brush",
@"fragment": @"Paint_Brush",
@"attributes": @[ @"inPosition", @"inTexcoord", @"alpha" ],
@"uniforms" : @[ @"mvpMatrix", @"texture" ]
},
@"brushLight": @
{
@"vertex": @"Paint_Brush",
@"fragment": @"Paint_BrushLight",
@"attributes": @[ @"inPosition", @"inTexcoord", @"alpha" ],
@"uniforms" : @[ @"mvpMatrix", @"texture" ]
},
@"brushLightPreview": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_BrushLightPreview",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"mask", @"color" ]
},
@"blit": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_Blit",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture" ]
},
@"blitWithMaskLight": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_BlitWithMaskLight",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask", @"color" ]
},
@"blitWithMask": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_BlitWithMask",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask", @"color" ]
},
@"blitWithEraseMask": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_BlitWithEraseMask",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask"]
},
@"compositeWithMask": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_CompositeWithMask",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask", @"color" ]
},
@"compositeWithMaskLight": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_CompositeWithMaskLight",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask", @"color" ]
},
@"compositeWithEraseMask": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_CompositeWithEraseMask",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture", @"mask" ]
},
@"nonPremultipliedBlit": @
{
@"vertex": @"Paint_Blit",
@"fragment": @"Paint_NonPremultipliedBlit",
@"attributes": @[ @"inPosition", @"inTexcoord" ],
@"uniforms": @[ @"mvpMatrix", @"texture" ]
}
};
}
+ (NSDictionary *)setup
{
NSDictionary *shaderSet = [self availableShaders];
NSMutableDictionary *shaders = [NSMutableDictionary dictionary];
for (NSString *key in shaderSet.keyEnumerator)
{
NSDictionary *desc = shaderSet[key];
NSString *vertex = desc[@"vertex"];
NSString *fragment = desc[@"fragment"];
NSArray *attributes = desc[@"attributes"];
NSArray *uniforms = desc[@"uniforms"];
TGPaintShader *shader = [[TGPaintShader alloc] initWithVertexShader:vertex fragmentShader:fragment attributes:attributes uniforms:uniforms];
shaders[key] = shader;
}
TGPaintHasGLError();
return shaders;
}
@end