public static RectNode Create(int x, int y, int width, int height) { var model = new RectModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", RectModel.strPosition); var builder = new RenderMethodBuilder(array, map); var node = new RectNode(x, y, width, height, model, builder); node.Initialize(); return(node); }
public static SkeletonNode Create(SkeletonModel model) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", SkeletonModel.strPosition); map.Add("inColor", SkeletonModel.strColor); map.Add("inBoneIndex", SkeletonModel.strBoneIndex); var builder = new RenderMethodBuilder(array, map, new LineWidthSwitch(6)); var node = new SkeletonNode(model, builder); node.Initialize(); return(node); }
/// <summary> /// Render propeller in modern opengl. /// </summary> /// <returns></returns> public static LogicOperationNode Create(Texture texture) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, TexturedCubeModel.strPosition); map.Add(inUV, TexturedCubeModel.strUV); var builder = new RenderMethodBuilder(provider, map); var node = new LogicOperationNode(new TexturedCubeModel(), TexturedCubeModel.strPosition, builder); node.texture = texture; node.Initialize(); return(node); }
public static DemoNode Create() { IShaderProgramProvider updateProvider, renderProvider; { var vs = new VertexShader(updateVert); var feedbackVaryings = new string[] { outPosition, outVelocity }; updateProvider = new ShaderArray(feedbackVaryings, ShaderProgram.BufferMode.Separate, vs); } { var vs = new VertexShader(renderVert); var fs = new FragmentShader(renderFrag); renderProvider = new ShaderArray(vs, fs); } RenderMethodBuilder updateBuilder, updateBuilder2, renderBuilder, renderBuilder2; { var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition); map.Add(inVelocity, DemoModel.inVelocity); updateBuilder = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition2); map.Add(inVelocity, DemoModel.inVelocity2); updateBuilder2 = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition); map.Add(inVelocity, DemoModel.inVelocity); renderBuilder = new RenderMethodBuilder(renderProvider, map); } { var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition2); map.Add(inVelocity, DemoModel.inVelocity2); renderBuilder2 = new RenderMethodBuilder(renderProvider, map); } var model = new DemoModel(); var node = new DemoNode(model, updateBuilder, updateBuilder2, renderBuilder, renderBuilder2); node.Initialize(); return(node); }
public static ParticlesNode Create(int groupCount) { var model = new ParticlesModel(groupCount * 128); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", ParticlesModel.strPosition); var builder = new RenderMethodBuilder(array, map, new BlendSwitch(BlendEquationMode.Add, BlendSrcFactor.One, BlendDestFactor.One)); var node = new ParticlesNode(model, builder); node.groupCount = groupCount; node.Initialize(); return(node); }
public static SmallQuadNode Create() { var model = new SmallQuadModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", SmallQuadModel.strPosition); map.Add("inColor", SmallQuadModel.strColor); var builder = new RenderMethodBuilder(array, map); var node = new SmallQuadNode(model, builder); node.Initialize(); return(node); }
public static OGLDevParticleNode Create(int particleCount) { IShaderProgramProvider updateProvider, renderProvider; { var vs = new VertexShader(updateVert); var feedbackVaryings = new string[] { outPosition, outVelocity }; updateProvider = new ShaderArray(feedbackVaryings, ShaderProgram.BufferMode.Separate, vs); } { var vs = new VertexShader(renderVert); var gs = new GeometryShader(renderGeom); var fs = new FragmentShader(renderFrag); renderProvider = new ShaderArray(vs, gs, fs); } RenderMethodBuilder updateBuilder, updateBuilder2, renderBuilder, renderBuilder2; var blend = new BlendState(BlendingSourceFactor.One, BlendingDestinationFactor.One); { var map = new AttributeMap(); map.Add(inPosition, OGLDevParticleModel.inPosition); map.Add(inVelocity, OGLDevParticleModel.inVelocity); updateBuilder = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(inPosition, OGLDevParticleModel.inPosition2); map.Add(inVelocity, OGLDevParticleModel.inVelocity2); updateBuilder2 = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(vposition, OGLDevParticleModel.inPosition); renderBuilder = new RenderMethodBuilder(renderProvider, map, blend); } { var map = new AttributeMap(); map.Add(vposition, OGLDevParticleModel.inPosition2); renderBuilder2 = new RenderMethodBuilder(renderProvider, map, blend); } var model = new OGLDevParticleModel(particleCount); var node = new OGLDevParticleNode(model, updateBuilder, updateBuilder2, renderBuilder, renderBuilder2); node.Initialize(); return(node); }
// this fragment shader is not needed. // private const string fragmentCode = // @"#version 330 core // //layout(location = 0) out float fragmentdepth; ////out vec4 out_Color; // //void main(void) { // fragmentdepth = gl_FragCoord.z; // //} //"; /// <summary> /// Render teapot to framebuffer in modern opengl. /// </summary> /// <returns></returns> public static DepthTeapotNode Create() { RenderMethodBuilder shadowmapBuilder; { var vs = new VertexShader(vertexCode, inPosition); var provider = new ShaderArray(vs); var map = new AttributeMap(); map.Add(inPosition, Teapot.strPosition); shadowmapBuilder = new RenderMethodBuilder(provider, map); } var model = new Teapot(); var node = new DepthTeapotNode(model, shadowmapBuilder); node.Initialize(); return(node); }
public static LayeredRectangleNode Create(Bitmap[] bitmaps) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, LayeredRectangleModel.strPosition); map.Add(inUV, LayeredRectangleModel.strUV); var builder = new RenderMethodBuilder(provider, map, new BlendSwitch(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha)); var node = new LayeredRectangleNode(new LayeredRectangleModel(), builder); node.bitmaps = bitmaps; node.Initialize(); return(node); }
public static PBRNode Create(IBufferSource model, vec3 size, string position, string texCoord, string normal) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("aPos", position); map.Add("aTexCoords", texCoord); map.Add("aNormal", normal); var builder = new RenderMethodBuilder(array, map); var node = new PBRNode(model, builder); node.ModelSize = size; node.Initialize(); return(node); }
public static RectangleNode Create(Texture texture) { var model = new RectangleModel(); var vertexShader = new VertexShader(vert); var fragmentShader = new FragmentShader(frag); var programProvider = new ShaderArray(vertexShader, fragmentShader); var map = new AttributeMap(); map.Add("inPosition", RectangleModel.strPositoin); map.Add("inUV", RectangleModel.strUV); var builder = new RenderMethodBuilder(programProvider, map, new BlendSwitch(BlendEquationMode.Add, BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha)); var node = new RectangleNode(model, builder); node.SetTexture(texture); node.Initialize(); return(node); }
public static CubemapViewerNode Create(Texture skybox) { var model = new CubemapViewerModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(reflectFragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", CubemapViewerModel.strPosition); var builder = new RenderMethodBuilder(provider, map); var node = new CubemapViewerNode(model, builder); node.skyboxTexture = skybox; node.Initialize(); return(node); }
public static BackgroundNode Create(Texture texEnvCubemap) { var model = new CubeModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("aPos", CubeModel.strPosition); var builder = new RenderMethodBuilder(array, map); var node = new BackgroundNode(model, builder); node.ModelSize = new vec3(2, 2, 2); node.texEnvCubemap = texEnvCubemap; node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <returns></returns> public static TerainNode Create() { var model = new TerainModel(); RenderMethodBuilder defaultBuilder; { var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); defaultBuilder = new RenderMethodBuilder(provider, map, new PolygonModeState(PolygonMode.Line)); } var node = new TerainNode(model, defaultBuilder); node.Initialize(); return(node); }
public static GrayFilterNode Create() { var model = new GrayFilterModel(); var vs = new VertexShader(renderVert, "a_vertex", "a_texCoord"); var fs = new FragmentShader(renderFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("a_vertex", GrayFilterModel.position); map.Add("a_texCoord", GrayFilterModel.texCoord); var builder = new RenderMethodBuilder(provider, map); var node = new GrayFilterNode(model, GrayFilterModel.position, builder); node.Initialize(); return(node); }
public static AttractorsNode Create(ParticlesNode attractorsSource) { var model = new Sphere(0.1f, 10, 40); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", Sphere.strPosition); map.Add("inColor", Sphere.strColor); var builder = new RenderMethodBuilder(array, map); var node = new AttractorsNode(model, builder); node.attractorsSource = attractorsSource; node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="totalBmp"></param> /// <returns></returns> public static SkyboxNode Create(Bitmap[] bitmaps) { var vs = new VertexShader(vertexCode, inPosition); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, Skybox.strPosition); var cullface = new CullFaceState(CullFaceMode.Back);// display back faces only. var builder = new RenderMethodBuilder(provider, map, cullface); var model = new Skybox(); var node = new SkyboxNode(model, Skybox.strPosition, bitmaps, builder); node.EnablePicking = TwoFlags.Children;// sky box should not take part in picking. node.Initialize(); return(node); }
public static FixedSizeQuadNode Create(int width, int height, Texture texture) { var model = new FixedSizeQuadModel(width, height); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", FixedSizeQuadModel.strPosition); map.Add("inUV", FixedSizeQuadModel.strUV); var builder = new RenderMethodBuilder(array, map); var node = new FixedSizeQuadNode(model, builder); node.texture = texture; node.Initialize(); return(node); }
public static BRDFNode Create(Texture texBRDF) { var model = new QuadModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("aPos", QuadModel.strPosition); map.Add("aTexCoords", QuadModel.strTexCoord); var builder = new RenderMethodBuilder(array, map); var node = new BRDFNode(model, builder); node.ModelSize = new vec3(2, 2, 2); node.texBRDF = texBRDF; node.Initialize(); return(node); }
public static ComputeShaderNode Create() { var list = new List <Config>(); list.Add(new Config(1, height, 0)); // fuzzy list.Add(new Config(1, height, 1)); // inverseColor list.Add(new Config(width / 8, height / 8, 2)); // mosaic RenderMethodBuilder fuzzy, inverseColor, mosaic, render; { var cs = new CSharpGL.ComputeShader(fuzzyComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); fuzzy = new RenderMethodBuilder(provider, map); } { var cs = new CSharpGL.ComputeShader(inverseColorComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); inverseColor = new RenderMethodBuilder(provider, map); } { var cs = new CSharpGL.ComputeShader(mosaicComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); mosaic = new RenderMethodBuilder(provider, map); } { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, RectangleModel.strPosition); map.Add(inUV, RectangleModel.strUV); render = new RenderMethodBuilder(provider, map); } var node = new ComputeShaderNode(list.ToArray(), new RectangleModel(), RectangleModel.strPosition, fuzzy, inverseColor, mosaic, render); node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <param name="position"></param> /// <param name="normal"></param> /// <param name="size"></param> /// <returns></returns> public static SpotLightNode Create(CSharpGL.SpotLight light, IBufferSource model, string position, string normal, vec3 size) { var vs = new VertexShader(spotLightVert); var fs = new FragmentShader(spotLightFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, position); map.Add(inNormal, normal); var builder = new RenderMethodBuilder(provider, map); var node = new SpotLightNode(model, position, builder); node.light = light; node.ModelSize = size; node.Children.Add(new LegacyBoundingBoxNode(size)); node.Initialize(); return node; }
/// <summary> /// /// </summary> /// <returns></returns> public static ClippedCubeNode Create(Texture texture) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", TexturedCubeModel.strPosition); map.Add("inUV", TexturedCubeModel.strUV); var builder = new RenderMethodBuilder(array, map); var model = new TexturedCubeModel(); var node = new ClippedCubeNode(model, builder); node.texture = texture; node.Initialize(); node.ModelSize = model.ModelSize; return(node); }
public static AnimationNode Create(AnimationModel model) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", AnimationModel.strPosition); map.Add("inNormal", AnimationModel.strNormal); map.Add("inTexCoord", AnimationModel.strTexCoord); map.Add("inBoneIDs", AnimationModel.strBoneIDs); map.Add("inWeights", AnimationModel.strWeights); var builder = new RenderMethodBuilder(array, map); var node = new AnimationNode(model, builder); node.Initialize(); return(node); }
public static SimplexNoiseNode Create() { var model = new Sphere(1, 180, 360); RenderMethodBuilder renderBuilder; { var vs = new VertexShader(renderVert); var fs = new FragmentShader(renderFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("in_Position", Sphere.strPosition); renderBuilder = new RenderMethodBuilder(provider, map); } var node = new SimplexNoiseNode(model, Sphere.strPosition, renderBuilder); node.ModelSize = model.Size; node.Initialize(); return(node); }
public static StencilTestNode Create() { var model = new StencilTestModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, StencilTestModel.strPosition); var polygonModeState = new PolygonModeState(PolygonMode.Line); var lineWidthState = new LineWidthState(10); var builder = new RenderMethodBuilder(provider, map, polygonModeState, lineWidthState); var node = new StencilTestNode(model, builder); node.polygonModeState = polygonModeState; node.lineWidthState = lineWidthState; node.Initialize(); return(node); }
public static RectGlassNode Create(float width, float height) { var model = new RectGlassModel(width, height); var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", RectGlassModel.strPosition); var blend = new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); var depthMask = new DepthMaskSwitch(false); var builder = new RenderMethodBuilder(array, map, blend, depthMask); var node = new RectGlassNode(model, builder); node.Blend = blend; node.ModelSize = new vec3(width, height, 0); node.Initialize(); return(node); }
public static NormalMappingNode Create() { var model = new NormalMappingModel(); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", NormalMappingModel.strPosition); map.Add("inTexCoord", NormalMappingModel.strTexCoord); map.Add("inNormal", NormalMappingModel.strNormal); map.Add("inTangent", NormalMappingModel.strTangent); var builder = new RenderMethodBuilder(array, map); var node = new NormalMappingNode(model, builder); node.ModelSize = new vec3(2, 2, 0.1f); node.Initialize(); return(node); }
public static BasicTessellationNode Create(ObjVNF model) { var vs = new VertexShader(renderVert, "Position_VS_in", "TexCoord_VS_in", "Normal_VS_in"); var tc = new TessControlShader(renderTesc); var te = new TessEvaluationShader(renderTese); var fs = new FragmentShader(renderFrag); var provider = new ShaderArray(vs, tc, te, fs); var map = new AttributeMap(); map.Add("Position_VS_in", ObjVNF.strPosition); map.Add("TexCoord_VS_in", ObjVNF.strTexCoord); map.Add("Normal_VS_in", ObjVNF.strNormal); var builder = new RenderMethodBuilder(provider, map); var node = new BasicTessellationNode(model, builder); node.ModelSize = model.GetSize(); node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <param name="position"></param> /// <param name="normal"></param> /// <param name="size"></param> /// <returns></returns> public static DirectionalLightNode Create(CSharpGL.DirectionalLight light, IBufferSource model, string position, string normal, vec3 size) { var vs = new VertexShader(directionalLightVert, vPosition, vNormal); var fs = new FragmentShader(directionalLightFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(vPosition, position); map.Add(vNormal, normal); var builder = new RenderUnitBuilder(provider, map); var node = new DirectionalLightNode(model, position, builder); node.Light = light; node.ModelSize = size; node.Children.Add(new LegacyBoundingBoxNode(size)); node.Initialize(); return(node); }
public static AccumulationNode Create() { var model = new Sphere(); RenderMethodBuilder renderBuilder; { var vs = new VertexShader(renderVert); var fs = new FragmentShader(renderFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", Sphere.strPosition); map.Add("inColor", Sphere.strColor); var blend = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha); renderBuilder = new RenderMethodBuilder(provider, map); } var node = new AccumulationNode(model, renderBuilder); node.ModelSize = model.Size; node.Initialize(); return(node); }