protected override void SetupJob() { m_Job = new FloatWithFloatConvolveJob { Input = m_InputImage, Output = m_OutputImage, Convolution = m_Convolution }; }
void Awake() { m_Convolution = new Convolution2D <float>(Kernels.Short.Sobel.X.ToFloat()); SetupTextures(); var inputData = new Image <Color24>(m_InputTexture); m_GreyscaleJob = new GreyscaleByLuminanceFloatJob24(inputData.Buffer, m_GrayscaleInput.Buffer, LuminanceWeights.FloatNormalized); m_ConvolveJob = new FloatWithFloatConvolveJob(m_Convolution, m_GrayscaleInput, m_Convolved); m_BiasedReluJob = new BiasedReluActivationCopyJob(m_Convolved.Buffer, m_Activated.Buffer, 0f); m_JobHandle = m_GreyscaleJob.Schedule(m_GrayscaleInput.Buffer.Length, 4096); m_JobHandle = m_ConvolveJob.Schedule(m_JobHandle); m_JobHandle = m_BiasedReluJob.Schedule(m_Convolved.Buffer.Length, 4096, m_JobHandle); }
void Update() { switch (Time.frameCount) { case 3: m_GreyscaleJob = new GreyscaleByLuminanceFloatJob24(m_InputTexture.GetRawTextureData <Color24>(), m_GrayscaleInput.Buffer, LuminanceWeights.FloatNormalized); m_GrayScaleJobHandle = m_GreyscaleJob.Schedule(m_GrayscaleInput.Buffer.Length, 1024); var width = m_InputTexture.width; var height = m_InputTexture.width; m_GaussJob = new FloatWithFloatConvolveJob() { Convolution = m_GaussianBlur3x3, Input = new Image <float>(m_GreyscaleJob.Grayscale, width, height), Output = m_GaussInput }; m_GrayScaleJobHandle = m_GaussJob.Schedule(m_GrayScaleJobHandle); break; case 8: m_GrayScaleJobHandle.Complete(); m_GrayscaleInputTexture.LoadRawTextureData(m_GreyscaleJob.Grayscale); m_GrayscaleInputTexture.Apply(); m_GaussTexture.LoadImageData(m_GaussJob.Output); m_Sobel = new SobelFloatPrototype(m_GaussJob.Output); break; case 9: m_JobHandle = m_Sobel.Schedule(m_GrayScaleJobHandle); break; case 13: m_JobHandle.Complete(); m_Sobel.OnJobsComplete(); m_KernelOneRenderer.material.mainTexture = m_Sobel.ConvolvedTextureOne; m_KernelTwoRenderer.material.mainTexture = m_Sobel.ConvolvedTextureTwo; m_ConvolutionOutputRenderer.material.mainTexture = m_Sobel.ConvolutionOutputTexture; break; case 15: m_JobHandle = m_Sobel.Schedule(m_GrayScaleJobHandle); break; case 22: m_JobHandle.Complete(); m_Sobel.Complete(); m_Sobel.OnJobsComplete(); break; case 24: m_KernelOneRenderer.material.mainTexture = m_Sobel.ConvolvedTextureOne; m_KernelTwoRenderer.material.mainTexture = m_Sobel.ConvolvedTextureTwo; m_ConvolutionOutputRenderer.material.mainTexture = m_Sobel.ConvolutionOutputTexture; break; } }