Quantcast
Channel: Questions in topic: "error"
Viewing all articles
Browse latest Browse all 7934

Accessing shader property breaks shader

$
0
0
Hi there I'm making a basic particle effect shader and would like to pass the position of my particle effect emmitter to the shader. I'm doing this via a script : using UnityEngine; using System.Collections; public class ParticleEmitterScript : MonoBehaviour { public GameObject emitter; // Use this for initialization void Start () { gameObject.renderer.material.SetVector("_Position", new Vector4(0,0,0,0)); } // Update is called once per frame void Update () { } } However when I attach this script my shader stops working as it should. If I attach this script to all particles in my system all particles will follow one path. Here is my shader : Shader "Custom/ParticleShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _Speed ("Particle Speed", Range (0,10)) = 0.5 _Height ("Particle Height", Range (0,100)) = 80 _ParticleSpread ("Particle Spread", Range (0,100)) = 20 _ParticleSize ("Particle Size", Range (0,10)) = 7.8 _ParticleSystemShape ("System Shape", Range (0,10)) = 1 _Cutoff ("Cut Off", Range (0,1)) = 0.5 _Fader ("Fade Point", Range (0,1)) = 0.9 _Position ("World Position", Vector) = (0,0,0,0) } Category { Tags { "Queue" = "Transparent" } Blend SrcAlpha OneMinusSrcAlpha AlphaTest Greater .01 ColorMask RGB Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _Position; float _Speed; float _Height; float _ParticleSpread; float _ParticleSize; float _ParticleSystemShape; float _Cutoff; float _Fader; struct v2f { float4 pos : SV_POSITION; float color : COLOR0; float2 uv : TEXCOORD0; }; float4 _MainTex_ST; v2f vert (appdata_base v) { float t = frac(v.vertex.z + _Speed * _Time); float s = pow(t, _ParticleSystemShape); float3 eyeVector = ObjSpaceViewDir( v.vertex ); float3 upVector = float3(0,1,0); float3 sideVector = normalize(cross(eyeVector,upVector)); v2f o; o.pos = v.vertex; o.pos.x = _ParticleSpread * s * sin(62.0 * v.vertex.z); o.pos.z = _ParticleSpread * s * cos(163.0 * v.vertex.z); o.pos.y = _Height * t; o.pos.xyz += _ParticleSize * (v.vertex.x * sideVector + v.vertex.y * upVector).xyz; o.pos = mul (UNITY_MATRIX_VP, o.pos); o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); o.color = _Fader - t; return o; } float4 frag (v2f i) : COLOR { float4 texcol = tex2D(_MainTex, i.uv); if(texcol.a < _Cutoff) { discard; } return i.color * texcol; } ENDCG } } } } Any help would be appreciated

Viewing all articles
Browse latest Browse all 7934

Trending Articles