шейдер Color Saturation

Шейдеры и все-все-все.

шейдер Color Saturation

Сообщение gnoblin 05 ноя 2010, 03:42

меняем насыщенность изображения

Синтаксис:
Используется glsl
Shader "ImageProc/ColorSaturation" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
                _Sat("Sat", Float) = 0
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
                #pragma surface surf Lambert

                sampler2D _MainTex;
                float _Sat;

                struct Input {
                        float2 uv_MainTex;
                };

                void surf (Input IN, inout SurfaceOutput o) {
                        half4 c = tex2D (_MainTex, IN.uv_MainTex);
                       
                        float Lum = dot(c, float3(0.2126, 0.7152, 0.0722));
                        half3 color = lerp(Lum.xxx, c, _Sat);
                       
                        o.Albedo = color;
                        o.Alpha = c.a;
                }
                ENDCG
        }
        FallBack "Diffuse"
}
 
У вас нет доступа для просмотра вложений в этом сообщении.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: шейдер Color Saturation

Сообщение gnoblin 10 май 2011, 18:24

Пост эффект saturation,
вроде ничего не напорол 8-|

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

[ExecuteInEditMode]
[AddComponentMenu("Image Effects/Saturation")]
public class SaturationEffect : ImageEffectBase {
        public Texture  textureRamp;
        public float    rampOffset;
    public float saturation = 0;
        // Called by camera to apply image effect
        void OnRenderImage (RenderTexture source, RenderTexture destination) {
                material.SetTexture("_RampTex", textureRamp);
                material.SetFloat("_RampOffset", rampOffset);
        material.SetFloat("_Sat", saturation);

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


Синтаксис:
Используется glsl
Shader "Hidden/Saturation Effect" {
Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _RampTex ("Base (RGB)", 2D) = "grayscaleRamp" {}
        _Sat("Saturation", Float) = 0
}

SubShader {
        Pass {
                ZTest Always Cull Off ZWrite Off
                Fog { Mode off }
                               
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"

uniform sampler2D _MainTex;
uniform sampler2D _RampTex;
uniform half _RampOffset;
uniform half _Sat;

fixed4 frag (v2f_img i) : COLOR
{
        fixed4 original = tex2D(_MainTex, i.uv);
        fixed grayscale = Luminance(original.rgb);
        half2 remap = half2 (grayscale + _RampOffset, .5);
        fixed4 output = lerp(tex2D(_RampTex, remap), original, _Sat);
        output.a = original.a;
        return output;
}
ENDCG

        }
}

Fallback off

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

Re: шейдер Color Saturation

Сообщение TexeL 26 май 2011, 01:08

ТоваРишЧ Gmoblin вы просто зверь :) :ymparty: :ymhug: (popcorn1)
(3A4OT)

что за рамп текстур и офсет ?
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт


Вернуться в Shader Lab

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

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


cron