Эскиз GPUImage - PullRequest
       46

Эскиз GPUImage

0 голосов
/ 28 октября 2018

Здравствуйте, я использую Библиотека GPUImage для проекта iOS, где я создаю эскиз изображения с использованием фрагментного шейдера GLSL ES следующим образом:

public let SketchFragmentShader = "
precision mediump float;

varying vec2 textureCoordinate;
varying vec2 leftTextureCoordinate;
varying vec2 rightTextureCoordinate;

varying vec2 topTextureCoordinate;
varying vec2 topLeftTextureCoordinate;
varying vec2 topRightTextureCoordinate;
varying vec2 bottomTextureCoordinate;
varying vec2 bottomLeftTextureCoordinate;
varying vec2 bottomRightTextureCoordinate;
uniform float edgeStrength;

uniform sampler2D inputImageTexture;

void main()
{
    float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r;
    float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r;
    float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r;
    float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r;
    float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r;
    float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r;
    float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r;
    float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r;

    float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;
    float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;
    float mag = 1.0 - (length(vec2(h, v)) * edgeStrength);

    gl_FragColor = vec4(vec3(mag), 1.0);
}"

Посколькуэто позволяет изменить edgeStrength, но как мне:

  1. изменить толщину или тяжесть в шейдере с помощью значения с плавающей точкой?
  2. изменить шум, создаваемый с помощью значения с плавающей точкой?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...