Есть ли способ изменить цвет объектов на единицу глубины при просмотре через камеру - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь изменить цвета объектов таким образом, чтобы они казались красными, когда они находятся рядом с экраном, и фиолетовыми для дальнейших объектов / точек с экрана.

Я попытался реализовать код для фрагментной части шейдера в Unity3D, но он не работает.

        fixed4 frag(v2f i) : SV_TARGET{
            //get depth from depth texture
            float depth = tex2D(_CameraDepthTexture, i.uv).r;
            //linear depth between camera and far clipping plane
            depth = Linear01Depth(depth);
            //depth as distance from camera in units 
            depth = depth * _ProjectionParams.z;

            //get source color
            fixed4 source = tex2D(_MainTex, i.uv);

            if(depth >= _ProjectionParams.z)
                return RGB(violet);
            else
                return RGB_value_of_object_according_to_the_depth;
        }

Здесь я могу получить цвет источника, но не могу изменить цвет объекта на красный, если он ближе к камере, и фиолетовый, если он самый дальний.

Если быть точным, я не могу исправить код для условия if / else.

Заранее спасибо за любую помощь, которую я могу получить.

Code Credits: код, используемый в уроках Роньи по упражнениям

...