private UnifiedArray <Vector2> SphericalPixelCoordinates(int N_theta, int N_phi) { UnifiedArray <float> debugUnifiedArray = new UnifiedArray <float>(sphericalWidthRes * sphericalHeightRes, sizeof(float), projectionFilterDebug); debugUnifiedArray.SetBuffer(computeFilter, projectionFilterKernel); UnifiedArray <Vector2> pixelCoordinates = new UnifiedArray <Vector2>(sphericalWidthRes * sphericalHeightRes, sizeof(uint) * 2, projectionFilterBuffer); pixelCoordinates.SetBuffer(computeFilter, projectionFilterKernel); //Debug.Log(frustum._cameraMatrix); computeFilter.SetMatrix("CameraMatrix", frustum._cameraMatrix); computeFilter.SetInt("N_W", frustum._pixelWidth); computeFilter.SetInt("N_H", frustum._pixelHeight); computeFilter.SetInt("N_theta", sphericalWidthRes); computeFilter.SetInt("N_phi", sphericalHeightRes); computeFilter.SetFloat("VFOV_c", frustum._verticalAngle); computeFilter.SetFloat("VFOV_s", frustum._verticalSideAngles); computeFilter.SetFloat("HFOV_c", frustum._horisontalAngle); computeFilter.SetFloat("HFOV_s", frustum._horisontalAngle); debugUnifiedArray.SynchUpdate(computeFilter, projectionFilterKernel); pixelCoordinates.SynchUpdate(computeFilter, projectionFilterKernel); debugUnifiedArray.Delete(); return(pixelCoordinates); }
public void SetupSphericalProjectionFilter(int N_theta, int N_phi, CameraFrustum cameraFrustum) { sphericalWidthRes = N_theta; sphericalHeightRes = N_phi; frustum = cameraFrustum; filterCoordinates = SphericalPixelCoordinates(N_theta, N_phi); SphericalProjectionFilterMask = SphericalPixelCoordinatesImage(); }