Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }