Проблема с DOF шейдером

Посты сомнительного качества на тему шейдеров (для истории)

Проблема с DOF шейдером

Сообщение BORODA 10 май 2010, 18:29

Возникла проблема с DOF шейдером которая довела меня просто до белой горячки.
Я скачал отсюда пример DOFа и без задних мыслей пихнул в папку с шейдерами проекта.
Появилась ошибка
Assets/Shader/Depth of Field/DepthOfFieldEffect.js(184,25): BCE0005: Unknown identifier: 'ImageEffects'.

Я было подумал что у меня не импортировался файл из Pro Standart Assets. Переимпортировал теми что были с примером в архиве. Ошибка не пропала.
Я положил папку Pro Standard Assets и Depth of Field в корень своего проекта и, о чудо, оно заработало. Но почему, блин, я не могу поменять структуру? Даже если я переложу обе эти папки в другую подпапку - все, капут. Опять вываливается ошибка ImageEffects. Я никак не могу въехать почему это происходит...
Подскажите пожалуйста ^:)^
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение warr11r 11 май 2010, 16:47

Дайте почитать этот шейдер, 8 мб тянуть нерентабельно.
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Проблема с DOF шейдером

Сообщение BORODA 11 май 2010, 17:27

DepthOfFieldEffect.js
Синтаксис:
Используется javascript
#pragma strict

@script ExecuteInEditMode
@script AddComponentMenu("Image Effects/Depth Of Field")
@script RequireComponent(Camera)

var focalDistance = 5.0;
var focalRange = 10.0;

/// Blur iterations - larger number means more blur.
var iterations = 1;
var iterations2 = 2;
       
/// Blur spread for each iteration. Lower values
/// give better looking blur, but require more iterations to
/// get large blurs. Value is usually between 0.5 and 1.0.
var blurSpread = 0.6;


var renderSceneShader : Shader;
var compositeShader : Shader;
       
       
// --------------------------------------------------------
// The blur iteration shader.
// Basically it just takes 4 texture samples and averages them.
// By applying it repeatedly and spreading out sample locations
// we get a Gaussian blur approximation.

private static var blurMatString =
        "Shader \"BlurConeTap\" { SubShader { Pass { " +
                "ZTest Always Cull Off ZWrite Off Fog { Mode Off } " +
                "       SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant alpha} " +
                "       SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} " +
                "       SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} " +
                "       SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} " +
        "} } Fallback off }";


private var m_Material : Material;
private function GetMaterial() : Material {
        if (m_Material == null) {
                m_Material = new Material( blurMatString );
                m_Material.hideFlags = HideFlags.HideAndDontSave;
                m_Material.shader.hideFlags = HideFlags.HideAndDontSave;
        }
        return m_Material;
}

private var m_CompositeMaterial : Material;
private function GetCompositeMaterial() : Material {
        if (m_CompositeMaterial == null) {
                m_CompositeMaterial = new Material( compositeShader );
                m_CompositeMaterial.hideFlags = HideFlags.HideAndDontSave;
        }
        return m_CompositeMaterial;
}

private var renderTexture : RenderTexture;
private var shaderCamera : GameObject;


function OnDisable() { 
        if( m_Material ) {
                DestroyImmediate( m_Material.shader );
                DestroyImmediate( m_Material );
        }
        DestroyImmediate (m_CompositeMaterial);
        DestroyImmediate (shaderCamera);
        if (renderTexture != null) {
                RenderTexture.ReleaseTemporary (renderTexture);
                renderTexture = null;
        }
}
       
// --------------------------------------------------------
       
function Start() {
        // Disable if we don't support image effects
        if (!SystemInfo.supportsImageEffects) {
                enabled = false;
                return;
        }
        // Disable if the shader(s) can't run on the users graphics card
        if (!GetMaterial().shader.isSupported || !GetCompositeMaterial().shader.isSupported) {
                enabled = false;
                return;
        }
        if (!renderSceneShader || !renderSceneShader.isSupported) {
                enabled = false;
                return;
        }
}

// --------------------------------------------------------

function OnPreRender()
{
        if (!enabled || !gameObject.active)
                return;
               
        if (renderTexture != null) {
                RenderTexture.ReleaseTemporary (renderTexture);
                renderTexture = null;
        }
        renderTexture = RenderTexture.GetTemporary (camera.pixelWidth, camera.pixelHeight, 16);
        if (!shaderCamera) {
                shaderCamera = new GameObject("ShaderCamera", Camera);
                shaderCamera.camera.enabled = false;
                shaderCamera.hideFlags = HideFlags.HideAndDontSave;
        }
       
        var cam = shaderCamera.camera;
        cam.CopyFrom (camera);
        cam.backgroundColor = Color(1,1,1,1);
        cam.clearFlags = CameraClearFlags.SolidColor;
        cam.targetTexture = renderTexture;
        cam.RenderWithShader (renderSceneShader, "RenderType");
}

// --------------------------------------------------------

       
// Performs one blur iteration.
private function FourTapCone (source : RenderTexture, dest : RenderTexture, iteration : int) : void
{
        RenderTexture.active = dest;
        source.SetGlobalShaderProperty ("__RenderTex");
       
        var offsetX = (0.5+iteration*blurSpread) / source.width;
        var offsetY = (0.5+iteration*blurSpread) / source.height;
        GL.PushMatrix ();
        GL.LoadOrtho ();    
       
        var mat = GetMaterial();
        for (var i = 0; i < mat.passCount; ++i) {
                mat.SetPass (i);
                Render4TapQuad( dest, offsetX, offsetY );
        }
        GL.PopMatrix ();
}
       
// Downsamples the texture to a quarter resolution.
private function DownSample4x (source : RenderTexture, dest : RenderTexture) : void
{
        RenderTexture.active = dest;
        source.SetGlobalShaderProperty ("__RenderTex");
       
        var offsetX = 1.0 / source.width;
        var offsetY = 1.0 / source.height;
       
        GL.PushMatrix ();
        GL.LoadOrtho ();
        var mat = GetMaterial();
        for (var i = 0; i < mat.passCount; ++i)
        {
                mat.SetPass (i);
                Render4TapQuad( dest, offsetX, offsetY );
        }
        GL.PopMatrix ();
}
       
// Called by the camera to apply the image effect
function OnRenderImage (source : RenderTexture, destination : RenderTexture) : void
{
        var buffer1 = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
        var buffer2 = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
        var interm = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
       
        // Copy source to the 4x4 smaller texture.
        DownSample4x (source, buffer1);
       
        // Blur the small texture repeatedly
        var oddEven = true;
        for(var i = 0; i < iterations + iterations2; i++)
        {
                if( oddEven )
                        FourTapCone (buffer1, buffer2, i);
                else
                        FourTapCone (buffer2, buffer1, i);
                oddEven = !oddEven;
               
                if (i==iterations-1)
                        ImageEffects.Blit(oddEven ? buffer1 : buffer2, interm);
        }
               
        var compositeMat = GetCompositeMaterial();
        compositeMat.SetTexture ("_BlurTex1", interm);
        compositeMat.SetTexture ("_BlurTex2", oddEven ? buffer1 : buffer2);
        compositeMat.SetTexture ("_DepthTex", renderTexture);
        Shader.SetGlobalVector ("_FocalParams", Vector4(focalDistance, 1.0/focalDistance, focalRange, 1.0/focalRange));
               
        ImageEffects.BlitWithMaterial(compositeMat, source, destination);
       
        RenderTexture.ReleaseTemporary(buffer1);
        RenderTexture.ReleaseTemporary(buffer2);
        RenderTexture.ReleaseTemporary(interm);
       
        if (renderTexture != null) {
                RenderTexture.ReleaseTemporary (renderTexture);
                renderTexture = null;
        }
}

private static function Render4TapQuad( dest : RenderTexture, offsetX : float, offsetY : float ) : void
{
        GL.Begin( GL.QUADS );

        // Direct3D needs interesting texel offsets!           
        var off = Vector2.zero;
        if( dest != null )
                off = dest.GetTexelOffset() * 0.75;
       
        Set4TexCoords( off.x, off.y, offsetX, offsetY );
        GL.Vertex3( 0,0, 0.1 );
       
        Set4TexCoords( 1.0 + off.x, off.y, offsetX, offsetY );
        GL.Vertex3( 1,0, 0.1 );
       
        Set4TexCoords( 1.0 + off.x, 1.0 + off.y, offsetX, offsetY );
        GL.Vertex3( 1,1, 0.1 );
       
        Set4TexCoords( off.x, 1.0 + off.y, offsetX, offsetY );
        GL.Vertex3( 0,1, 0.1 );
       
        GL.End();
}

private static function Set4TexCoords( x : float, y : float, offsetX : float, offsetY : float ) : void
{
        GL.MultiTexCoord2( 0, x - offsetX, y - offsetY );
        GL.MultiTexCoord2( 1, x + offsetX, y - offsetY );
        GL.MultiTexCoord2( 2, x + offsetX, y + offsetY );
        GL.MultiTexCoord2( 3, x - offsetX, y + offsetY );
}
 



DepthOfFieldComposite.shader
Синтаксис:
Используется glsl
Shader "Hidden/DOF Composite" {
Properties {
        _MainTex ("", RECT) = "white" {}
        _BlurTex1 ("", RECT) = "white" {}
        _BlurTex2 ("", RECT) = "white" {}
        _DepthTex ("", RECT) = "white" {}
}

SubShader {
        Pass {
                ZTest Always Cull Off ZWrite Off Fog { Mode off }

CGPROGRAM
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"

uniform samplerRECT _MainTex : register(s0);
uniform samplerRECT _BlurTex1 : register(s1);
uniform samplerRECT _BlurTex2 : register(s2);
uniform samplerRECT _DepthTex : register(s3);

uniform float4 _FocalParams; // x = distance, y = 1/distance, z = range, w = 1/range

struct v2f {
        float2 uv[4] : TEXCOORD0;
};

float DOFFactor( float z ) {
        float focalDist = _FocalParams.x;
        float invRange = _FocalParams.w;
       
        float fromFocal = z - focalDist;
        if( fromFocal < 0.0 )
                fromFocal *= 4.0;
        return saturate( abs( fromFocal ) * invRange );
}

half4 frag (v2f i) : COLOR
{
        half4 original = texRECT(_MainTex, i.uv[0]);
        half3 blur1 = texRECT(_BlurTex1, i.uv[1]).rgb;
        half3 blur2 = texRECT(_BlurTex2, i.uv[2]).rgb;
       
        // tint blur levels just for fun!
        blur1 *= float3(1,1,0.7);
        blur2 *= float3(0.7,0.7,1);
       
        float dof = texRECT(_DepthTex, i.uv[3]).r;
       
        half dof2;
        if( dof > 0.5 )
                dof2 = saturate( dof * 0.25 + 0.75 );
        else
                dof2 = saturate( dof * 1.5 );
        half factor = saturate( dof * 1.5 - 0.75 );
        half3 blur = lerp( blur1, blur2, factor );
        half3 col = lerp( original.rgb, blur, dof );   
        return half4(col, original.a);
}
ENDCG
        }
}

Fallback off

}
 


