/// <summary> /// 根据<see cref="IndexBuffer"/>的具体类型获取一个<see cref="PickableRenderer"/> /// </summary> /// <param name="model"></param> /// <param name="attributeMap"></param> /// <param name="positionNameInIBufferable"></param> /// <param name="switches"></param> /// <returns></returns> public static InnerPickableRenderer GetRenderer( this IBufferable model, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) { if (model == null || attributeMap == null || string.IsNullOrEmpty(positionNameInIBufferable)) { throw new ArgumentNullException(); } AttributeMap map = null; foreach (AttributeMap.NamePair item in attributeMap) { if (item.NameInIBufferable == positionNameInIBufferable) { map = new AttributeMap(); map.Add(item.VarNameInShader, item.NameInIBufferable); break; } } if (map == null) { throw new Exception(string.Format("No matching variable name in shader for [{0}]", positionNameInIBufferable)); } if (model.UsesZeroIndexBuffer()) { return new ZeroIndexRenderer(model, PickingShaderHelper.GetShaderCodes(), map, positionNameInIBufferable, switches); } else { return new OneIndexRenderer(model, PickingShaderHelper.GetShaderCodes(), map, positionNameInIBufferable, switches); } }
private TrefoilKnotRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, positionNameInIBufferable, switches) { this.stateList.Add(new LineWidthState(3)); this.stateList.Add(new PointSizeState(3)); }
public OrderIndependentTransparencyRenderer(IBufferable model, vec3 lengths, string positionName, string normalName) { { var map = new AttributeMap(); map.Add("position", positionName); map.Add("normal", normalName); var build_lists = new ShaderCode[2]; build_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.vert"), ShaderType.VertexShader); build_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.frag"), ShaderType.FragmentShader); this.buildListsRenderer = new PickableRenderer(model, build_lists, map, positionName); } { var map = new AttributeMap(); map.Add("position", positionName); var resolve_lists = new ShaderCode[2]; resolve_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.vert"), ShaderType.VertexShader); resolve_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.frag"), ShaderType.FragmentShader); this.resolve_lists = new PickableRenderer(model, resolve_lists, map, positionName); } { this.depthTestState = new DepthTestState(false); this.cullFaceState = new CullFaceState(false); } this.ModelSize = lengths; }
public void AmericanCityGeneratorWithAttributeMap() { IAmericanCityGenerator americancitygenerator = new AmericanCityGenerator(); AttributeMap attmap = new AttributeMap { GeneratorDefaultValue = "Boston" }; string city = americancitygenerator.Generate(random, attmap); Assert.AreEqual("Boston", city); }
/// <summary> /// Create a label renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static LabelRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } var model = new TextModel(maxCharCount); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", TextModel.strPosition); map.Add("in_UV", TextModel.strUV); var blendState = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.One); var renderer = new LabelRenderer(model, shaderCodes, map, blendState); renderer.blendState = blendState; renderer.fontTexture = fontTexture; renderer.LabelHeight = labelHeight; return renderer; }
private BillboardRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { this.Width = 1.0f; this.Height = 0.125f; this.Percentage = new vec2(0.2f, 0.05f); this.PixelSize = new ivec2(100, 10); }
private UniformArrayRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { var groundRenderer = GroundRenderer.Create(new GroundModel(20)); groundRenderer.Scale = new vec3(10, 10, 10); this.groundRenderer = groundRenderer; }
public void AmericanAddressGeneratorWithAttributeMap() { IAmericanAddressGenerator americanaddressgenerator = new AmericanAddressGenerator(); AttributeMap attmap = new AttributeMap { GeneratorDefaultValue = "123 Main" }; string address = americanaddressgenerator.Generate(random, attmap); Assert.IsNotNull(address); Assert.AreEqual("123 Main", address); }
private HemisphereLightingRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, positionNameInIBufferable, switches) { this.LightPosition = new vec3(0, 2, 0); this.SkyColor = new vec3(1, 0, 0); this.GroundColor = new vec3(0, 1, 0); }
public static SimpleComputeRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\SimpleComputeRenderer\compute.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\SimpleComputeRenderer\compute.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("position", SimpleCompute.strPosition); return new SimpleComputeRenderer(new SimpleCompute(), shaderCodes, map); }
/// <summary> /// 支持"拾取"的渲染器 /// </summary> /// <param name="model">一种渲染方式</param> /// <param name="shaderCodes">各种类型的shader代码</param> /// <param name="attributeMap">关联<paramref name="model"/>和<paramref name="shaderCodes"/>中的属性</param> /// <param name="positionNameInIBufferable">描述顶点位置信息的buffer的名字</param> ///<param name="switches"></param> public PickableRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { var innerPickableRenderer = InnerPickableRendererFactory.GetRenderer( model, attributeMap, positionNameInIBufferable); this.innerPickableRenderer = innerPickableRenderer; }
public static GroundRenderer Create(GroundModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\Ground.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\Ground.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", GroundModel.strPosition); var renderer = new GroundRenderer(model, shaderCodes, map); return renderer; }
public static ZeroAttributeRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\ZeroAttributeRenderer\ZeroAttribute.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\ZeroAttributeRenderer\ZeroAttribute.frag"), ShaderType.FragmentShader); var map = new AttributeMap();// no items in this map. var model = new ZeroAttributeModel(DrawMode.TriangleStrip, 0, 4); var renderer = new ZeroAttributeRenderer(model, shaderCodes, map, new PointSpriteState()); renderer.ModelSize = new vec3(2.05f, 2.05f, 0.01f); return renderer; }
public static QuadStripRenderer Create(QuadStripModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripTexture.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripTexture.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", QuadStripModel.position); map.Add("in_TexCoord", QuadStripModel.texCoord); var renderer = new QuadStripRenderer(model, shaderCodes, map); return renderer; }
private DirectonalLightRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, positionNameInIBufferable, switches) { this.AmbientLightColor = new vec3(0.2f); this.DirectionalLightDirection = new vec3(1); this.DirectionalLightColor = new vec3(1); //this.HalfVector = new vec3(1); this.Shininess = 10.0f; this.Strength = 1.0f; }
public static KleinBottleRenderer Create(KleinBottleModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\KleinBottleRenderer\KleinBottle.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\KleinBottleRenderer\KleinBottle.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", KleinBottleModel.strPosition); map.Add("in_TexCoord", KleinBottleModel.strTexCoord); var renderer = new KleinBottleRenderer(model, shaderCodes, map, KleinBottleModel.strPosition); renderer.ModelSize = model.Lengths; return renderer; }
public static ShaderToyRenderer Create() { var model = new Cube(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\ShaderToy.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\ShaderToy.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", Cube.strPosition); var renderer = new ShaderToyRenderer(model, shaderCodes, map); renderer.ModelSize = model.Lengths; return renderer; }
public static SimplexNoiseRenderer Create() { var model = new Sphere(1, 180, 360); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\SimplexNoise.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\SimplexNoise.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", Sphere.strPosition); var renderer = new SimplexNoiseRenderer(model, shaderCodes, map, Sphere.strPosition); renderer.ModelSize = model.Lengths; return renderer; }
public static QuadStripColoredRenderer Create(QuadStripColoredModel model) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripColor.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\QuadStripColor.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", QuadStripColoredModel.position); map.Add("in_Color", QuadStripColoredModel.color); var renderer = new QuadStripColoredRenderer(model, shaderCodes, map); renderer.quadCount = model.quadCount; return renderer; }
public static PointSpriteRenderer Create(int particleCount) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\PointSprite.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\PointSprite.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("position", PointSpriteModel.strposition); var model = new PointSpriteModel(particleCount); var renderer = new PointSpriteRenderer(model, shaderCodes, map, new PointSpriteState()); renderer.ModelSize = model.Lengths; return renderer; }
public static CatesianGridRenderer Create(vec3 originalWorldPosition, CatesianGrid grid, Texture codedColorSampler) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\HexahedronGrid.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\HexahedronGrid.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", CatesianGrid.strPosition); map.Add("in_uv", CatesianGrid.strColor); var renderer = new CatesianGridRenderer(originalWorldPosition, grid, shaderCodes, map, codedColorSampler); renderer.ModelSize = (grid.DataSource.SourceActiveBounds.MaxPosition - grid.DataSource.SourceActiveBounds.MinPosition).Abs(); renderer.WorldPosition = -grid.DataSource.Position; return renderer; }
internal static LightRenderer Create(Teapot model, vec3 lengths, string positionNameInIBufferable) { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(System.IO.File.ReadAllText(@"shaders\LightRenderer\Light.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(System.IO.File.ReadAllText(@"shaders\LightRenderer\Light.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", Teapot.strPosition); map.Add("in_Normal", Teapot.strNormal); //map.Add("in_Color", Teapot.strColor); var renderer = new LightRenderer(model, shaderCodes, map, positionNameInIBufferable); renderer.Lengths = lengths; return renderer; }
public static GreyFilterRenderer Create() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\GreyFilterRenderer\GreyFilter.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\GreyFilterRenderer\GreyFilter.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("a_vertex", GreyFilterModel.strPosition); map.Add("a_texCoord", GreyFilterModel.strTexCoord); var model = new GreyFilterModel(); var renderer = new GreyFilterRenderer(model, shaderCodes, map, new PointSpriteState()); renderer.ModelSize = model.Lengths; return renderer; }
public static HemisphereLightingRenderer Create() { var model = new Teapot(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\HemisphereLighting\HemisphereLighting.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\HemisphereLighting\HemisphereLighting.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("inPosition", Teapot.strPosition); map.Add("inNormal", Teapot.strNormal); var renderer = new HemisphereLightingRenderer(model, shaderCodes, map, Teapot.strPosition); renderer.ModelSize = model.Size; return renderer; }
public static UniformArrayRenderer Create() { var model = new Teapot(); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\UniformArrayRenderer\UniformArray.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\UniformArrayRenderer\UniformArray.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("vPos", Teapot.strPosition); map.Add("vColor", Teapot.strColor); var renderer = new UniformArrayRenderer(model, shaderCodes, map); renderer.ModelSize = model.Size; return renderer; }
private Renderer InitRaycastRenderer() { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\RaycastVolumeRenderer\raycasting.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\RaycastVolumeRenderer\raycasting.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("position", RaycastModel.strposition); map.Add("boundingBox", RaycastModel.strcolor); var raycastRenderer = new Renderer(model, shaderCodes, map); raycastRenderer.Initialize(); raycastRenderer.StateList.Add(new CullFaceState(CullFaceMode.Back, true)); return raycastRenderer; }
public static InnerImageProcessingRenderer Create(string textureFilename = @"Textures\edgeDetection.bmp") { var model = new ImageProcessingModel(); ShaderCode[] simpleShader = new ShaderCode[2]; simpleShader[0] = new ShaderCode(File.ReadAllText(@"shaders\ImageProcessingRenderer\ImageProcessing.vert"), ShaderType.VertexShader); simpleShader[1] = new ShaderCode(File.ReadAllText(@"shaders\ImageProcessingRenderer\ImageProcessing.frag"), ShaderType.FragmentShader); var propertyNameMap = new AttributeMap(); propertyNameMap.Add("vert", "position"); propertyNameMap.Add("uv", "uv"); var renderer = new InnerImageProcessingRenderer( model, simpleShader, propertyNameMap, ImageProcessingModel.strposition); renderer.textureFilename = textureFilename; return renderer; }
private PointLightRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, positionNameInIBufferable, switches) { this.Ambient = new vec3(0.2f); this.LightPosition = new vec3(400); this.LightColor = new vec3(1); //this.HalfVector = new vec3(1); this.Shininess = 10.0f; this.Strength = 1.0f; this.ConstantAttenuation = 0.2f; this.LinearAttenuation = 0.0f; this.QuadraticAttenuation = 0.0f; }
/// <summary> /// Gets a renderer that renders a bitmap in a square. /// </summary> /// <param name="bitmapFilename"></param> /// <returns></returns> public static TextureRenderer Create(string bitmapFilename = "") { var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.SquareRenderer.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.SquareRenderer.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", Square.strPosition); map.Add("in_TexCoord", Square.strTexCoord); var model = new Square(); var renderer = new TextureRenderer(model, shaderCodes, map, Square.strPosition); renderer.bitmapFilename = bitmapFilename; return renderer; }
public static WaterRenderer Create(int waterPlaneLength) { var model = new WaterPlaneModel(waterPlaneLength); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\water\Water.vert.glsl"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\water\Water.frag.glsl"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("a_vertex", WaterPlaneModel.strPosition); var renderer = new WaterRenderer(model, shaderCodes, map, new FrontFaceState(FrontFaceMode.CCW)); renderer.waterTextureRenderer = WaterTextureRenderer.Create(waterPlaneLength); renderer.backgroundRenderer = WaterBackgroundRenderer.Create(waterPlaneLength); renderer.ModelSize = new vec3(waterPlaneLength + 1, waterPlaneLength + 1, waterPlaneLength + 1); renderer.waterPlaneLength = waterPlaneLength; return renderer; }
public static CubeNode Create() { // vertex buffer and index buffer. var model = new CubeModel(); // vertex shader and fragment shader. var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", CubeModel.strPosition); map.Add("inColor", CubeModel.strColor); // build a render method. var builder = new RenderMethodBuilder(array, map); // create node. var node = new CubeNode(model, builder); // initialize node. node.Initialize(); return(node); }
public static CubeNode Create() { // model provides vertex buffer and index buffer(within an IDrawCommand). var model = new CubeModel(); // vertex shader and fragment shader. var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var gs = new GeometryShader(geometryCode); var array = new ShaderArray(vs, fs, gs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", CubeModel.strPosition); // help to build a render method. var builder = new RenderMethodBuilder(array, map); // create node. var node = new CubeNode(model, builder); // initialize node. node.Initialize(); return(node); }
public static StaticSlicesNode Create(int sliceCount, Texture texture1D, Texture texture3D) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", StaticSlicesModel.strPosition); map.Add("inTexCoord", StaticSlicesModel.strTexCoord); //var depthTestSwitch = new DepthTestSwitch(false); //var polygonModeSwitch = new PolygonModeSwitch(PolygonMode.Line); var blendSwitch = new BlendSwitch(BlendEquationMode.Add, BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); var builder = new RenderMethodBuilder(array, map, blendSwitch); var model = new StaticSlicesModel(sliceCount); var node = new StaticSlicesNode(model, builder); node.texture1D = texture1D; node.texture3D = texture3D; node.Initialize(); return(node); }
protected override MemberHandlerResult TryMap(MemberState s, ref MemberMainSettingsValue main, MemberInfo member, RuntimeTypeModel model) { if (s.Input.IsEnumValueMember) { return(MemberHandlerResult.NotFound); } if (!s.Input.CanUse(AttributeType.Xml)) { return(MemberHandlerResult.NotFound); } if (AttributeMap.GetAttribute(s.Input.Attributes, "System.Xml.Serialization.XmlIgnoreAttribute") != null) { return(MemberHandlerResult.Ignore); } if (!s.Input.HasFamily(MetaType.AttributeFamily.XmlSerializer)) { return(MemberHandlerResult.NotFound); } var attrib = AttributeMap.GetAttribute(s.Input.Attributes, "System.Xml.Serialization.XmlElementAttribute") ?? AttributeMap.GetAttribute(s.Input.Attributes, "System.Xml.Serialization.XmlArrayAttribute"); if (attrib == null) { return(MemberHandlerResult.NotFound); } if (main.Tag <= 0) { attrib.TryGetNotDefault("Order", ref main.Tag); } if (string.IsNullOrEmpty(main.Name)) { attrib.TryGetNotEmpty("ElementName", ref main.Name); } return(main.Tag >= s.MinAcceptFieldNumber ? MemberHandlerResult.Done : MemberHandlerResult.Partial); }
public static ShadowVolumeNode Create(IBufferSource model, string position, string normal, vec3 size) { RenderMethodBuilder ambientBuilder, extrudeBuilder, underLightBuilder; { var vs = new VertexShader(ambientVert); var fs = new FragmentShader(ambientFrag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", position); ambientBuilder = new RenderMethodBuilder(array, map); } { var vs = new VertexShader(extrudeVert); var gs = new GeometryShader(extrudeGeom); var fs = new FragmentShader(extrudeFrag); var array = new ShaderArray(vs, gs, fs); var map = new AttributeMap(); map.Add("inPosition", position); extrudeBuilder = new RenderMethodBuilder(array, map); } { var vs = new VertexShader(blinnPhongVert); var fs = new FragmentShader(blinnPhongFrag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", position); map.Add("inNormal", normal); underLightBuilder = new RenderMethodBuilder(array, map); } var node = new ShadowVolumeNode(model, ambientBuilder, extrudeBuilder, underLightBuilder); node.Initialize(); node.ModelSize = size; return(node); }
public static NormalMappingNode Create(IBufferSource model, vec3 size, string position, string texCoord, string normal, string tangent) { //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); map.Add("inPosition", position); map.Add("inTexCoord", texCoord); map.Add("inNormal", normal); map.Add("inTangent", tangent); var builder = new RenderMethodBuilder(array, map); var node = new NormalMappingNode(model, builder); node.ModelSize = size; node.Initialize(); return(node); }
/// <summary> /// Read using value collection /// </summary> /// <param name="session"></param> /// <param name="requestHeader"></param> /// <param name="readValueCollection"></param> /// <param name="operations"></param> /// <param name="skipAttributeIdInvalid"></param> /// <param name="traceOnly"></param> /// <returns></returns> internal async Task ReadAsync(Session session, RequestHeader requestHeader, ReadValueIdCollection readValueCollection, List <OperationResultModel> operations, bool skipAttributeIdInvalid, bool traceOnly) { var readResponse = await session.ReadAsync(requestHeader, 0, TimestampsToReturn.Both, readValueCollection); OperationResultEx.Validate("Read_" + LocalId, operations, readResponse.Results .Select(v => skipAttributeIdInvalid && v.StatusCode == StatusCodes.BadAttributeIdInvalid ? StatusCodes.Good : v.StatusCode), readResponse.DiagnosticInfos, readValueCollection .Select(v => AttributeMap.GetBrowseName(v.AttributeId)), traceOnly); for (var i = 0; i < readValueCollection.Count; i++) { var attributeId = readValueCollection[i].AttributeId; if (readResponse.Results[i].StatusCode != StatusCodes.BadAttributeIdInvalid) { _attributes[attributeId] = readResponse.Results[i]; } } }
public static DemoNode Create() { RenderMethodBuilder updateBuilder, updateBuilder2; { var vs = new VertexShader(updateVert); var feedbackVaryings = new string[] { outPosition, }; IShaderProgramProvider updateProvider = new ShaderArray(feedbackVaryings, ShaderProgram.BufferMode.Separate, vs); var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition); var map2 = new AttributeMap(); map2.Add(inPosition, DemoModel.inPosition2); updateBuilder = new RenderMethodBuilder(updateProvider, map); updateBuilder2 = new RenderMethodBuilder(updateProvider, map2); } RenderMethodBuilder renderBuilder, renderBuilder2; { IShaderProgramProvider renderProvider; var vs = new VertexShader(renderVert); var fs = new FragmentShader(renderFrag); renderProvider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, DemoModel.inPosition); var map2 = new AttributeMap(); map2.Add(inPosition, DemoModel.inPosition2); renderBuilder = new RenderMethodBuilder(renderProvider, map); renderBuilder2 = new RenderMethodBuilder(renderProvider, map2); } var model = new DemoModel(); var node = new DemoNode(model, updateBuilder, updateBuilder2, renderBuilder, renderBuilder2); node.Initialize(); return(node); }
public static SphereNode Create(Texture texture) { // vertex buffer and index buffer. var model = new Sphere(1, 20, 40); // vertex shader and fragment shader. var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", Sphere.strPosition); map.Add("inTexCoord", Sphere.strUV); // build a render method. var builder = new RenderMethodBuilder(array, map); // create node. var node = new SphereNode(model, builder); node.SetTexture(texture); // initialize node. 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 NormalNode Create(IBufferSource model, string position, string texCoord, string normal, vec3 size) { var builders = new RenderMethodBuilder[2]; { // render model var vs = new VertexShader(vertexShader); var fs = new FragmentShader(fragmentShader); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(vPosition, position); map.Add(vTexCoord, texCoord); map.Add(vNormal, normal); builders[0] = new RenderMethodBuilder(provider, map); } { // render normal var vs = new VertexShader(normalVertex); var gs = new GeometryShader(normalGeometry); var fs = new FragmentShader(normalFragment); var provider = new ShaderArray(vs, gs, fs); var map = new AttributeMap(); map.Add(vPosition, position); map.Add(vNormal, normal); builders[1] = new RenderMethodBuilder(provider, map); } var node = new NormalNode(model, position, texCoord, builders); string folder = System.Windows.Forms.Application.StartupPath; node.TextureSource = new TextureSource(System.IO.Path.Combine(folder, @"superficie.png")); node.ModelSize = size; node.Initialize(); return(node); }
/// <summary> /// Create a text renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static TextRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } // FontResource.Default; } var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources.TextModel.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("position", TextModel.strPosition); map.Add("uv", TextModel.strUV); var model = new TextModel(maxCharCount); var renderer = new TextRenderer(model, shaderCodes, map); renderer.fontTexture = fontTexture; return(renderer); }
protected virtual bool HasAqlaIgnore(AttributeMap[] map, RuntimeTypeModel model) { return(AttributeMap.GetAttributes(map, "AqlaSerializer.NonSerializableMemberAttribute").Any(a => CheckAqlaModelId(a, model))); }
public BuildInRenderer(vec3 lengths, IBufferable model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, switches) { this.ModelSize = lengths; }
private GroundRenderer(IBufferable model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, switches) { this.LineColor = Color.White; }
/// <summary> /// renders well pipeline(several cylinders) /// </summary> /// <param name="model"></param> /// <param name="shaderCodes"></param> /// <param name="attributeMap"></param> /// <param name="switches"></param> private WellRenderer(WellModel model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLSwitch[] switches) : base(model, shaderCodes, attributeMap, switches) { }
public MemberHandlerResult TryRead(AttributeMap attribute, MemberState s, MemberInfo member, RuntimeTypeModel model) { if (s.Input.IsEnumValueMember) { return(MemberHandlerResult.NotFound); } var main = s.MainValue; try { MemberLevelSettingsValue level = s.SerializationSettings.GetSettingsCopy(0).Basic; level.DefaultsMode = MemberDefaultsMode.Legacy; if (main.Tag <= 0) { attribute.TryGetNotDefault("Tag", ref main.Tag); } if (string.IsNullOrEmpty(main.Name)) { attribute.TryGetNotEmpty("Name", ref main.Name); } if (!main.IsRequiredInSchema) { attribute.TryGetNotDefault("IsRequired", ref main.IsRequiredInSchema); } var type = Helpers.GetMemberType(member); BinaryDataFormat dataFormat = 0; attribute.TryGetNotDefault("DataFormat", ref dataFormat); level.ContentBinaryFormatHint = dataFormat; bool isPacked = false; attribute.TryGetNotDefault("IsPacked", ref isPacked); level.Collection.Format = isPacked ? CollectionFormat.Protobuf : (model.ProtoCompatibility.SuppressCollectionEnhancedFormat ? CollectionFormat.ProtobufNotPacked : CollectionFormat.NotSpecified ); bool overwriteList = false; attribute.TryGetNotDefault("OverwriteList", ref overwriteList); level.Collection.Append = !overwriteList; if (!level.WriteAsDynamicType.GetValueOrDefault()) { attribute.TryGetNotDefault("DynamicType", ref level.WriteAsDynamicType); } bool dynamicType = level.WriteAsDynamicType.GetValueOrDefault(); bool asRefHasValue = false; bool notAsReference = false; #if !FEAT_IKVM // IKVM can't access AsReferenceHasValue, but conveniently, AsReference will only be returned if set via ctor or property attribute.TryGetNotDefault("AsReferenceHasValue", ref asRefHasValue, publicOnly: false); if (asRefHasValue) #endif { bool value = false; asRefHasValue = attribute.TryGetNotDefault("AsReference", ref value); if (asRefHasValue) // if AsReference = true - use defaults { notAsReference = !value; } } if (!asRefHasValue) { if (level.Format == ValueFormat.NotSpecified) { SetLegacyFormat(ref level, member, model); } } else { level.Format = notAsReference ? ValueSerializerBuilder.GetDefaultLegacyFormat(type, model) : ValueFormat.Reference; } s.TagIsPinned = main.Tag > 0; var dl = s.SerializationSettings.DefaultLevel.GetValueOrDefault(new ValueSerializationSettings.LevelValue(level.MakeDefaultNestedLevelForLegacyMember())); if (isPacked) { dl.Basic.Format = ValueFormat.Compact; } if (dynamicType) { // apply dynamic type to items Type itemType = null; Type defaultType = null; MetaType.ResolveListTypes(model, Helpers.GetMemberType(s.Member), ref itemType, ref defaultType); if (itemType != null) { dl.Basic.WriteAsDynamicType = true; dl.Basic.Format = ValueFormat.Reference; if (level.Format == ValueFormat.Compact || level.Format == ValueFormat.MinimalEnhancement) { level.WriteAsDynamicType = false; } } } s.SerializationSettings.DefaultLevel = dl; s.SerializationSettings.SetSettings(level, 0); return(s.TagIsPinned ? MemberHandlerResult.Done : MemberHandlerResult.Partial); // note minAcceptFieldNumber only applies to non-proto } finally { s.MainValue = main; } }
private LinesRenderer(IBufferable model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, switches) { }
protected virtual bool HasProtobufNetIgnore(AttributeMap[] map, RuntimeTypeModel model) { return(AttributeMap.GetAttribute(map, "ProtoBuf.ProtoIgnoreAttribute") != null); }
private void AnalyzeSignature() { var assembly = ParentType.Assembly; // Analyze the return parameter. returnParam = WrapReturnParameter( Definition.MethodReturnType, assembly, this); // Analyze the parameter list. formalParams = Definition.Parameters .Select(param => WrapParameter(param, assembly, this)) .ToArray(); // Analyze the method definition's attributes. var attrBuilder = new AttributeMapBuilder(); if (Definition.IsAbstract || Definition.DeclaringType.IsInterface) { attrBuilder.Add(FlagAttribute.Abstract); attrBuilder.Add(FlagAttribute.Virtual); } else if (Definition.IsVirtual) { attrBuilder.Add(FlagAttribute.Virtual); } if (Definition.IsPInvokeImpl) { if (Definition.HasPInvokeInfo) { attrBuilder.Add(new ExternAttribute(Definition.PInvokeInfo.EntryPoint)); } else { attrBuilder.Add(new ExternAttribute()); } } else if (Definition.IsInternalCall) { attrBuilder.Add(FlagAttribute.InternalCall); } // The default 'object' constructor is a nop. Taking that // into account can significantly improve constructor inlining // results. var declaringType = Definition.DeclaringType; if (declaringType.Namespace == "System" && declaringType.Name == "Object" && Definition.IsConstructor && Definition.Parameters.Count == 0) { attrBuilder.Add(new ExceptionSpecificationAttribute(ExceptionSpecification.NoThrow)); attrBuilder.Add(new MemorySpecificationAttribute(MemorySpecification.Nothing)); } // Analyze access modifier. attrBuilder.Add(AccessModifierAttribute.Create(AnalyzeAccessModifier())); // TODO: analyze more attributes. attributeMap = new AttributeMap(attrBuilder); }
public IActionResult EditEntityMap(EditEntityMapModel model) { if (ModelState.IsValid) { //原单据头 var headEntityMap = _entityMapFinder.FindById(model.EntityMapId.Value); //原单据体 var childEntityMap = _entityMapFinder.FindByParentId(headEntityMap.EntityMapId); //单据头 if (model.HeadAttributeMap.NotEmpty()) { headEntityMap.MapType = model.MapType; var headAttributeMap = new List <AttributeMap>(); foreach (var item in model.HeadAttributeMap) { if (!item.SourceAttributeId.Equals(Guid.Empty)) { var attrMapTable = new AttributeMap { AttributeMapId = Guid.NewGuid(), CanChange = item.CanChange, EntityMapId = headEntityMap.EntityMapId, TargetAttributeId = item.TargetAttributeId, SourceAttributeId = item.SourceAttributeId }; headAttributeMap.Add(attrMapTable); } } if (headAttributeMap.IsEmpty()) { return(JError(T["entitymap_emptyheadattributemap"])); } //删除原有的 _entityMapDeleter.DeleteById(headEntityMap.EntityMapId); _entityMapCreater.Create(headEntityMap); _attributeMapCreater.CreateMany(headAttributeMap); //单据体 if (model.ChildAttributeMap.NotEmpty() && !model.ChildSourceEntityId.Equals(Guid.Empty) && !model.ChildTargetEntityId.Equals(Guid.Empty)) { childEntityMap = childEntityMap ?? new EntityMap(); childEntityMap.EntityMapId = childEntityMap != null ? childEntityMap.EntityMapId : Guid.NewGuid(); childEntityMap.ComponentState = childEntityMap != null ? childEntityMap.ComponentState : 0; childEntityMap.SolutionId = childEntityMap != null ? childEntityMap.SolutionId : SolutionId.Value; childEntityMap.OrganizationId = CurrentUser.OrganizationId; childEntityMap.CreatedBy = CurrentUser.SystemUserId; childEntityMap.CreatedOn = DateTime.Now; childEntityMap.SourceEntityId = childEntityMap != null ? childEntityMap.SourceEntityId : model.ChildSourceEntityId; childEntityMap.TargetEntityId = childEntityMap != null ? childEntityMap.TargetEntityId : model.ChildTargetEntityId; childEntityMap.RelationShipName = childEntityMap != null ? childEntityMap.RelationShipName : model.ChildRelationShipName; childEntityMap.ParentEntityMapId = headEntityMap.EntityMapId; childEntityMap.StateCode = childEntityMap != null ? childEntityMap.StateCode : RecordState.Enabled; var childAttributeMap = new List <AttributeMap>(); foreach (var item in model.ChildAttributeMap) { if (!item.SourceAttributeId.Equals(Guid.Empty)) { var attrMapTable = new AttributeMap { AttributeMapId = Guid.NewGuid(), CanChange = item.CanChange, EntityMapId = childEntityMap.EntityMapId, TargetAttributeId = item.TargetAttributeId, SourceAttributeId = item.SourceAttributeId }; childAttributeMap.Add(attrMapTable); } } if (childAttributeMap.IsEmpty()) { return(JError(T["entitymap_emptychildattributemap"])); } //删除原有的 if (childEntityMap != null) { _entityMapDeleter.DeleteById(childEntityMap.EntityMapId); } _entityMapCreater.Create(childEntityMap); _attributeMapCreater.CreateMany(childAttributeMap); } } return(UpdateSuccess()); } return(UpdateFailure(GetModelErrors())); }
public IActionResult CreateEntityMap(EditEntityMapModel model) { if (ModelState.IsValid) { //已存在的单据头映射 var headEntityMap = _entityMapFinder.Find(model.SourceEntityId, model.EntityId); if (headEntityMap != null) { return(JError(T["entitymap_duplicated"])); } //已存在的单据体映射 if (model.ChildAttributeMap.NotEmpty() && !model.ChildSourceEntityId.Equals(Guid.Empty) && !model.ChildTargetEntityId.Equals(Guid.Empty)) { var childEntityMap = _entityMapFinder.Find(model.ChildSourceEntityId, model.ChildTargetEntityId); if (childEntityMap != null) { return(JError(T["entitymap_duplicated"])); } } var id = Guid.NewGuid(); //单据头 if (model.HeadAttributeMap.NotEmpty()) { var entMapTable = new EntityMap { ComponentState = 0, SolutionId = SolutionId.Value, OrganizationId = CurrentUser.OrganizationId, CreatedBy = CurrentUser.SystemUserId, CreatedOn = DateTime.Now, EntityMapId = id, SourceEntityId = model.SourceEntityId, TargetEntityId = model.EntityId, RelationShipName = model.RelationShipName, MapType = model.MapType, StateCode = RecordState.Enabled }; var headAttributeMap = new List <AttributeMap>(); foreach (var item in model.HeadAttributeMap) { if (!item.SourceAttributeId.Equals(Guid.Empty)) { var attributeMap = new AttributeMap { AttributeMapId = Guid.NewGuid(), CanChange = item.CanChange, EntityMapId = entMapTable.EntityMapId, TargetAttributeId = item.TargetAttributeId, SourceAttributeId = item.SourceAttributeId }; if (model.HeadControlAttributeMap.NotEmpty()) { var controlAttrMap = model.HeadControlAttributeMap.Find(n => n.SourceAttributeId == item.SourceAttributeId); if (controlAttrMap != null) { attributeMap.RemainAttributeId = controlAttrMap.RemainAttributeId; attributeMap.ClosedAttributeId = controlAttrMap.ClosedAttributeId; } } headAttributeMap.Add(attributeMap); } } if (headAttributeMap.IsEmpty()) { return(JError(T["entitymap_emptyheadattributemap"])); } _entityMapCreater.Create(entMapTable); _attributeMapCreater.CreateMany(headAttributeMap); //单据体 if (model.ChildAttributeMap.NotEmpty() && !model.ChildSourceEntityId.Equals(Guid.Empty) && !model.ChildTargetEntityId.Equals(Guid.Empty)) { var childEntityMap = new EntityMap { ComponentState = 0, SolutionId = SolutionId.Value, OrganizationId = CurrentUser.OrganizationId, CreatedBy = CurrentUser.SystemUserId, CreatedOn = DateTime.Now, EntityMapId = Guid.NewGuid(), SourceEntityId = model.ChildSourceEntityId, TargetEntityId = model.ChildTargetEntityId, RelationShipName = model.ChildRelationShipName, ParentEntityMapId = entMapTable.EntityMapId, MapType = model.MapType, StateCode = RecordState.Enabled }; var childAttributeMap = new List <AttributeMap>(); foreach (var item in model.ChildAttributeMap) { if (!item.SourceAttributeId.Equals(Guid.Empty)) { var attributeMap = new AttributeMap { AttributeMapId = Guid.NewGuid(), CanChange = item.CanChange, EntityMapId = childEntityMap.EntityMapId, TargetAttributeId = item.TargetAttributeId, SourceAttributeId = item.SourceAttributeId }; if (model.ChildControlAttributeMap.NotEmpty()) { var controlAttrMap = model.ChildControlAttributeMap.Find(n => n.SourceAttributeId == item.SourceAttributeId); if (controlAttrMap != null) { attributeMap.RemainAttributeId = controlAttrMap.RemainAttributeId; attributeMap.ClosedAttributeId = controlAttrMap.ClosedAttributeId; } } childAttributeMap.Add(attributeMap); } } if (childAttributeMap.IsEmpty()) { return(JError(T["entitymap_emptychildattributemap"])); } _entityMapCreater.Create(childEntityMap); _attributeMapCreater.CreateMany(childAttributeMap); } } return(CreateSuccess(new { id = id })); } return(CreateFailure(GetModelErrors())); }
public PointSpriteRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { }
public BuildInRenderer(vec3 lengths, IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderCodes, attributeMap, switches) { this.ModelSize = lengths; }
public bool Create(AttributeMap entity) { var flag = _attributeMapRepository.Create(entity); return(flag); }
private KleinBottleRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderCodes, attributeMap, positionNameInIBufferable, switches) { this.stateList.Add(new LineWidthState(3)); }
private EmitNormalLineRenderer(IBufferable model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, string positionNameInIBufferable, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, positionNameInIBufferable, switches) { }
protected override void OnMapResized() { AttributeMap.Resize(MapSize); }
private void AnalyzeAttributes() { var attrBuilder = new AttributeMapBuilder(); // Handle low-hanging fruit first. if (!Definition.IsValueType) { attrBuilder.Add(FlagAttribute.ReferenceType); } if (Definition.IsAbstract) { attrBuilder.Add(FlagAttribute.Abstract); } if (!Definition.IsSealed) { attrBuilder.Add(FlagAttribute.Virtual); } // If we're dealing with an integer type, then we want to // assign that type an integer spec. IntegerSpec iSpec; if (Definition.Namespace == "System" && integerSpecMap.TryGetValue(Definition.Name, out iSpec)) { attrBuilder.Add(IntegerSpecAttribute.Create(iSpec)); } // If we are presented an enum type, then we need to look // up its 'value__' field, which specifies its enum type. if (Definition.IsEnum) { // The 'value__' field has some very particular properties: // it has both the "runtime special name" and "special name" // attributes. var valueField = Definition.Fields.FirstOrDefault( field => field.Name == "value__" && field.IsRuntimeSpecialName && field.IsSpecialName); // Make sure that we didn't encounter a "fake" enum. if (valueField != null) { // Resolve the enum's element type. This should always be an // integer type. var enumElementType = Assembly.Resolve(valueField.FieldType); var enumIntSpec = enumElementType.GetIntegerSpecOrNull(); if (enumIntSpec != null) { // Mark the enum type itself as an integer type because it // acts like an integer type in essentially every way. attrBuilder.Add(IntegerSpecAttribute.Create(enumIntSpec)); } } } // TODO: support more attributes. attributeMap = new AttributeMap(attrBuilder); }
private QuadStripColoredRenderer(IBufferable model, ShaderCode[] shaderCodes, AttributeMap attributeMap, params GLSwitch[] switches) : base(model, shaderCodes, attributeMap, switches) { }
/// <summary> /// Renders a label(a single line of text). /// </summary> /// <param name="model"></param> /// <param name="shaderProgramProvider"></param> /// <param name="attributeMap"></param> /// <param name="switches"></param> private TextRenderer(TextModel model, IShaderProgramProvider shaderProgramProvider, AttributeMap attributeMap, params GLState[] switches) : base(model, shaderProgramProvider, attributeMap, switches) { this.textModel = model; }