示例#1
0
        public PipelineUniform TryGetUniform(string name)
        {
            PipelineUniform ret = null;

            Uniforms.TryGetValue(name, out ret);
            return(ret);
        }
示例#2
0
 public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, Matrix4 mat, bool transpose)
 {
     //GL.UniformMatrix4((int)uniform.Opaque, 1, transpose, (float*)&mat);
     GL.Uniform4((int)uniform.Sole.Opaque + 0, 1, (float *)&mat.Row0);
     GL.Uniform4((int)uniform.Sole.Opaque + 1, 1, (float *)&mat.Row1);
     GL.Uniform4((int)uniform.Sole.Opaque + 2, 1, (float *)&mat.Row2);
     GL.Uniform4((int)uniform.Sole.Opaque + 3, 1, (float *)&mat.Row3);
 }
示例#3
0
 public void SetPipelineUniform(PipelineUniform uniform, float value)
 {
     if (uniform.Owner == null)
     {
         return;                                    //uniform was optimized out
     }
     GL.Uniform1((int)uniform.Sole.Opaque, value);
 }
示例#4
0
        public void SetPipelineUniformSampler(PipelineUniform uniform, Texture2d tex)
        {
            int n = ((int)uniform.Sole.Opaque) >> 24;

            //set the sampler index into the uniform first
            if (sActiveTexture != n)
            {
                sActiveTexture = n;
                var selectedUnit = (TextureUnit)((int)TextureUnit.Texture0 + n);
                GL.ActiveTexture(selectedUnit);
            }

            //now bind the texture
            GL.BindTexture(TextureTarget.Texture2D, (int)tex.Opaque);
        }
示例#5
0
		public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
		{
			if (uniform.Owner == null) return; //uniform was optimized out
			var v = new global::SlimDX.Vector4[values.Length];
			for (int i = 0; i < values.Length; i++)
				v[i] = values[i].ToSlimDXVector4();
			foreach (var ui in uniform.UniformInfos)
			{
				var uw = ui.Opaque as UniformWrapper;
				uw.CT.SetValue(dev, uw.EffectHandle, v);
			}
		}
示例#6
0
		public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
		{
			if (uniform.Owner == null) return; //uniform was optimized out

			foreach (var ui in uniform.UniformInfos)
			{
				var uw = ui.Opaque as UniformWrapper;
				uw.CT.SetValue(dev, uw.EffectHandle, mat.ToSlimDXMatrix(!transpose));
			}
		}
示例#7
0
		public void SetPipelineUniformSampler(PipelineUniform uniform, Texture2d tex)
		{
			int n = ((int)uniform.Sole.Opaque)>>24;

			//set the sampler index into the uniform first
			if (sActiveTexture != n)
			{
				sActiveTexture = n;
				var selectedUnit = (TextureUnit)((int)TextureUnit.Texture0 + n);
				GL.ActiveTexture(selectedUnit);
			}

			//now bind the texture
			GL.BindTexture(TextureTarget.Texture2D, (int)tex.Opaque);
		}
示例#8
0
		public void SetPipelineUniform(PipelineUniform uniform, float value)
		{
			if (uniform.Owner == null) return; //uniform was optimized out
			GL.Uniform1((int)uniform.Sole.Opaque, value);
		}
示例#9
0
		public void SetPipelineUniform(PipelineUniform uniform, Vector4 value)
		{
			GL.Uniform4((int)uniform.Sole.Opaque, value.X, value.Y, value.Z, value.W);
		}
示例#10
0
 public void SetPipelineUniform(PipelineUniform uniform, Vector4 value)
 {
     GL.Uniform4((int)uniform.Sole.Opaque, value.X, value.Y, value.Z, value.W);
 }
示例#11
0
 public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
 {
 }
示例#12
0
		public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
		{
			fixed(Matrix4* pMat = &mat)
				GL.UniformMatrix4(uniform.Id.ToInt32(), 1, transpose, (float*)pMat);
		}
示例#13
0
		public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, Matrix4 mat, bool transpose)
		{
			GL.UniformMatrix4(uniform.Id.ToInt32(), 1, transpose, (float*)&mat);
		}
示例#14
0
		public void SetPipelineUniform(PipelineUniform uniform, bool value)
		{
			GL.Uniform1(uniform.Id.ToInt32(), value ? 1 : 0); 
		}
示例#15
0
 public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
 {
     fixed(Vector4 *pValues = &values[0])
     GL.Uniform4((int)uniform.Sole.Opaque, values.Length, (float *)pValues);
 }
示例#16
0
 public void SetPipelineUniform(PipelineUniform uniform, Vector2 value)
 {
     GL.Uniform2((int)uniform.Sole.Opaque, value.X, value.Y);
 }
示例#17
0
 public void SetPipelineUniform(PipelineUniform uniform, bool value)
 {
 }
示例#18
0
 public void SetPipelineUniformSampler(PipelineUniform uniform, Texture2d tex)
 {
 }
示例#19
0
 public void SetPipelineUniform(PipelineUniform uniform, float value)
 {
 }
