Текстура Z-Глубины отображается не правильно

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Текстура Z-Глубины отображается не правильно

Сообщение Receptor 17 окт 2013, 12:15

Пытаюсь тут вникнуть немного в Буффер Глубины, в общем вывожу билт ин текстуру глубины на экран вот так:

Синтаксис:
Используется glsl
Shader "Custom/NewShader" {
        Properties {
                //_MainTex ("Base", 2D) = "white" {}
        }
        SubShader {

                Pass{
               
                ZTest Always

                CGPROGRAM
                #pragma target 3.0
                #pragma vertex vert_img
                #pragma fragment frag
                #include "UnityCG.cginc"
               
                //sampler2D _MainTex;
                sampler2D _CameraDepthTexture;
               
                float4 frag(v2f_img i) : COLOR{
                        return tex2D(_CameraDepthTexture, i.uv);
                }
               
                ENDCG
                }
        }
        FallBack Off
}
 


Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
public class NewBehaviourScript : MonoBehaviour {
       
        public Material material;
       
        void Awake(){
                if(camera) camera.depthTextureMode = DepthTextureMode.Depth;
        }
       
        void OnRenderImage(RenderTexture source, RenderTexture destination){

                if(material){
                        Graphics.Blit(source, destination, material);
                }

        }
}
 


В режиме Deffered Rendering отображается нормально:
Изображение

В режиме Forward Rendering результат почему-то обращается сверху-вних:
Изображение

Почему так происходит? :-??
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Текстура Z-Глубины отображается не правильно

Сообщение Receptor 17 окт 2013, 12:27

Еще хотел бы узнать, как можно самостоятельно получить текстуру _CameraDepthTexture, перелопатил CG инклуды - не нашел там.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Текстура Z-Глубины отображается не правильно

Сообщение jetyb 17 окт 2013, 13:24

1) Потому что в direct3D в рендертекстурах отсчет по y ведется верху вниз.
2) Камер на сцене (считая и неявные) много, -> много и текстур глубины, 1 конкретную не задать. Но можно в OnRenderImage копировать буфер глубины в нужную текстуру.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Текстура Z-Глубины отображается не правильно

Сообщение Receptor 17 окт 2013, 15:02

jetyb Так а поправить это дело как-то можно? Или только мудрить с координатами uv? Я имею ввиду написать свою vert функцию, где координаты развертки обращать сверху-вниз, только не знаю, есть ли директивы проверяющие тип рендера.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск



Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24