RenderDOFFactor.shader
Синтаксис:
Используется glsl
Shader "Hidden/Render DOF Factor" {
Properties {
        _MainTex ("Base", 2D) = "white" {}
        _Cutoff ("Cutoff", float) = 0.5
}

// Helper code used in all of the below subshaders     
CGINCLUDE
struct v2f {
        float4 pos : POSITION;
        float depth : TEXCOORD0;
};
struct v2f_uv {
        float4 pos : POSITION;
        float2 uv : TEXCOORD0;
        float depth : TEXCOORD1;
};
uniform float4 _FocalParams;
half DOFFactor( float z ) {
        float focalDist = _FocalParams.x;
        float invRange = _FocalParams.w;
        float fromFocal = z - focalDist;
        if( fromFocal < 0.0 )
                fromFocal *= 4.0;
        return saturate( abs( fromFocal ) * invRange );
}
uniform sampler2D _MainTex;
uniform float _Cutoff;
half4 frag(v2f i) : COLOR {
        return DOFFactor(i.depth);
}
half4 frag_uv(v2f_uv i) : COLOR {
        half4 texcol = tex2D( _MainTex, i.uv );
        clip( texcol.a - _Cutoff );    
        return DOFFactor(i.depth);
}
ENDCG

Category {
        Fog { Mode Off }
       
        // regular opaque objects
        SubShader {
                Tags { "RenderType"="Opaque" }
                Pass {
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
v2f vert( appdata_base v ) {
        v2f o;
        o.pos = mul(glstate.matrix.mvp, v.vertex);
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG
                }
        }
       
        // transparent cutout objects
        SubShader {
                Tags { "RenderType"="TransparentCutout" }
                Pass {
                        Cull Off
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_uv
#include "UnityCG.cginc"
v2f_uv vert( appdata_base v ) {
        v2f_uv o;
        o.pos = mul(glstate.matrix.mvp, v.vertex);
        o.uv = v.texcoord;
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG

                }
        }
       
        // terrain tree bark
        SubShader {
                Tags { "RenderType"="TreeOpaque" }
                Pass {
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "TerrainEngine.cginc"
struct appdata {
    float4 vertex : POSITION;
    float4 color : COLOR;
};
v2f vert( appdata v ) {
        v2f o;
        TerrainAnimateTree(v.vertex, v.color.w);
        o.pos = mul( glstate.matrix.mvp, v.vertex );
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG
                }
        }
       
        // terrain tree leaves
        SubShader {
                Tags { "RenderType"="TreeTransparentCutout" }
                Pass {
                        Cull Off
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_uv
#include "UnityCG.cginc"
#include "TerrainEngine.cginc"
struct appdata {
    float4 vertex : POSITION;
    float4 color : COLOR;
    float4 texcoord : TEXCOORD0;
};
v2f_uv vert( appdata v ) {
        v2f_uv o;
        TerrainAnimateTree(v.vertex, v.color.w);
        o.pos = mul( glstate.matrix.mvp, v.vertex );
        o.uv = v.texcoord;
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG
                }
        }
       
        // terrain tree billboards
        SubShader {
                Tags { "RenderType"="TreeBillboard" }
                Pass {
                        Cull Off
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_tree
#include "UnityCG.cginc"
#include "TerrainEngine.cginc"
struct appdata {
    float4 vertex : POSITION;
    float4 color : COLOR;
    float4 texcoord : TEXCOORD0;
};
v2f_uv vert( appdata_tree_billboard v ) {
        v2f_uv o;
        TerrainBillboardTree(v.vertex, v.texcoord1.xy);
        o.pos = mul( glstate.matrix.mvp, v.vertex );
        o.uv = v.texcoord;
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
half4 frag_tree(v2f_uv i) : COLOR {
        half4 texcol = tex2D( _MainTex, i.uv );
        clip( texcol.a - 0.5 );
        return DOFFactor(i.depth);
}
ENDCG
                }
        }
       
        // terrain grass billboards
        SubShader {
                Tags { "RenderType"="GrassBillboard" }
                Pass {
                        Cull Off
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_uv
#pragma multi_compile NO_INTEL_GMA_X3100_WORKAROUND INTEL_GMA_X3100_WORKAROUND
#include "UnityCG.cginc"
#include "TerrainEngine.cginc"

v2f_uv vert (appdata_grass v) {
        v2f_uv o;
        TerrainBillboardGrass(v.vertex, v.texcoord1.xy);
        float waveAmount = v.texcoord1.y;
        float4 dummyColor = 0;
        TerrainWaveGrass (v.vertex, waveAmount, dummyColor, dummyColor);
        o.pos = mul (glstate.matrix.mvp, v.vertex);
        o.uv = v.texcoord;
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG
                }
        }
       
        // terrain grass non-billboards
        SubShader {
                Tags { "RenderType"="Grass" }
                Pass {
                        Cull Off
               
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_uv
#pragma multi_compile NO_INTEL_GMA_X3100_WORKAROUND INTEL_GMA_X3100_WORKAROUND
#include "UnityCG.cginc"
#include "TerrainEngine.cginc"

v2f_uv vert (appdata_grass v) {
        v2f_uv o;
        float waveAmount = v.color.a * _WaveAndDistance.z;
        float4 dummyColor = 0;
        TerrainWaveGrass (v.vertex, waveAmount, dummyColor, dummyColor);
        o.pos = mul (glstate.matrix.mvp, v.vertex);
        o.uv = v.texcoord;
        COMPUTE_EYEDEPTH(o.depth);
        return o;
}
ENDCG
                }
        }
       
}
}

 


У вас в описании тега syntax= ошибка. Там написано дописать javascrip, а надо javascript.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение warr11r 12 май 2010, 23:22

Честно говоря, мне тоже странная такая ситуация. Вроде, как ImageEffects.Blit требует именно ПРО, и ответ может быть в кривой кряке.
А попробуйте другой шейдер, с этим методом использовать: http://www.unifycommunity.com/wiki/inde ... loomEffect
Появляется подобная ошибка?
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Проблема с DOF шейдером

Сообщение BORODA 13 май 2010, 07:42

Нет! ~x(
Скрытый текст:
Изображение


~x( ~x(
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение warr11r 16 май 2010, 22:53

У меня нет версий. :-??
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Проблема с DOF шейдером

Сообщение BORODA 17 май 2010, 14:33

Значит это глюк, причем очень неприятный... :-l
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение foonk 17 май 2010, 15:05

DOF шейдер работает только в версии PRO, ошибок и ворнингов не возникает независимо от того где лежит шейдер, ни в корне, ни в папке Shaders. Глюк только один - кряк.
— 2010-й год. В Ладу Калину поставили первый Глонасс-приемник размером с утюг. В то же время Эппл выпускает плеер размером меньше спичечного коробка с цветным дисплеем и тачскрином.
Добавить foonk09 в Skype
Аватара пользователя
foonk
UNITрон
 
Сообщения: 302
Зарегистрирован: 16 май 2009, 20:25
Откуда: Москва
  • ICQ

Re: Проблема с DOF шейдером

Сообщение BORODA 17 май 2010, 20:01

Серьезно?? А то что у меня Pro Trial тоже не позволяет мне его использовать? Не надо мне тут делать беременную голову. Это глюк самой [unity 3D], либо проблема с самим шейдером:
Скрытый текст:
Изображение

Как видно на скрине в папке Bloom лежит соответствующий шейдер который не выдает ошибок, а DOF лежащий в соседней папке не работает.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение gnoblin 17 май 2010, 21:29

Предположение: В виду особенностей порядка компиляции скриптов и того как у вас лежат файлы в проекте юнити не видит скрипт ImageEffects.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Проблема с DOF шейдером

Сообщение BORODA 17 май 2010, 22:03

Выше я уже писал что даже если я перемещу скрипт (ImageEffects) ПРЯМО в папку с шейдером ошибка не исчезает. Шейдер работает ТОЛЬКО в корне проекта и ТОЛЬКО с Image Effects в подпапке Pro Standart Assets, тоже в корне проекта. Иначе никак. Любые перемещения файлов в пределе проекта заканчиваются ошибкой.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение gnoblin 17 май 2010, 22:57

Раз работает - в чем трабл?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Проблема с DOF шейдером

Сообщение BORODA 18 май 2010, 07:34

Трабл в том что:
1. Я не могу положить его в подпапку (нарушается строгость структуры проекта)
2. Нужно создавать лишние папки, которые уже у меня есь
2. Нужно плодить ImageEffects.cs, и получать лишние ворнинги о том переназначении класа.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт

Re: Проблема с DOF шейдером

Сообщение warr11r 19 май 2010, 15:32

Возможно ли такое, что движком скрипты, лежащие в корне, обрабатываются в последнюю очередь? Это, конечно, не имеет никакой логики, но в данном случае обьясняет, что метод скриптом запрашивается еще "до" индексирования папки со скриптом метода.
Мудрость - это когда начинаешь понимать, что все время занимаешься какой-то х...ней.
Изображение
Аватара пользователя
warr11r
UNITрон
 
Сообщения: 310
Зарегистрирован: 06 июн 2009, 03:21
Откуда: Украина, Ровно
  • ICQ

Re: Проблема с DOF шейдером

Сообщение BORODA 20 май 2010, 19:39

Завтра попробую ручками переписать весь шейдер. Может так найду ошибку.
Thifeo: The Ultimate Dream - Arcade Unity Game in development.
Аватара пользователя
BORODA
UNIт
 
Сообщения: 57
Зарегистрирован: 12 фев 2010, 17:51
Откуда: Львов
Skype: OSXX86
  • Сайт


Вернуться в Шейдер-флуд

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

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