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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
% Psychtoolbox:PsychGLImageProcessing -- OpenGL image processing functions.
%
% This subfolder contains subroutines, tests and demos on how to use
% the PTB built-in image processing pipeline.
%
% The built in pipeline provides the infrastructure to define image processing
% or stimulus image postprocessing operations on stimuli drawn by PTB's Screen
% 2D drawing commands or MOGL 3D OpenGL drawing commands.
%
% The pipeline provides the data flow and API to define type and parameterization
% of the image processing operations. Operations are usually implemented via
% OpenGL GLSL shader plugins, vertex & fragment shader programs written in the
% high level OpenGL Shading langugage GLSL and executed directly inside the
% graphics processing unit GPU. While this is the most efficient way, operations
% may also be defined in standard OpenGL code, Matlab M-Functions or C callable
% functions.
%
% Typical applications, realized via plugins are:
%
% * Stereo display algorithms.
% * High dynamic range display output drivers.
% * Standard operations like 2D convolution, noise, linear superposition.
% * Geometric undistortion of displays.
% * Per pixel output corrections like gamma, color, gain, display PDF.
%
% This part of PTB is under heavy construction. This intro will get extended
% soon with more useful infos...
%
%
% Files:
%
% Add2DConvolutionToGLOperator - Create and add a shader for 2D image convolution to a GLOperator.
% Add2DSeparableConvolutionToGLOperator - Create and add a shader for 2D separable image convolution to a GLOperator.
% AddImageUndistortionToGLOperator - Add geometric image correction to a GLOperator.
% AddToGLOperator - Add a shader with options to a GLOperator.
% BitsPlusPlus - Setup function for imaging pipelines built-in Bits++ support.
% CountSlotsInGLOperator - Count number of processing slots in a given GLOperator.
% CreateDisplayWarp - Internal helper function for setup of geometric display undistortion.
% CreateGLOperator - Create a new GLOperator as container for imaging operations.
% CreateProceduralColorGrating - Create a procedural texture for fast drawing of either sinusoidal or square gratings varying between two colors.
% CreateProceduralGabor - Create a procedural texture for fast drawing of Gabor patches.
% CreateProceduralNoise - Create a procedural texture for fast drawing of random noise patches.
% CreateProceduralSineGrating - Create a procedural texture for fast drawing of sine grating patches.
% CreateProceduralSmoothedApertureSineGrating - Create a procedural texture for fast drawing of smoothed aperture sine grating patches.
% CreateProceduralSmoothedDisc - Create a procedural texture for fast drawing of smoothed edge discs.
% CreateProceduralSquareWaveGrating - Create a procedural texture for fast drawing of squarewave grating patches.
% CreatePseudoGrayLUT - Create a lookup table for pseudogray conversion - Internal helper function.
% CreateResolutionPyramid - Build a mip-map image resolution pyramid for given texture.
% CreateSinglePassImageProcessingShader - Create a single pass image processing shader for simple but common operations.
% DisplayUndistortionBezier - Interactive geometric display calibration for simple needs.
% DisplayUndistortionBVL - Interactive geometric display calibration. Recommended!
% DisplayUndistortionCSV - Import ASCII data file with geometric display calibration for NVidia "Warp API".
% DisplayUndistortionHalfCylinder - Interactive geometric display calibration for half-cylinder or spherical projections.
% DisplayUndistortionLabRiggerMouseStim - Create display undistortion based on method from LabRigger for mouse visual stims.
% DisplayUndistortionSphere - Interactive geometric display calibration for spherical projections.
% ImagingStereoDemo - Counterpart to StereoDemo, but using imaging pipeline
% for increased fidelity, flexibility, ease of use.
% MakeTextureDrawShader - Create GLSL shader for use with Screen('DrawTexture') and Screen('MakeTexture')
% to apply on-the-fly texture filtering operations during texture draw.
%
% PsychHDR - Support and control stimulus display to HDR "High dynamic range" displays.
%
% PsychImaging - Generic setup routine for the imaging pipeline. Allows to setup
% and initialize the pipeline for many common tasks.
%
% PsychVideoSwitcher - Setup routine for the Xiangru Li et al. "VideoSwitcher" video attenuator device.
%
% PsychVulkan - Interface with the Vulkan graphics and compute api for special purpose tasks.
%
% SetAnaglyphStereoParameters - Function for runtime tuning of Anaglyph stereo parameters,
% see ImagingStereoDemo for example of use.
% SetStereoBlueLineSyncParameters - Change settings for drawing of stereo sync lines in frame-sequential stereo mode.
% SetStereoSideBySideParameters - Change parameters for side-by-side stereo display modes (4 and 5).
% SetCompressedStereoSideBySideParameters - Change parameters for compressed side-by-side stereo display modes.
%
% VignetCalibration - Vignetted luminance calibration procedure for undistortion of distorted display luminance.
%
%
% Constants for use as 'flipFlags' with the imaging pipeline function
% Screen('HookFunction', windowPtr, 'SetOneshotFlipFlags' ..., flipFlags):
%
% kPsychDontAutoResetOneshotFlags - Prevent "one-shot" flip flags from being automatically cleared after execution of the next Screen('Flip') operation.
% kPsychSkipSwapForFlipOnce - Skip OpenGL double-buffer swap during execution of next Screen('Flip').
% kPsychSkipTimestampingForFlipOnce - Skip timestamping of OpenGL double-buffer swap stimulus onset after execution of next Screen('Flip').
% kPsychSkipVsyncForFlipOnce - Do not synchronize next OpenGL buffer swap to vertical retrace during execution of next Screen('Flip').
% kPsychSkipWaitForFlipOnce - Do not schedule OpenGL buffer swap for specific target time, leave it to some external method.
%
%
% Constants for imagingmode flag of Screen('OpenWindow', ...., imagingmode);
% One can 'or' them together, e.g., imagingmode = mor(kPsychNeed16BPCFixed, kPsychNeedFastBackingStore);
%
% kPsychNeed16BPCFixed - Request 16 bit per color component, fixed point framebuffer.
% kPsychNeed16BPCFloat - Request 16 bit per color component, floating point framebuffer.
% kPsychNeed32BPCFloat - Request 32 bit per color component, floating point framebuffer.
% kPsychNeedDualPass - Indicate that some of the used image processing plugins will need
% at two render passes for processing.
% kPsychNeedFastBackingStore - Enable minimal imaging pipeline. This flag is implied when using any
% of the other flags.
% kPsychNeedFastOffscreenWindows - Only enable support for fast Offscreen windows, nothing else.
% kPsychNeedHalfWidthWindow - Tell imaging pipe to create internal buffers half the real window width. Internal flag, not useful for end-user code.
% kPsychNeedHalfHeightWindow - Tell imaging pipe to create internal buffers half the real window height. Internal flag, not useful for end-user code.
% kPsychNeedImageProcessing - Request explicit support for image processing.
% kPsychNeedMultiPass - Indicate that some of the used plugins will need more than two passes.
% kPsychNeedOutputConversion - Indicate that display output is going to some special output device that
% needs special output formatting, e.g., Bits++ or Brightside HDR.
% kPsychNeedTwiceWidthWindow - Tell imaging pipe to create internal buffers twice the real window width. Internal flag, not useful for end-user code.
% kPsychNeedTripleWidthWindow - Tell imaging pipe to create internal buffers triple the real window width. Internal flag, not useful for end-user code.
%
%
% Constants for specialflags of Screen('OpenWindow', ..., specialflags);
% One can 'or' them together:
%
% kPsychSkipSecondaryVsyncForFlip - Disable vsync for bufferswaps on secondary/slave windows.
|