Dissolve With Texture
Genericuser (Talk | contribs) (→Source code) |
m (Text replace - "<shaderlab>" to "<syntaxhighlight lang="shaderlab">") |
||
Line 15: | Line 15: | ||
== Source code == | == Source code == | ||
− | <shaderlab> | + | <syntaxhighlight lang="shaderlab"> |
// simple "dissolving" shader by genericuser (radware.wordpress.com) | // simple "dissolving" shader by genericuser (radware.wordpress.com) | ||
// clips materials, using an image as guidance. | // clips materials, using an image as guidance. |
Revision as of 21:55, 17 January 2012
Description
A simple "dissolving" surface shader for Unity 3. It uses an image as guidance to remove pixels - with randomly generated clouds or noise, it generates a neat dissolving effect. This shader should work with most graphics cards.
Usage
You'll most likely want to alter the amount of dissolving at runtime, which is easily done by using SetFloat() to alter "_SliceAmount", like here:
renderer.material.SetFloat("_SliceAmount", 0.5 + Mathf.Sin(Time.time)*0.5)
(causes the attached object with this shader to dissolve in/out)
Source code
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, oobas, oracle11, oracle8, oxygene, oz, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
// simple "dissolving" shader by genericuser (radware.wordpress.com) // clips materials, using an image as guidance. // use clouds or random noise as the slice guide for best results. Shader "Custom Shaders/Dissolving" { Properties { _MainTex ("Texture (RGB)", 2D) = "white" {} _SliceGuide ("Slice Guide (RGB)", 2D) = "white" {} _SliceAmount ("Slice Amount", Range(0.0, 1.0)) = 0.5 } SubShader { Tags { "RenderType" = "Opaque" } Cull Off CGPROGRAM //if you're not planning on using shadows, remove "addshadow" for better performance #pragma surface surf Lambert addshadow struct Input { float2 uv_MainTex; float2 uv_SliceGuide; float _SliceAmount; }; sampler2D _MainTex; sampler2D _SliceGuide; float _SliceAmount; void surf (Input IN, inout SurfaceOutput o) { clip(tex2D (_SliceGuide, IN.uv_SliceGuide).rgb - _SliceAmount); o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb; } ENDCG } Fallback "Diffuse" } </shaderlab>