예제 #1
0
        protected override void Start()
        {
            base.Start();
            positionMap = RTUtil.NewUAV(detector.KeypointCount, 1, 0, RenderTextureFormat.ARGBFloat);

            linePairMap = RTUtil.NewUAV(BlazePoseDefinition.BODY_LINE_NUM, 1, 0, RenderTextureFormat.ARGBFloat, GraphicsFormat.R32G32_SFloat);

            cs.SetInt("_LinePairCount", BlazePoseDefinition.BODY_LINE_NUM);
            cs.SetTexture(0, "_LinePairMap", linePairMap);
            cs.SetBuffer(0, "_WorldKeyPoints", detector.outputWorldBuffer);
            cs.SetVectorArray(Shader.PropertyToID("_LinePair"), BlazePoseDefinition.LinePairs.ToArray());
            cs.DispatchThreads(0, 1, 1, 1);

            mirror = new RenderTexture(source.Texture.width, source.Texture.height, 0, source.Texture.graphicsFormat);
            mirror.enableRandomWrite = true;
        }
예제 #2
0
        void LateUpdate()
        {
            cs.SetInt("_Width", w);
            cs.SetInt("_Height", h);
            cs.SetVector("_Threshold", ThresholdVector);

            if (horizontal)
            {
                cs.SetTexture(0, "_MaskTex", provider.MaskTexture);
                cs.SetTexture(0, "_SourceTex", provider.SourceTexture);
                cs.SetTexture(0, "_OutputTex", outputTex);
                cs.DispatchThreads(0, h, 1, 1);
            }
            else
            {
                cs.SetTexture(1, "_MaskTex", provider.MaskTexture);
                cs.SetTexture(1, "_SourceTex", provider.SourceTexture);
                cs.SetTexture(1, "_OutputTex", outputTex);
                cs.DispatchThreads(1, w, 1, 1);
            }

            previewUI.texture = outputTex;
        }
예제 #3
0
    void AddForce()
    {
        if (_addColorHueAnim)
        {
            float h, s, v;
            Color.RGBToHSV(_addColor, out h, out s, out v);
            h        += Time.deltaTime * 0.1f;
            _addColor = Color.HSVToRGB(h, s, v);
        }

        if (!Input.GetMouseButton(0))
        {
            _lastMousePos = null;
        }
        else
        {
            Vector2 pos = Input.mousePosition;
            if (_lastMousePos.HasValue)
            {
                _addPos           = Camera.main.ScreenToViewportPoint(pos);
                _addForceVelocity = pos - _lastMousePos.Value;


                var kernel = _cs.FindKernel(CSPARAM.KERNEL_ADD_FORCE);
                _cs.SetVector(CSPARAM.ADD_POS, _addPos);
                _cs.SetVector(CSPARAM.ADDFORCE_VELOCITY, _addForceVelocity);
                _cs.SetFloat(CSPARAM.ADD_RADIUS, _addRadius);
                _cs.SetVector(CSPARAM.ADD_COLOR, _addColor);

                _cs.SetTexture(kernel, CSPARAM.VELOCITY, _velocity);
                _cs.SetTexture(kernel, CSPARAM.COLOR, _color);

                _cs.DispatchThreads(kernel, _velocity.width, _velocity.height, 1);
            }

            _lastMousePos = pos;
        }
    }