本文整理汇总了C#中ShaderProgram类的典型用法代码示例。如果您正苦于以下问题:C# ShaderProgram类的具体用法?C# ShaderProgram怎么用?C# ShaderProgram使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ShaderProgram类属于命名空间,在下文中一共展示了ShaderProgram类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: init
public static void init()
{
if (shaderUniversal == null){
shaderUniversal = new ShaderProgram("/Application/shaders/Universal.cgx");
shaderUniversal.SetAttributeBinding(0, "a_Position");
shaderUniversal.SetAttributeBinding(1, "a_VertexColor");
shaderUniversal.SetAttributeBinding(2, "a_TexCoord");
shaderUniversal.SetUniformBinding(0, "u_SceneMatrix");
shaderUniversal.SetUniformBinding(1, "u_ScreenMatrix");
shaderUniversal.SetUniformBinding(2, "u_Alpha");
texture = new Texture2D("/Application/assets/texturepack/rymdkapsel-hd.png", false);
texture.SetFilter(TextureFilterMode.Disabled);
texture.SetWrap(TextureWrapMode.ClampToEdge);
texture.SetMaxAnisotropy(0);
}
if (shaderColored == null){
shaderColored = new ShaderProgram("/Application/shaders/Colored.cgx");
shaderColored.SetAttributeBinding(0, "a_Position");
shaderColored.SetAttributeBinding(1, "a_VertexColor");
shaderColored.SetUniformBinding(0, "u_SceneMatrix");
shaderColored.SetUniformBinding(1, "u_ScreenMatrix");
shaderColored.SetUniformBinding(2, "u_Alpha");
}
}
示例2: SetUniform
/// <summary>
/// Set uniform's value to GPU.(And maybe alsoe reset <see cref="Updated"/> property.)
/// </summary>
/// <param name="program"></param>
public void SetUniform(ShaderProgram program)
{
if (this.Updated)
{
this.DoSetUniform(program);
}
}
示例3: Sprite
public Sprite(GraphicsContext graphics, Texture2D texture)
{
if(shaderProgram == null)
{
shaderProgram = new ShaderProgram("/Application/shaders/Sprite.cgx");
shaderProgram.SetUniformBinding(0, "u_WorldMatrix");
}
if (texture == null)
{
throw new Exception("ERROR: texture is null.");
}
this.graphics = graphics;
this.texture = texture;
this.width = texture.Width;
this.height = texture.Height;
indices = new ushort[indexSize];
indices[0] = 0;
indices[1] = 1;
indices[2] = 2;
indices[3] = 3;
vertexBuffer = new VertexBuffer(4, indexSize, VertexFormat.Float3,
VertexFormat.Float2, VertexFormat.Float4);
}
示例4: Viewport
public Viewport(Resolution resolution, Vector2? position = null, Camera camera = null)
{
this.Resolution = resolution;
this.Position = position ?? Vector2.Zero;
var pos = new Vector3[] {
new Vector3 (this.Resolution.Width, 0, 0),
new Vector3 (this.Resolution.Width, this.Resolution.Height, 0),
new Vector3 (0, this.Resolution.Height, 0),
new Vector3 (0, 0, 0),
};
var tex = new Vector2[] {
new Vector2 (1.0f, 0.0f),
new Vector2 (1.0f, 1.0f),
new Vector2 (0.0f, 1.0f),
new Vector2 (0.0f, 0.0f),
};
ViewportShader = Game.ContentManager.Load<ShaderProgram> ("viewport");
this.ViewportTarget = new Model (new Geometry (BeginMode.Quads)
.AddBuffer ("v_pos", new GLBuffer<Vector3> (GLBufferSettings.StaticDraw3FloatArray, pos))
.AddBuffer ("v_tex", new GLBuffer<Vector2> (GLBufferSettings.StaticDraw2FloatArray, tex)));
Matrix = Matrix4.CreateOrthographicOffCenter (0, this.Resolution.Width, 0, this.Resolution.Height, 0, 16);
}
示例5: Planet
public Planet(string dataBaseName, PlanetParameters param, Planet parent, MeshVBOs vbos, Texture t, ShaderProgram shader, ShaderProgram lineShader)
: base(vbos, t, shader)
{
this.parent = parent;
this.lineShader = lineShader;
this.RevolutionOrientation = -1;
this.AxisTilt = Matrix4.Identity;
this.DrawAxisTilt = true;
this.ScenicDistance = param.DFSScenic[dataBaseName];
this.HoursPerRotation = param.RotationPeriod[dataBaseName];
this.AxisTilt = Matrix4.CreateFromAxisAngle(new Vector3(0, 0, -1), (float)MathHelper.DegreesToRadians(param.AxialTilt[dataBaseName]));
this.RealisticRadius = param.RadiusRealistic[dataBaseName];
this.ScenicRadius = param.RadiusScenic[dataBaseName];
this.Scale = (float)ScenicRadius;
this.OrbitalPeriod = param.OrbitalPeriod[dataBaseName];
this.inclinationAngle = param.InclinationAngle[dataBaseName];
this.longitudeAscendingNode = param.LongitudeAscendingNode[dataBaseName];
this.longitudePerihelion = param.LongitudePerihelion[dataBaseName];
this.eccentricity = param.Eccentricity[dataBaseName];
this.longitudeAscendingNodeRadians = MathHelper.DegreesToRadians(longitudeAscendingNode);
this.longitudePerihelionRadians = MathHelper.DegreesToRadians(longitudePerihelion);
this.inclinationAngleRadians = MathHelper.DegreesToRadians(inclinationAngle);
this.newRadius = 0;
this.PeriodAngle = longitudePerihelionRadians;
this.eccentricAnomaly = 0;
this.createTransform();
if (parent != null)
this.Orbit = new Orbit(this, parent.Position, this.ScenicDistance, 360, lineShader, this.inclinationAngle, this.longitudeAscendingNode, this.longitudePerihelion, this.eccentricity);
float[] axisVerts = { 0, -2, 0, 0, 2, 0 };
this.axisLine = new VBO<float>(axisVerts, BufferTarget.ArrayBuffer, VBO<float>.PointerType.vertex);
}
示例6: TextureRenderer
/// コンストラクタ
public TextureRenderer()
{
shaderTexture = new ShaderProgram( "/Application/shaders/Texture.cgx" );
shaderTexture.SetAttributeBinding( 0, "a_Position" );
shaderTexture.SetAttributeBinding( 1, "a_TexCoord" );
idWVP = shaderTexture.FindUniform( "WorldViewProj" );
shaderCurrent = shaderTexture;
vertices = new VertexBuffer( 4, VertexFormat.Float3, VertexFormat.Float2 );
float[] positions = {
0.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
1.0f, 0.0f, 0.0f,
1.0f, -1.0f, 0.0f,
};
float[] texcoords = {
0.0f, 1.0f,
0.0f, 0.0f,
1.0f, 1.0f,
1.0f, 0.0f,
};
vertices.SetVertices( 0, positions );
vertices.SetVertices( 1, texcoords );
}
示例7: SetConstantBuffers
internal void SetConstantBuffers(GraphicsDevice device, ShaderProgram shaderProgram)
#endif
{
// If there are no constant buffers then skip it.
if (_valid == 0)
return;
var valid = _valid;
for (var i = 0; i < _buffers.Length; i++)
{
var buffer = _buffers[i];
if (buffer != null && !buffer.IsDisposed)
{
#if DIRECTX
buffer.PlatformApply(device, _stage, i);
#elif OPENGL || WEB
buffer.PlatformApply(device, shaderProgram);
#endif
}
// Early out if this is the last one.
valid &= ~(1 << i);
if (valid == 0)
return;
}
}
示例8: PatternGrid
public PatternGrid(GraphicsContext graphics, Texture2D texture, Vector2 position, Vector2 size)
{
if(shaderProgram == null)
{
//shaderProgram=CreateSimpleSpriteShader();
shaderProgram = new ShaderProgram("/Application/shaders/Sprite.cgx");
shaderProgram.SetUniformBinding(0, "u_WorldMatrix");
}
//if (texture == null)
//{
// throw new Exception("ERROR: texture is null.");
//}
this.graphics = graphics;
//this.texture = texture;
this.texture = new Texture2D("/Application/resources/textures512.png", false);
this.width = size.X;
this.height = size.Y;
this.origin = position;
//@e Vertex coordinate, Texture coordinate, Vertex color
//vertexBuffer = new VertexBuffer(4, indexSize, VertexFormat.Float3, VertexFormat.Float2, VertexFormat.Float4);
vertexBuffer = new VertexBuffer(NUMVERTICES, VertexFormat.Float3, VertexFormat.Float2, VertexFormat.Float4);
}
示例9: Grid
public Grid(Renderer renderer, ShaderProgram shader)
{
// Render state for grid
RenderState = renderer.RenderFactory.CreateRenderState();
RenderState.DepthTest = true;
RenderState.DepthMask = true;
this.Shader = shader;
// Define the format of the control point to render the line
VertexDeclaration vd = new VertexDeclaration();
vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
// and create a vertex buffer for storing this kind of data
this.VertexBuffer = renderer.RenderFactory.CreateVertexBuffer(vd);
// Draw the primitive as lines
this.DrawOperation = DrawOperation.Lines;
this.RenderGroup = RenderQueueGroupId.Geometries;
List<FVector3> lines = new List<FVector3>();
for (int i = -10; i <= 10; i++)
{
// Draw - line
lines.Add(new FVector3(i, 0, -10));
lines.Add(new FVector3(i,0, 10));
// Draw | line
lines.Add(new FVector3(-10, 0, i));
lines.Add(new FVector3(10, 0, i));
}
// Put it to vertex buffer
VertexBuffer.LoadData(lines.ToArray());
}
示例10: Initialise
/// <summary>
/// Initialises the scene.
/// </summary>
/// <param name="gl">The OpenGL instance.</param>
/// <param name="width">The width of the screen.</param>
/// <param name="height">The height of the screen.</param>
public void Initialise(OpenGL gl, float width, float height)
{
// Set a blue clear colour.
gl.ClearColor(0.4f, 0.6f, 0.9f, 0.0f);
// Create the shader program.
var vertexShaderSource = ManifestResourceLoader.LoadTextFile("Shader.vert");
var fragmentShaderSource = ManifestResourceLoader.LoadTextFile("Shader.frag");
shaderProgram = new ShaderProgram();
shaderProgram.Create(gl, vertexShaderSource, fragmentShaderSource, null);
shaderProgram.BindAttributeLocation(gl, attributeIndexPosition, "in_Position");
shaderProgram.BindAttributeLocation(gl, attributeIndexColour, "in_Color");
shaderProgram.AssertValid(gl);
// Create a perspective projection matrix.
const float rads = (60.0f / 360.0f) * (float)Math.PI * 2.0f;
projectionMatrix = glm.perspective(rads, width / height, 0.1f, 100.0f);
// Create a view matrix to move us back a bit.
viewMatrix = glm.translate(new mat4(1.0f), new vec3(0.0f, 0.0f, -5.0f));
// Create a model matrix to make the model a little bigger.
modelMatrix = glm.scale(new mat4(1.0f), new vec3(2.5f));
// Now create the geometry for the square.
CreateVerticesForSquare(gl);
}
示例11: Init
/// シェーダのセット
public static void Init( string vshName, string fshName )
{
// vertex color shader
debShader = new ShaderProgram( vshName, fshName );
debShader.SetAttributeBinding( 0, "a_Position" );
debUIdWVP = debShader.FindUniform( "WorldViewProj" );
}
示例12: Sun
public Sun(string dataBaseName, PlanetParameters param, Planet parent, MeshVBOs vbos, Texture t, ShaderProgram shader, ShaderProgram lineShader)
: base(dataBaseName, param, parent, vbos, t, shader, lineShader)
{
bufferVerts = new VBO<float>(new float[] { -1, 1, 0, 1, 1, 0, 1, -1, 0, -1, -1, 0 }, BufferTarget.ArrayBuffer, VBO<float>.PointerType.vertex);
bufferElems = new VBO<ushort>(new ushort[] { 0, 1, 2, 3 }, BufferTarget.ElementArrayBuffer, VBO<ushort>.PointerType.element);
squareUvs = new VBO<float>(new float[] { 0, 1, 1, 1, 1, 0, 0, 0 }, BufferTarget.ArrayBuffer, VBO<float>.PointerType.texCoord);
squareVerts = new VBO<float>(new float[] { -2, 2, 0, 2f, 2f, 0, 2f, -2f, 0, -2f, -2f, 0 }, BufferTarget.ArrayBuffer, VBO<float>.PointerType.vertex);
squareElems = new VBO<ushort>(new ushort[] { 0, 1, 2, 3 }, BufferTarget.ElementArrayBuffer, VBO<ushort>.PointerType.element);
this.coronaShader = new ShaderProgram(File.ReadAllText("content/shaders/coronaShader.vert"), File.ReadAllText("content/shaders/coronaShader.frag"), "coronaShader");
Console.WriteLine(coronaShader.ProgramInfoLog);
coronaShader.setUniform("proj", Form1.projectionMatrix);
coronaShader.setUniform("model", Matrix4.Identity);
this.billboardShader = new ShaderProgram(File.ReadAllText("content/shaders/billboardShader.vert"), File.ReadAllText("content/shaders/billboardShader.frag"), "billboardShader");
Console.WriteLine(billboardShader.ProgramInfoLog);
billboardShader.setUniform("proj", Form1.projectionMatrix);
billboardShader.setUniform("model", Matrix4.Identity);
frameBufferTime = 0;
bufferResolution = new Vector2(1024, 1024);
bufferTexture = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2D, bufferTexture);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, (int)bufferResolution.X, (int)bufferResolution.Y, 0, PixelFormat.Rgba, PixelType.UnsignedByte, IntPtr.Zero);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
frameBuffer = GL.GenFramebuffer();
GL.BindFramebuffer(FramebufferTarget.Framebuffer, frameBuffer);
GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0, TextureTarget.Texture2D, bufferTexture, 0);
GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); // make sure to set the framebuffer back to the default, or else bugs,
//bugs that take two hours to debug
}
示例13: Initialize
public static void Initialize ()
{
// Set up the graphics system
graphics = new GraphicsContext ();
#if BUILD_FOR_PSV
program = new ShaderProgram("/Application/shaders/Texture.cgx");
#else
program = new ShaderProgram("/Application/shaders/Texture_sim.cgx");
#endif
program.SetUniformBinding(0, "WorldViewProj");
program.SetAttributeBinding(0, "a_Position");
program.SetAttributeBinding(1, "a_TexCoord");
vertices = new VertexBuffer(4, VertexFormat.Float3, VertexFormat.Float2);
float[] positions = {
-1.0f, 1.0f, 0.0f,
-1.0f, -1.0f, 0.0f,
1.0f, 1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
};
float[] texcoords = {
0.0f, 0.0f,
0.0f, 1.0f,
1.0f, 0.0f,
1.0f, 1.0f,
};
vertices.SetVertices(0, positions);
vertices.SetVertices(1, texcoords);
texture = new Texture2D(256, 224, false, PixelFormat.Rgb565);
SampleDraw.Init(graphics);
}
示例14: Load
public virtual void Load(int width, int height)
{
Width = width;
Height = height;
_page = new Texture();
GUIShader = Assets.Fetch<ShaderProgram>("GUI");
GUIShader.AddUniform("scale");
VBO = new VBO<VertexPositionNormalTexture>();
VAO = new VAO<VertexPositionNormalTexture>();
VBO.Buffer(new[]{
new VertexPositionNormalTexture{Position = new Vector3(0, Height, 0f),Normal = Vector3.UnitZ,TexCoord = new Vector2(0, Height)},
new VertexPositionNormalTexture{Position = new Vector3(Width, Height, 0f),Normal = Vector3.UnitZ,TexCoord = new Vector2(Width, Height)},
new VertexPositionNormalTexture{Position = new Vector3(Width, 0, 0f),Normal = Vector3.UnitZ,TexCoord = new Vector2(Width, 0)},
new VertexPositionNormalTexture{Position = new Vector3(0, 0, 0),Normal = Vector3.UnitZ,TexCoord = new Vector2(0,0)}
});
VAO.Setup(GUIShader, VBO);
_webView = WebCore.CreateWebView(Width, Height);
WebCore.BaseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "GUI");
_webView.FlushAlpha = false;
_webView.IsTransparent = true;
_webView.CreateObject("console");
_webView.SetObjectCallback("console", "log", (sender, e) => Bus.Add(new DebugMessage(Timer.LastTickTime, e.Arguments[0].ToString())));
_webView.CreateObject("GUI");
_webView.CreateObject("Bus");
_webView.LoadFile("index.htm");
}
示例15: SolidColorBrush
/// <summary>
/// Constructor.
/// </summary>
/// <param name="graphics">Handle to the GraphicsContext.</param>
public SolidColorBrush(GraphicsContext graphics)
: base(graphics)
{
this.shader = typeof(SolidColorBrush).Assembly.LoadShaderProgram(
graphics,
"Samurai.Graphics.Canvas2D.BasicCanvasShader.vert",
"Samurai.Graphics.Canvas2D.SolidColorBrush.frag");
}