/// <summary> /// Creates and returns a copy of this GpuProgramUsage object. /// </summary> /// <returns></returns> public GpuProgramUsage Clone() { GpuProgramUsage usage = new GpuProgramUsage(type); usage.program = program; usage.parameters = parameters.Clone(); return(usage); }
public GpuProgramUsage(GpuProgramUsage oth, Pass parent) : base() { this.type = oth.type; this.parent = parent; this.program = oth.Program; // nfz: parameters should be copied not just use a shared ptr to the original this.parameters = new GpuProgramParameters(oth.parameters); this.recreateParams = false; }
/// <summary> /// Creates and returns a copy of this GpuProgramUsage object. /// </summary> /// <returns></returns> public GpuProgramUsage Clone() { GpuProgramUsage usage = new GpuProgramUsage(type); usage.program = program; usage.parameters = parameters.Clone(); return usage; }
/// <summary> /// </summary> public void SetShadowReceiverVertexProgram( string name ) { // turn off vertex programs when the name is set to null if ( name.Length == 0 ) { _shadowReceiverVertexProgramUsage = null; } else { // create a new usage object if ( !this.HasShadowReceiverVertexProgram ) { _shadowReceiverVertexProgramUsage = new GpuProgramUsage( GpuProgramType.Vertex ); } _shadowReceiverVertexProgramUsage.ProgramName = name; } // needs recompilation _parent.NotifyNeedsRecompile(); }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="resetParams"></param> public void SetGeometryProgram( string name, bool resetParams ) { // turn off fragment programs when the name is set to null if ( name.Length == 0 ) { _geometryProgramUsage = null; } else { // create a new usage object if ( !this.HasGeometryProgram ) { _geometryProgramUsage = new GpuProgramUsage( GpuProgramType.Geometry ); } _geometryProgramUsage.ProgramName = name; } // needs recompilation _parent.NotifyNeedsRecompile(); }
public HLSLFixedFunctionProgram() { vertexProgramUsage = new GpuProgramUsage( GpuProgramType.Vertex, null ); fragmentProgramUsage = new GpuProgramUsage( GpuProgramType.Fragment, null ); fixedFunctionState = new FixedFunctionState(); }
public GpuProgramUsage(GpuProgramUsage oth, Pass parent) { type = oth.type; this.parent = parent; program = oth.Program; // nfz: parameters should be copied not just use a shared ptr to the original parameters = new GpuProgramParameters( oth.parameters ); recreateParams = false; }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="resetParams"></param> public void SetVertexProgram(string name, bool resetParams) { // turn off vertex programs when the name is set to null if(name.Length == 0) { vertexProgramUsage = null; } else { // create a new usage object if(!this.HasVertexProgram) { vertexProgramUsage = new GpuProgramUsage(GpuProgramType.Vertex); } vertexProgramUsage.ProgramName = name; } // needs recompilation parent.NotifyNeedsRecompile(); }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="resetParams"></param> public void SetShadowCasterFragmentProgram(string name) { // turn off fragment programs when the name is set to null if (name.Length == 0) { shadowCasterFragmentProgramUsage = null; } else { // create a new usage object if (!this.HasShadowCasterFragmentProgram) { shadowCasterFragmentProgramUsage = new GpuProgramUsage(GpuProgramType.Fragment); } shadowCasterFragmentProgramUsage.ProgramName = name; } // needs recompilation parent.NotifyNeedsRecompile(); }
public void SetShadowCasterVertexProgram( string name ) { // turn off vertex programs when the name is set to null if ( name.Length == 0 ) { this.shadowCasterVertexProgramUsage = null; } else { // create a new usage object if ( !HasShadowCasterVertexProgram ) { this.shadowCasterVertexProgramUsage = new GpuProgramUsage( GpuProgramType.Vertex, this ); } this.shadowCasterVertexProgramUsage.SetProgramName( name ); } // needs recompilation this._parent.NotifyNeedsRecompile(); }
public void SetVertexProgram( string name, bool resetParams ) #endif { lock ( _gpuProgramChangeMutex ) { if ( VertexProgramName == name ) { return; } // turn off vertex programs when the name is set to null if ( string.IsNullOrEmpty( name ) ) { this._vertexProgramUsage.SafeDispose(); this._vertexProgramUsage = null; } else { // create a new usage object if ( !HasVertexProgram ) { this._vertexProgramUsage = new GpuProgramUsage( GpuProgramType.Vertex, this ); } this._vertexProgramUsage.SetProgramName( name, resetParams ); } // needs recompilation this._parent.NotifyNeedsRecompile(); //TODO //if( Pass::getHashFunction() == Pass::getBuiltinHashFunction( Pass::MIN_GPU_PROGRAM_CHANGE ) ) // _dirtyHash(); } }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="resetParams"></param> public void SetFragmentProgram( string name, bool resetParams ) { // turn off fragment programs when the name is set to null if ( name.Length == 0 ) { this._fragmentProgramUsage = null; } else { // create a new usage object if ( !HasFragmentProgram ) { this._fragmentProgramUsage = new GpuProgramUsage( GpuProgramType.Fragment, this ); } this._fragmentProgramUsage.SetProgramName( name, resetParams ); } // needs recompilation this._parent.NotifyNeedsRecompile(); }