示例#20
0
		public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, Matrix4 mat, bool transpose)
		{
			//GL.UniformMatrix4((int)uniform.Opaque, 1, transpose, (float*)&mat);
			GL.Uniform4((int)uniform.Sole.Opaque + 0, 1, (float*)&mat.Row0);
			GL.Uniform4((int)uniform.Sole.Opaque + 1, 1, (float*)&mat.Row1);
			GL.Uniform4((int)uniform.Sole.Opaque + 2, 1, (float*)&mat.Row2);
			GL.Uniform4((int)uniform.Sole.Opaque + 3, 1, (float*)&mat.Row3);
		}
示例#21
0
		public void SetPipelineUniform(PipelineUniform uniform, Vector4 value)
		{
			GL.Uniform4(uniform.Id.ToInt32(), value.X, value.Y, value.Z, value.W);
		}
示例#22
0
 public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
 {
     fixed(Matrix4 *pMat = &mat)
     GL.UniformMatrix4((int)uniform.Sole.Opaque, 1, transpose, (float *)pMat);
 }
示例#23
0
		public void SetPipelineUniform(PipelineUniform uniform, bool value)
		{
			GL.Uniform1((int)uniform.Sole.Opaque, value ? 1 : 0); 
		}
示例#24
0
		public void SetPipelineUniform(PipelineUniform uniform, Vector2 value)
		{
			GL.Uniform2(uniform.Id.ToInt32(), value.X, value.Y);
		}
示例#25
0
		public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
		{
			fixed(Matrix4* pMat = &mat)
				GL.UniformMatrix4((int)uniform.Sole.Opaque, 1, transpose, (float*)pMat);
		}
示例#26
0
		public void SetPipelineUniform(PipelineUniform uniform, float value)
		{
			GL.Uniform1(uniform.Id.ToInt32(), value);
		}
示例#27
0
		public void SetPipelineUniform(PipelineUniform uniform, Vector2 value)
		{
			GL.Uniform2((int)uniform.Sole.Opaque, value.X, value.Y);
		}
示例#28
0
		public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
		{
			fixed (Vector4* pValues = &values[0])
				GL.Uniform4(uniform.Id.ToInt32(), values.Length, (float*)pValues);
		}
示例#29
0
		public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
		{
			fixed (Vector4* pValues = &values[0])
				GL.Uniform4((int)uniform.Sole.Opaque, values.Length, (float*)pValues);
		}
示例#30
0
		public void SetPipelineUniformSampler(PipelineUniform uniform, IntPtr texHandle)
		{
			//set the sampler index into the uniform first
			//now bind the texture
			if(sActiveTexture != uniform.SamplerIndex)
			{
				sActiveTexture = uniform.SamplerIndex;
				var selectedUnit = (TextureUnit)((int)TextureUnit.Texture0 + uniform.SamplerIndex);
				GL.ActiveTexture(selectedUnit);
			}
			GL.BindTexture(TextureTarget.Texture2D, texHandle.ToInt32());
		}
示例#31
0
		public void SetPipelineUniformSampler(PipelineUniform uniform, Texture2d tex)
		{
	
		}
示例#32
0
 public void SetPipelineUniform(PipelineUniform uniform, bool value)
 {
 }
示例#33
0
		public void SetPipelineUniform(PipelineUniform uniform, float value)
		{
			if (uniform.Owner == null) return; //uniform was optimized out
			foreach (var ui in uniform.UniformInfos)
			{
				var uw = ui.Opaque as UniformWrapper;
				uw.CT.SetValue(dev, uw.EffectHandle, value);
			}
		}
示例#34
0
 public unsafe void SetPipelineUniformMatrix(PipelineUniform uniform, ref Matrix4 mat, bool transpose)
 {
 }
示例#35
0
		public void SetPipelineUniformSampler(PipelineUniform uniform, Texture2d tex)
		{
			if (uniform.Owner == null) return; //uniform was optimized out
			var tw = tex.Opaque as TextureWrapper;

			foreach (var ui in uniform.UniformInfos)
			{
				var uw = ui.Opaque as UniformWrapper;
				dev.SetTexture(uw.SamplerIndex, tw.Texture);

				dev.SetSamplerState(uw.SamplerIndex, SamplerState.AddressU, tw.WrapClamp);
				dev.SetSamplerState(uw.SamplerIndex, SamplerState.AddressV, tw.WrapClamp);
				dev.SetSamplerState(uw.SamplerIndex, SamplerState.MinFilter, tw.MinFilter);
				dev.SetSamplerState(uw.SamplerIndex, SamplerState.MagFilter, tw.MagFilter);
			}
		}
示例#36
0
 public void SetPipelineUniform(PipelineUniform uniform, Vector2 value)
 {
 }
示例#37
0
 public void SetPipelineUniform(PipelineUniform uniform, Vector2 value)
 {
 }
示例#38
0
 public void SetPipelineUniform(PipelineUniform uniform, float value)
 {
 }
示例#39
0
 public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
 {
 }
示例#40
0
 public unsafe void SetPipelineUniform(PipelineUniform uniform, Vector4[] values)
 {
 }
示例#41
0
 public void SetPipelineUniformSampler(PipelineUniform uniform, IntPtr texHandle)
 {
 }
示例#42
0
 public void SetPipelineUniform(PipelineUniform uniform, bool value)
 {
     GL.Uniform1((int)uniform.Sole.Opaque, value ? 1 : 0);
 }