license import { backend_util , KernelConfig , Tensor4D } from '@tensorflow/tfjs-core' ; import { RotateWithOffset , RotateWithOffsetAttrs , RotateWithOffsetInputs } from '@tensorflow/tfjs-core' ; import { MathBackendWebGL } from '../backend_webgl' ; import { RotateProgram } from '../rotate_gpu' ; export const rotateWithOffsetConfig = { kernelName : RotateWithOffset , backendName : 'webgl' , kernelFunc : ( { inputs , attrs , backend } ) => { const { image } = inputs as RotateWithOffsetInputs ; const { radians , fillValue , center } = attrs as { } as RotateWithOffsetAttrs ; const webglBackend = backend as MathBackendWebGL ; const program = new RotateProgram ( ( image as Tensor4D ) . shape , fillValue ) ; const [ centerX , centerY ] = backend_util . getImageCenter ( center , image . shape [ 1 ] , image . shape [ 2 ] ) ; const customValues = [ [ centerX , centerY , Math . sin ( radians ) , Math . cos ( radians ) ] ] ; const output = webglBackend . runWebGLProgram ( program , [ image ] , image . dtype , customValues ) ; return output ; } } ;