public override void Init() { RC.ClearColor = new float4(0, 0, 0, 1); Mesh = new Cube(); var sp = MoreShaders.GetDiffuseColorShader(RC); RC.SetShader(sp); _vColor = RC.GetShaderParam(sp, "color"); RC.SetShaderParam(_vColor, new float4(0.8f, 0.1f, 0.1f, 1)); // sound by http://www.soundjay.com _audio1 = Audio.Instance.LoadFile("Assets/beep.ogg"); // excerpt from "the final rewind" by tryad (http://www.tryad.org) - cc-by-sa _audio2 = Audio.Instance.LoadFile("Assets/music.ogg"); _state = 0; _testID = 1; _timeStep = 1.0f; _curTime = 2.0f; _tests = new Tests(); }
// is called on startup public override void Init() { RC.ClearColor = new float4(0.1f, 0.1f, 0.5f, 1); // IMPORTANT: You are supposed to use either one SetWindowSize() or VideoWall(). You can't use both. // It's possible to resize a window to fit on a video wall or display. // Here are some different variants how to use this functionality. Uncomment to test. //SetWindowSize(800, 600); SetWindowSize(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height/9 * 2, true, 0, 0); //SetWindowSize(Screen.PrimaryScreen.Bounds.Width/9 * 2, Screen.PrimaryScreen.Bounds.Height, true, 0, 0); //SetWindowSize(640, 480, false, Screen.PrimaryScreen.Bounds.Width/2 - 640/2, Screen.PrimaryScreen.Bounds.Height/2 - 480/2); // IMPORTANT: For video Walls or projector matrices it's possible to let the system do the magic by // giving it the number of monitors/projectors per axis and specify some border information. // This only works in pseudo-fullscreen mode a.k.a borderless fullscreen-window. //VideoWall(0, 0, true, false); // This is the old method. More than this could not be done directly in a project code(?) //Width = 640; //Height = 480; // Initialize an ui. _guiHandler = new GUIHandler(); _guiHandler.AttachToContext(RC); // Create a new element. GUIElement element = new GUIImage("Assets/image.png", 0, 0, -10, 320, 130); // Add the element to the gui. _guiHandler.Add(element); // Add something to render. _cube = new Cube(); _spcolor = MoreShaders.GetDiffuseColorShader(RC); _colorParam = _spcolor.GetShaderParam("color"); }
public DiffuseMaterial(ShaderProgram shaderProgram, string texturepath) { sp = shaderProgram; Textureparam = sp.GetShaderParam("texture1"); ImageData Image = SceneManager.RC.LoadImage(texturepath); Tex = SceneManager.RC.CreateTexture(Image); }
public override void Init() { Input.Instance.InitializeDevices(); _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _spColor = MoreShaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); }
public PlanetMaterial(ShaderProgram shaderProgram, string texturePath) { sp = shaderProgram; TextureParam = sp.GetShaderParam("texture1"); var image = SceneManager.RC.LoadImage(texturePath); Tex = SceneManager.RC.CreateTexture(image); }
public override void Init() { Input.Instance.InitializeDevices(); _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _spColor = Shaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); }
public SpecularMaterial(ShaderProgram shaderProgram, string texturepath) { sp = shaderProgram; Textureparam = sp.GetShaderParam("texture1"); SpecularLevel = sp.GetShaderParam("specularLevel"); Shininess = sp.GetShaderParam("shininess"); ImageData Image = SceneManager.RC.LoadImage(texturepath); Tex = SceneManager.RC.CreateTexture(Image); }
// Init is called on startup. public override void Init() { // Initialize the shader(s) var shader = RC.CreateShader(_vertexShader, _pixelShader); RC.SetShader(shader); _albedoParam = RC.GetShaderParam(shader, "albedo"); // Load some meshes Mesh cone = LoadMesh("Cone.fus"); Mesh cube = LoadMesh("Cube.fus"); Mesh cylinder = LoadMesh("Cylinder.fus"); Mesh pyramid = LoadMesh("Pyramid.fus"); Mesh sphere = LoadMesh("Sphere.fus"); // Setup a list of objects _root = new SceneOb { Children = new List <SceneOb>(new [] { // Body new SceneOb { Mesh = cube, Pos = new float3(0, 2.75f, 0), ModelScale = new float3(0.5f, 1, 0.25f), }, // Legs new SceneOb { Mesh = cylinder, Pos = new float3(-0.25f, 1, 0), ModelScale = new float3(0.15f, 1, 0.15f), }, new SceneOb { Mesh = cylinder, Pos = new float3(0.25f, 1, 0), ModelScale = new float3(0.15f, 1, 0.15f), }, // Shoulders new SceneOb { Mesh = sphere, Pos = new float3(-0.75f, 3.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), }, new SceneOb { Mesh = sphere, Pos = new float3(0.75f, 3.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), }, // Arms new SceneOb { Mesh = cylinder, Pos = new float3(-0.75f, 2.5f, 0), ModelScale = new float3(0.15f, 1, 0.15f), }, new SceneOb { Mesh = cylinder, Pos = new float3(0.75f, 2.5f, 0), ModelScale = new float3(0.15f, 1, 0.15f), }, // Head new SceneOb { Mesh = sphere, Pos = new float3(0, 4.2f, 0), ModelScale = new float3(0.35f, 0.5f, 0.35f), Albedo = new float3(0.9f, 0.6f, 0.5f) }, }) }; // Set the clear color for the backbuffer RC.ClearColor = new float4(1, 1, 1, 1); }
public PlanetMaterial(RenderContext rc, ShaderProgram shaderProgram, string texturePath) { sp = shaderProgram; TextureParam = sp.GetShaderParam("texture1"); var image = rc.LoadImage(texturePath); Tex = rc.CreateTexture(image); }
public SpecularMaterial(RenderContext rc, ShaderProgram shaderProgram, string texturepath) { sp = shaderProgram; Textureparam = sp.GetShaderParam("texture1"); SpecularLevel = sp.GetShaderParam("specularLevel"); Shininess = sp.GetShaderParam("shininess"); ImageData image = rc.LoadImage(texturepath); Tex = rc.CreateTexture(image); }
public override void Init() { RC.ClearColor = new float4(1, 1, 1, 1); _pc = new PickingContext(RC); _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _meshCube = MeshReader.LoadMesh(@"Assets/Cube.obj.model"); _spColor = Shaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); }
public Renderer(RenderContext rc) { RC = rc; // Initialize the shader(s) var vertsh = AssetStorage.Get <string>("VertexShader.vert"); var pixsh = AssetStorage.Get <string>("PixelShader.frag"); var shader = RC.CreateShader(vertsh, pixsh); RC.SetShader(shader); AlbedoParam = RC.GetShaderParam(shader, "albedo"); ShininessParam = RC.GetShaderParam(shader, "shininess"); }
public BumpMaterial(ShaderProgram shaderProgram, string texturepath, string texturepath2) { sp = shaderProgram; NormalTextureparam = sp.GetShaderParam("normalTex"); Textureparam = sp.GetShaderParam("texture1"); SpecularLevel = sp.GetShaderParam("specularLevel"); Shininess = sp.GetShaderParam("shininess"); ImageData image = SceneManager.RC.LoadImage(texturepath); ImageData image2 = SceneManager.RC.LoadImage(texturepath2); Tex = SceneManager.RC.CreateTexture(image); NormalTex = SceneManager.RC.CreateTexture(image2); }
/// <summary> /// Attaches the object to a specific <see cref="RenderContext"/> object. /// </summary> /// <param name="rc">The <see cref="RenderContext"/> object to be used.</param> public void AttachToContext(RenderContext rc) { _rc = rc; _clearColor = rc.ClearColor; var imgData = new ImageData(); imgData.Width = _screenWidth; imgData.Height = _screenHeight; imgData.PixelFormat = ImagePixelFormat.RGBA; imgData.Stride = 4; //this seems is not working in the new FUSEE verison //var imgData = ImageData.CreateImage(_screenWidth, _screenHeight, ColorUint.Black); _contentLTex = _rc.CreateTexture(imgData); _contentRTex = _rc.CreateTexture(imgData); // initialize shader and image switch (_activeMode) { case Stereo3DMode.Oculus: _guiLImage = new GUIImage(default(ImageData), 0, 0, _screenWidth / 2, _screenHeight); _guiLImage.AttachToContext(rc); _guiLImage.Refresh(); _guiRImage = new GUIImage(default(ImageData), _screenWidth / 2, 0, _screenWidth / 2, _screenHeight); _guiRImage.AttachToContext(rc); _guiRImage.Refresh(); _shaderProgram = _rc.CreateShader(OculusVs, OculusPs); _shaderTexture = _shaderProgram.GetShaderParam("vTexture"); _lensCenterParam = _shaderProgram.GetShaderParam("LensCenter"); _screenCenterParam = _shaderProgram.GetShaderParam("ScreenCenter"); _scaleParam = _shaderProgram.GetShaderParam("Scale"); _scaleInParam = _shaderProgram.GetShaderParam("ScaleIn"); _hdmWarpParam = _shaderProgram.GetShaderParam("HmdWarpParam"); break; case Stereo3DMode.Anaglyph: _shaderProgram = _rc.CreateShader(AnaglyphVs, AnaglyphPs); _shaderTexture = _shaderProgram.GetShaderParam("vTexture"); _guiLImage = new GUIImage(default(ImageData), 0, 0, _screenWidth, _screenHeight); _guiLImage.AttachToContext(rc); _guiLImage.Refresh(); break; } }
public GameEntity(String meshPath, RenderContext rc, float posX = 0, float posY = 0, float posZ = 0, float angX = 0, float angY = 0, float angZ = 0) { _mesh = MeshReader.LoadMesh(meshPath); _rc = rc; Position = float4x4.CreateRotationX(angX) * float4x4.CreateRotationY(angY) * float4x4.CreateRotationZ(angZ) * float4x4.CreateTranslation(posX, posY, posZ); _shaderProgram = MoreShaders.GetDiffuseColorShader(rc); _shaderParam = _shaderProgram.GetShaderParam("color"); }
// is called on startup public override void Init() { RC.ClearColor = new float4(0.1f, 0.1f, 0.5f, 1); _meshCube = MeshReader.LoadMesh(@"Assets/Cube.obj.model"); _spTexture = Shaders.GetTextureShader(RC); _textureParam = _spTexture.GetShaderParam("texture1"); _videoStream = VideoManager.Instance.LoadVideoFromFile(@"Assets/pot.webm", true); //_videoStream = VideoManager.Instance.LoadVideoFromCamera(0, false); }
public override void Init() { RC.ClearColor = new float4(0.5f, 0.5f, 0.5f, 1); // load meshes Body = MeshReader.LoadMesh(@"Assets/mageBodyOBJ.obj.model"); GloveL = MeshReader.LoadMesh(@"Assets/mageGloveLOBJ.obj.model"); GloveR = MeshReader.LoadMesh(@"Assets/mageGloveROBJ.obj.model"); // set up shader, lights and textures var spBody = RC.CreateShader(VsBump, PsBump); RC.SetShader(spBody); RC.SetLightActive(0, 1); RC.SetLightPosition(0, new float3(5.0f, 0.0f, 2.0f)); RC.SetLightAmbient(0, new float4(0.2f, 0.2f, 0.2f, 1.0f)); RC.SetLightSpecular(0, new float4(0.1f, 0.1f, 0.1f, 1.0f)); RC.SetLightDiffuse(0, new float4(0.8f, 0.8f, 0.8f, 1.0f)); RC.SetLightDirection(0, new float3(-1.0f, 0.0f, 0.0f)); RC.SetLightActive(1, 1); RC.SetLightPosition(1, new float3(-5.0f, 0.0f, 2.0f)); RC.SetLightAmbient(1, new float4(0.5f, 0.5f, 0.5f, 1.0f)); RC.SetLightSpecular(1, new float4(0.1f, 0.1f, 0.1f, 1.0f)); RC.SetLightDiffuse(1, new float4(1.0f, 1.0f, 1.0f, 1.0f)); RC.SetLightDirection(1, new float3(1.0f, 0.0f, 0.0f)); _texture1ParamBody = spBody.GetShaderParam("texture1"); _texture2ParamBody = spBody.GetShaderParam("normalTex"); _specularLevelBody = spBody.GetShaderParam("specularLevel"); var imgDataGlove = RC.LoadImage("Assets/HandAOMap.jpg"); var imgData2Glove = RC.LoadImage("Assets/HandschuhNormalMap.jpg"); _iTexGlove = RC.CreateTexture(imgDataGlove); _iTex2Glove = RC.CreateTexture(imgData2Glove); var imgData = RC.LoadImage("Assets/TextureAtlas.jpg"); var imgData2 = RC.LoadImage("Assets/TextureAtlasNormal.jpg"); _iTex = RC.CreateTexture(imgData); _iTex2 = RC.CreateTexture(imgData2); // misc settings _angleHorz = 0; _angleVert = 0; _rotationSpeed = 1.5f; }
/// <summary> /// Sets a given Shader Parameter to a created texture /// </summary> /// <param name="param">Shader Parameter used for texture binding</param> /// <param name="texId">An ITexture probably returned from CreateTexture method</param> public void SetShaderParamTexture(IShaderParam param, ITexture texId) { int iParam = ((ShaderParam)param).handle; int texUnit; if (!_shaderParam2TexUnit.TryGetValue(iParam, out texUnit)) { texUnit = _currentTextureUnit++; _shaderParam2TexUnit[iParam] = texUnit; } GL.Uniform1(iParam, texUnit); GL.ActiveTexture((TextureUnit)(TextureUnit.Texture0 + texUnit)); GL.BindTexture(TextureTarget.Texture2D, ((Texture)texId).handle); }
internal static MaterialParam Create(uint nameHash, IShaderParam obj) { if (obj is ShaderParamMatrix) { return new MaterialParamMatrix44(nameHash, obj as ShaderParamMatrix); } if (obj is ShaderParamVector4) { return new MaterialParamVector4(nameHash, obj as ShaderParamVector4); } if (obj is ShaderParamTexture) { return new MaterialParamTexture(nameHash, obj as ShaderParamTexture); } return null; }
internal static MaterialParam Create(uint nameHash, IShaderParam obj) { if (obj is ShaderParamMatrix) { return(new MaterialParamMatrix44(nameHash, obj as ShaderParamMatrix)); } if (obj is ShaderParamVector4) { return(new MaterialParamVector4(nameHash, obj as ShaderParamVector4)); } if (obj is ShaderParamTexture) { return(new MaterialParamTexture(nameHash, obj as ShaderParamTexture)); } return(null); }
// Init is called on startup. public override void Init() { _mesh = new Mesh { Vertices = new[] { new float3(-0.5f, -0.5f, -0.5f), new float3(0.5f, -0.5f, -0.5f), new float3(0.5f, 0.5f, -0.5f), new float3(-0.5f, 0.5f, -0.5f), new float3(0.5f, -0.5f, 0.5f), new float3(-0.5f, -0.5f, 0.5f), new float3(-0.5f, 0.5f, 0.5f), new float3(0.5f, 0.5f, 0.5f), new float3(0, 1, 0) }, Triangles = new ushort[] { 0, 1, 2, 0, 2, 3, 1, 4, 7, 1, 7, 2, 4, 5, 6, 4, 6, 7, 5, 0, 3, 5, 3, 6, 3, 2, 8, 2, 7, 8, 7, 6, 8, 6, 3, 8 }, }; var shader = RC.CreateShader(_vertexShader, _pixelShader); RC.SetShader(shader); _mouseParam = RC.GetShaderParam(shader, "mauspos"); _mouse = new float2(0, 0); _alphaParam = RC.GetShaderParam(shader, "alpha"); _alpha = 0; // Set the clear color for the backbuffer. RC.ClearColor = new float4(0.1f, 0.3f, 0.2f, 1); }
// Init is called on startup. public override void Init() { _mesh = new Mesh { Vertices = new[] { new float3(-0.5f, -0.5f, -0.5f), new float3(0.5f, -0.5f, -0.5f), new float3(0.5f, 0.5f, -0.5f), new float3(-0.5f, 0.5f, -0.5f), new float3(0.5f, -0.5f, 0.5f), new float3(-0.5f, -0.5f, 0.5f), new float3(-0.5f, 0.5f, 0.5f), new float3(0.5f, 0.5f, 0.5f), new float3(0, 1, 0), }, Triangles = new ushort[] { 0, 1, 2, // Front 1 0, 2, 3, // Front 2 1, 4, 7, // Right 1 1, 7, 2, // Right 2 4, 5, 6, // Back 1 4, 6, 7, // Back 2 5, 0, 3, // Left 1 5, 3, 6, // Left 2 3, 2, 8, // Top Front 2, 7, 8, // Top Right 7, 6, 8, // Top Back 6, 3, 8, // Top Left }, }; var shader = RC.CreateShader(VertexShader, PixelShader); RC.SetShader(shader); _mouseParam = RC.GetShaderParam(shader, "mousepos"); _mousePosition = new float2(0, 0); _alphaParam = RC.GetShaderParam(shader, "alpha"); _alpha = 0; // Set the clear color for the backbuffer. RC.ClearColor = new float4(0.1f, 0.3f, 0.2f, 1); }
public override void Init() { RC.ClearColor = new float4(1, 1, 1, 1); _spColor = MoreShaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); RC.SetShader(_spColor); RC.SetShaderParam(_colorParam, new float4(1, 0, 0, 1)); _watch = new Stopwatch(); _ser = new FuseeSerializer(); Debug.WriteLine("Serialisation Example started. \nPress F1 to load Mesh using MeshReader. \nPress F2 to load Mesh using Protobuf."); // Example of how to save a Mesh with protobuf to file. /*Mesh temp = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); using (var file = File.Create(@"Assets/Teapot2.protobuf.model")) { _ser.Serialize(file,temp); }*/ }
// is called on startup public override void Init() { _theColor = new float4(0.5f, 0.8f, 0, 1); RC.ClearColor = new float4(1, 1, 1, 1); // initialize the variables _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _meshFace = MeshReader.LoadMesh(@"Assets/Face.obj.model"); _spColor = MoreShaders.GetShader("simple", RC); _spTexture = MoreShaders.GetShader("texture", RC); _colorParam = _spColor.GetShaderParam("vColor"); _textureParam = _spTexture.GetShaderParam("texture1"); // load texture var imgData = RC.LoadImage("Assets/world_map.jpg"); _iTex = RC.CreateTexture(imgData); }
public override void Init() { RC.ClearColor = new float4(1, 1, 1, 1); _spColor = Shaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); RC.SetShader(_spColor); RC.SetShaderParam(_colorParam, new float4(1, 0, 0, 1)); _watch = new Stopwatch(); _ser = new FuseeSerializer(); Debug.WriteLine( "Serialisation Example started. \nPress F1 to load Mesh using MeshReader. \nPress F2 to load Mesh using Protobuf."); // Example of how to save a Mesh with protobuf to file. /*Mesh temp = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); * using (var file = File.Create(@"Assets/Teapot2.protobuf.model")) * { * _ser.Serialize(file,temp); * }*/ }
public Renderer(RenderContext rc) { RC = rc; // Initialize the shader(s) var vertsh = AssetStorage.Get<string>("VertexShader.vert"); var pixsh = AssetStorage.Get<string>("PixelShader.frag"); _shader = RC.CreateShader(vertsh, pixsh); RC.SetShader(_shader); AlbedoParam = RC.GetShaderParam(_shader, "albedo"); ShininessParam = RC.GetShaderParam(_shader, "shininess"); SpecFactorParam = RC.GetShaderParam(_shader, "specfactor"); SpecColorParam = RC.GetShaderParam(_shader, "speccolor"); AmbientColorParam = RC.GetShaderParam(_shader, "ambientcolor"); LookUpImage("justBlack.jpg"); LookUpImage("pflasterstein.jpg"); LookUpImage("blue_poly.jpg"); TextureParam = RC.GetShaderParam(_shader, "texture"); TexMixParam = RC.GetShaderParam(_shader, "texmix"); }
// is called on startup public override void Init() { RC.ClearColor = new float4(1, 1, 1, 1); skypox = LoadSkybox(); var img = RC.LoadImage("Assets/skyboxOberflächenfarbe.jpg"); _iTex = RC.CreateTexture(img); // initialize the variables _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); // _meshFace = MeshReader.LoadMesh(@"Assets/coords.obj.model"); ; _meshFace = new Cube(); _spColor = MoreShaders.GetDiffuseColorShader(RC); _spTexture = MoreShaders.GetTextureShader(RC); _colorParam = _spColor.GetShaderParam("color"); _textureParam = _spTexture.GetShaderParam("texture1"); // load texture //var imgData = RC.LoadImage("Assets/coords.jpg"); //_iTex = RC.CreateTexture(imgData); _zz = 0.0f; }
// Init is called on startup. public override void Init() { _mesh = CreateCylinder(); Container <int> meinContainer = new Container <int>(); for (int i = 0; i < 1000; i++) { meinContainer.PutElement(1000 * 5 - i); } var shader = RC.CreateShader(_vertexShader, _pixelShader); RC.SetShader(shader); _xformParam = RC.GetShaderParam(shader, "xform"); _xform = float4x4.Identity; // Set the clear color for the backbuffer RC.ClearColor = new float4(0.1f, 0.3f, 0.2f, 1); }
public Renderer(RenderContext rc) { RC = rc; // Initialize the shader(s) var vertsh = AssetStorage.Get <string>("VertexShader.vert"); var pixsh = AssetStorage.Get <string>("PixelShader.frag"); _shader = RC.CreateShader(vertsh, pixsh); RC.SetShader(_shader); AlbedoParam = RC.GetShaderParam(_shader, "albedo"); ShininessParam = RC.GetShaderParam(_shader, "shininess"); SpecFactorParam = RC.GetShaderParam(_shader, "specfactor"); SpecColorParam = RC.GetShaderParam(_shader, "speccolor"); AmbientColorParam = RC.GetShaderParam(_shader, "ambientcolor"); LookUpImage("justBlack.jpg"); LookUpImage("pflasterstein.jpg"); LookUpImage("blue_poly.jpg"); TextureParam = RC.GetShaderParam(_shader, "texture"); TexMixParam = RC.GetShaderParam(_shader, "texmix"); }
public override void Init() { // Set ToonShaderEffect _shaderEffect.AttachToContext(RC); // Setup GUI // GUIHandler _guiHandler = new GUIHandler(); _guiHandler.AttachToContext(RC); // font + text _guiFontCabin18 = RC.LoadFont("Assets/Cabin.ttf", 18); _guiFontCabin24 = RC.LoadFont("Assets/Cabin.ttf", 24); _guiText = new GUIText("FUSEE Shader Demo", _guiFontCabin24, 30, Height - 30) { TextColor = new float4(1, 1, 1, 1) }; _guiHandler.Add(_guiText); // image _guiImage = new GUIImage("Assets/repbg.jpg", 0, 0, -5, Width, Height); _guiHandler.Add(_guiImage); _borderImage = new GUIImage("Assets/redbg.png", 0, 0, -4, 230, 32); //_guiHandler.Add(_borderImage); //* Menu1: Select Shader _panelSelectShader = new GUIPanel("Select Shader", _guiFontCabin24, 10, 10, 230, 230); _panelSelectShader.ChildElements.Add(_borderImage); _guiHandler.Add(_panelSelectShader); //** Possible Shader Buttons _btnDiffuseColorShader = new GUIButton("Diffuse Color", _guiFontCabin18, 25, 40, 180, 25); _btnTextureShader = new GUIButton("Texture Only", _guiFontCabin18, 25, 70, 180, 25); _btnDiffuseTextureShader = new GUIButton("Diffuse Texture", _guiFontCabin18, 25, 100, 180, 25); _btnDiffuseBumpTextureShader = new GUIButton("Diffuse Bump Texture", _guiFontCabin18, 25, 130, 180, 25); _btnSpecularTexture = new GUIButton("Specular Texture", _guiFontCabin18, 25, 160, 180, 25); _btnToon = new GUIButton("Toon", _guiFontCabin18, 25, 190, 180, 25); //*** Add Handlers _btnDiffuseColorShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseColorShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseColorShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseColorShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnDiffuseTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnDiffuseBumpTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseBumpTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseBumpTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseBumpTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnSpecularTexture.OnGUIButtonDown += OnMenuButtonDown; _btnSpecularTexture.OnGUIButtonUp += OnMenuButtonUp; _btnSpecularTexture.OnGUIButtonEnter += OnMenuButtonEnter; _btnSpecularTexture.OnGUIButtonLeave += OnMenuButtonLeave; _btnToon.OnGUIButtonDown += OnMenuButtonDown; _btnToon.OnGUIButtonUp += OnMenuButtonUp; _btnToon.OnGUIButtonEnter += OnMenuButtonEnter; _btnToon.OnGUIButtonLeave += OnMenuButtonLeave; //**** Add Buttons to Panel _panelSelectShader.ChildElements.Add(_btnDiffuseColorShader); _panelSelectShader.ChildElements.Add(_btnTextureShader); _panelSelectShader.ChildElements.Add(_btnDiffuseTextureShader); _panelSelectShader.ChildElements.Add(_btnDiffuseBumpTextureShader); _panelSelectShader.ChildElements.Add(_btnSpecularTexture); _panelSelectShader.ChildElements.Add(_btnToon); //* Menu3: Select Mesh _panelSelectMesh = new GUIPanel("Select Mesh", _guiFontCabin24, 270, 10, 230, 130); _panelSelectMesh.ChildElements.Add(_borderImage); _guiHandler.Add(_panelSelectMesh); //** Possible Meshes _btnCube = new GUIButton("Cube", _guiFontCabin18, 25, 40, 180, 25); _btnSphere = new GUIButton("Sphere", _guiFontCabin18, 25, 70, 180, 25); _btnTeapot = new GUIButton("Teapot", _guiFontCabin18, 25, 100, 180, 25); _panelSelectMesh.ChildElements.Add(_btnCube); _panelSelectMesh.ChildElements.Add(_btnSphere); _panelSelectMesh.ChildElements.Add(_btnTeapot); //** Add handlers _btnCube.OnGUIButtonDown += OnMenuButtonDown; _btnCube.OnGUIButtonUp += OnMenuButtonUp; _btnCube.OnGUIButtonEnter += OnMenuButtonEnter; _btnCube.OnGUIButtonLeave += OnMenuButtonLeave; _btnSphere.OnGUIButtonDown += OnMenuButtonDown; _btnSphere.OnGUIButtonUp += OnMenuButtonUp; _btnSphere.OnGUIButtonEnter += OnMenuButtonEnter; _btnSphere.OnGUIButtonLeave += OnMenuButtonLeave; _btnTeapot.OnGUIButtonDown += OnMenuButtonDown; _btnTeapot.OnGUIButtonUp += OnMenuButtonUp; _btnTeapot.OnGUIButtonEnter += OnMenuButtonEnter; _btnTeapot.OnGUIButtonLeave += OnMenuButtonLeave; //* Menu2: Light Settings _panelLightSettings = new GUIPanel("Light Settings", _guiFontCabin24, 530, 10, 230, 130); _panelLightSettings.ChildElements.Add(_borderImage); _guiHandler.Add(_panelLightSettings); //** Possible Light Settings _btnDirectionalLight = new GUIButton("Directional Light", _guiFontCabin18, 25, 40, 180, 25); _btnPointLight = new GUIButton("Point Light", _guiFontCabin18, 25, 70, 180, 25); _btnSpotLight = new GUIButton("Spot Light", _guiFontCabin18, 25, 100, 180, 25); _panelLightSettings.ChildElements.Add(_btnDirectionalLight); _panelLightSettings.ChildElements.Add(_btnPointLight); _panelLightSettings.ChildElements.Add(_btnSpotLight); //*** Add Handlers _btnDirectionalLight.OnGUIButtonDown += OnMenuButtonDown; _btnDirectionalLight.OnGUIButtonUp += OnMenuButtonUp; _btnDirectionalLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnDirectionalLight.OnGUIButtonLeave += OnMenuButtonLeave; _btnPointLight.OnGUIButtonDown += OnMenuButtonDown; _btnPointLight.OnGUIButtonUp += OnMenuButtonUp; _btnPointLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnPointLight.OnGUIButtonLeave += OnMenuButtonLeave; _btnSpotLight.OnGUIButtonDown += OnMenuButtonDown; _btnSpotLight.OnGUIButtonUp += OnMenuButtonUp; _btnSpotLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnSpotLight.OnGUIButtonLeave += OnMenuButtonLeave; // Setup 3D Scene // Load Images and Assign iTextures var imgTexture = RC.LoadImage("Assets/crateTexture.jpg"); var imgBumpTexture = RC.LoadImage("Assets/crateNormal.jpg"); _texCube = RC.CreateTexture(imgTexture); _texBumpCube = RC.CreateTexture(imgBumpTexture); imgTexture = RC.LoadImage("Assets/earthTexture.jpg"); imgBumpTexture = RC.LoadImage("Assets/earthNormal.jpg"); _texSphere = RC.CreateTexture(imgTexture); _texBumpSphere = RC.CreateTexture(imgBumpTexture); imgTexture = RC.LoadImage("Assets/porcelainTexture.png"); imgBumpTexture = RC.LoadImage("Assets/normalRust.jpg"); _texTeapot = RC.CreateTexture(imgTexture); _texBumpTeapot = RC.CreateTexture(imgBumpTexture); _currentTexture = _texCube; _currentBumpTexture = _texBumpCube; // Load Meshes _meshCube = MeshReader.LoadMesh(@"Assets/Cube.obj.model"); _meshSphere = MeshReader.LoadMesh(@"Assets/Sphere.obj.model"); _meshTeapot = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); // Set current Mesh and Update GUI _currentMesh = _meshCube; _btnCube.ButtonColor = ColorHighlightedButton; // Setup Shaderprograms and Update GUI _shaderDiffuseColor = Shaders.GetDiffuseColorShader(RC); _shaderDiffuseTexture = Shaders.GetDiffuseTextureShader(RC); _shaderTexture = Shaders.GetTextureShader(RC); _shaderDiffuseBumpTexture = Shaders.GetBumpDiffuseShader(RC); _shaderSpecularTexture = Shaders.GetSpecularShader(RC); _btnDiffuseColorShader.ButtonColor = ColorHighlightedButton; _currentShader = _shaderDiffuseColor; RC.SetShader(_shaderDiffuseColor); // Setup ShaderParams _paramColor = _shaderDiffuseColor.GetShaderParam("color"); // Setup Light and Update GUI RC.SetLightActive(0, 1); RC.SetLightPosition(0, new float3(5.0f, 0.0f, -2.0f)); RC.SetLightAmbient(0, new float4(0.2f, 0.2f, 0.2f, 1.0f)); RC.SetLightSpecular(0, new float4(0.1f, 0.1f, 0.1f, 1.0f)); RC.SetLightDiffuse(0, new float4(0.8f, 0.8f, 0.8f, 1.0f)); RC.SetLightDirection(0, new float3(-1.0f, 0.0f, 0.0f)); RC.SetLightSpotAngle(0, 10); _btnDirectionalLight.ButtonColor = ColorHighlightedButton; }
private void OnMenuButtonUp(GUIButton sender, MouseEventArgs mea) { sender.BorderWidth = 1; if (!IsButtonSelected(sender)) { sender.ButtonColor = ColorHighlightedButton; } switch (sender.Text) { case "Diffuse Color": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); _currentShader = _shaderDiffuseColor; _paramColor = _currentShader.GetShaderParam("color"); break; case "Texture Only": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); _currentShader = _shaderTexture; _paramTexture = _currentShader.GetShaderParam("texture1"); break; case "Diffuse Texture": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); _currentShader = _shaderDiffuseTexture; _paramTexture = _currentShader.GetShaderParam("texture1"); break; case "Diffuse Bump Texture": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); _currentShader = _shaderDiffuseBumpTexture; _paramTexture = _currentShader.GetShaderParam("texture1"); _paramBumpTexture = _currentShader.GetShaderParam("normalTex"); _paramSpecular = _currentShader.GetShaderParam("specularLevel"); _paramShininess = _currentShader.GetShaderParam("shininess"); break; case "Specular Texture": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); _currentShader = _shaderSpecularTexture; _paramTexture = _currentShader.GetShaderParam("texture1"); _paramSpecular = _currentShader.GetShaderParam("specularLevel"); _paramShininess = _currentShader.GetShaderParam("shininess"); break; case "Toon": _textShaderName = sender.Text; DeselectOtherButtonsFromPanel(_panelSelectShader, sender); break; case "Cube": DeselectOtherButtonsFromPanel(_panelSelectMesh, sender); SetMesh(_meshCube); _currentTexture = _texCube; _currentBumpTexture = _texBumpCube; break; case "Sphere": DeselectOtherButtonsFromPanel(_panelSelectMesh, sender); SetMesh(_meshSphere); _currentTexture = _texSphere; _currentBumpTexture = _texBumpSphere; break; case "Teapot": DeselectOtherButtonsFromPanel(_panelSelectMesh, sender); SetMesh(_meshTeapot); _currentTexture = _texTeapot; _currentBumpTexture = _texBumpTeapot; break; case "Directional Light": DeselectOtherButtonsFromPanel(_panelLightSettings, sender); RC.SetLightActive(0, 1); break; case "Point Light": DeselectOtherButtonsFromPanel(_panelLightSettings, sender); RC.SetLightActive(0, 2); break; case "Spot Light": DeselectOtherButtonsFromPanel(_panelLightSettings, sender); RC.SetLightActive(0, 3); break; } }
/// <summary> /// Sets a float shader parameter. /// </summary> /// <param name="param">The parameter.</param> /// <param name="val">The value.</param> public void SetShaderParam(IShaderParam param, float val) { GL.Uniform1(((ShaderParam)param).handle, val); }
/// <summary> /// Sets a given Shader Parameter to a created texture /// </summary> /// <param name="param">Shader Parameter used for texture binding</param> /// <param name="texId">An ITexture probably returned from CreateTexture method</param> public void SetShaderParamTexture(IShaderParam param, ITexture texId) { int iParam = ((ShaderParam)param).handle; int texUnit; if (!_shaderParam2TexUnit.TryGetValue(iParam, out texUnit)) { texUnit = _currentTextureUnit++; _shaderParam2TexUnit[iParam] = texUnit; } GL.Uniform1(iParam, texUnit); GL.ActiveTexture(TextureUnit.Texture0 + texUnit); GL.BindTexture(TextureTarget.Texture2D, ((Texture)texId).handle); }
/// <summary> /// Sets a <see cref="float4" /> shader parameter. /// </summary> /// <param name="param">The parameter.</param> /// <param name="val">The value.</param> public void SetShaderParam(IShaderParam param, float4 val) { GL.Uniform4(((ShaderParam)param).handle, val.x, val.y, val.z, val.w); }
/// <summary> /// Sets a <see cref="float2" /> shader parameter. /// </summary> /// <param name="param">The parameter.</param> /// <param name="val">The value.</param> public void SetShaderParam(IShaderParam param, float2 val) { GL.Uniform2(((ShaderParam)param).handle, val.x, val.y); }
/// <summary> /// Gets the value of a shader parameter. /// </summary> /// <param name="program">The <see cref="ShaderProgram"/>.</param> /// <param name="handle">The <see cref="IShaderParam"/>.</param> /// <returns>The float value.</returns> public float GetParamValue(ShaderProgram program, IShaderParam handle) { return _rci.GetParamValue(program._spi, handle); }
/// <summary> /// When the shader program is created, retrieve once at the beginning the handles for those params. /// </summary> protected override void GetShaderParams() { _yBoundsParam = _rc.GetShaderParam(_shader, "yBounds"); }
public override void Init() { _world = new World(RC); // load mesh as geometry var geo1 = MeshReader.ReadWavefrontObj(new StreamReader(@"Assets/Cube.obj.model")); // create and set shader var sp = RC.CreateShader(VsSimpleTexture, PsSimpleTexture); RC.SetShader(sp); var material = new ShaderMaterial(sp); // load a texture and write a text on it var imgData = RC.LoadImage("Assets/cube_tex.jpg"); imgData = RC.TextOnImage(imgData, "Verdana", 80f, "FUSEE rocks!", "Black", 0, 30); var iTex = RC.CreateTexture(imgData); Texture1Param = sp.GetShaderParam("texture1"); RC.SetShaderParamTexture(Texture1Param, iTex); // add object with material _world.AddObject(geo1, material, 0, 0, 500); RC.ClearColor = new float4(0.1f, 0.1f, 0.1f, 1); }
public override void Init() { VSync = false; SetWindowSize(1280, 720); // Start the application in demo mode? demoMode = true; #region MeshImports _Geo = new Geometry(); _Geo.LoadAsset("Assets/Cube.obj.model"); //_Geo.LoadAsset("Assets/Cube_quads.obj.model"); //_Geo.LoadAsset("Assets/Sphere.obj.model"); //_Geo.LoadAsset("Assets/Sphere_quads.obj.model"); //_Geo.LoadAsset("Assets/SharedCorners.obj.model"); //_Geo.LoadAsset("Assets/Cylinder.obj.model"); //_Geo.LoadAsset("Assets/Cylinder_quads.obj.model"); //_Geo.LoadAsset("Assets/SharedCorners_pro.obj.model"); //_Geo.LoadAsset("Assets/Teapot.obj.model"); #endregion MeshImports // Set the smoothing angle for the edge based vertex normal calculation // Feel free to test around. _Geo._SmoothingAngle = 89.0; // The shader colors here are not supposed to be changed. They don't have an effect. If you want to change the shaders // then please change the values in the ShaderChanger() method. These ones are just for declaration. #region Shaders #region TextureShader _msDiffuse = Shaders.GetDiffuseTextureShader(RC); _vLightShaderParam = _msDiffuse.GetShaderParam("texture1"); //ImageData imgData = RC.LoadImage("Assets/Cube_Mat_uv.jpg"); ImageData imgData = RC.LoadImage("Assets/world_map.jpg"); //ImageData imgData = RC.LoadImage("Assets/Teapot_Texture.jpg"); // Due to copyright reasons, this file will not be delivered with the project. //ImageData imgData = RC.LoadImage("Assets/Hellknight.jpg"); _tex = RC.CreateTexture(imgData); #endregion TextureShader #region ColorShader _spColor = Shaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); RC.SetShader(_spColor); RC.SetShaderParam(_colorParam, new float4(0f, 0f, 0f, 1f)); #endregion ColorShader #region LightPos RC.SetLightActive(0, 0f); RC.SetLightAmbient(0, new float4(0.0f, 0.0f, 0.0f, 1.0f)); RC.SetLightDiffuse(0, new float4(1.0f, 1.0f, 1.0f, 1.0f)); RC.SetLightDirection(0, new float3(0.0f, -1.0f, 0.0f)); RC.SetLightActive(1, 0f); RC.SetLightAmbient(1, new float4(0.0f, 0.0f, 0.0f, 1.0f)); RC.SetLightDiffuse(1, new float4(0.5f, 0.5f, 0.5f, 1.0f)); RC.SetLightDirection(1, new float3(1.0f, 0.0f, 0.0f)); #endregion LightPos #endregion // Convert the loaded lfg model to a fusee mesh the first time. _lfgmesh = _Geo.ToMesh(); RC.ClearColor = new float4(0.2f, 0.2f, 0.2f, 1f); // For Benchmarking only. _ShaderType = 1; runDemoAnimation = true; _Geo._DoCalcVertexNormals = true; }
// is called on startup public override void Init() { // GUI initialization _zVal = 500; _guiHandler = new GUIHandler(); _guiHandler.AttachToContext(RC); _guiFuseeLink = new GUIButton(6, 6, 157, 87); _guiFuseeLink.ButtonColor = new float4(0, 0, 0, 0); _guiFuseeLink.BorderColor = new float4(0, 0.6f, 0.2f, 1); _guiFuseeLink.BorderWidth = 0; _guiFuseeLink.OnGUIButtonDown += _guiFuseeLink_OnGUIButtonDown; _guiFuseeLink.OnGUIButtonEnter += _guiFuseeLink_OnGUIButtonEnter; _guiFuseeLink.OnGUIButtonLeave += _guiFuseeLink_OnGUIButtonLeave; _guiHandler.Add(_guiFuseeLink); _guiFuseeLogo = new GUIImage("Assets/FuseeLogo150.png", 10, 10, -5, 150, 80); _guiHandler.Add(_guiFuseeLogo); _guiLatoBlack = RC.LoadFont("Assets/Lato-Black.ttf", 14); _guiSubText = new GUIText("FUSEE 3D Scene Viewer", _guiLatoBlack, 100, 100); _guiSubText.TextColor = new float4(0.05f, 0.25f, 0.15f, 0.8f); _guiHandler.Add(_guiSubText); // Scene loading var ser = new Serializer(); using (var file = File.OpenRead(@"Assets/Model.fus")) { _scene = ser.Deserialize(file, null, typeof(SceneContainer)) as SceneContainer; } _sr = new SceneRenderer(_scene, "Assets"); AdjustModelScaleOffset(); _guiSubText.Text = "FUSEE 3D Scene"; if (_scene.Header.CreatedBy != null || _scene.Header.CreationDate != null) { _guiSubText.Text += " created"; if (_scene.Header.CreatedBy != null) { _guiSubText.Text += " by " + _scene.Header.CreatedBy; } if (_scene.Header.CreationDate != null) { _guiSubText.Text += " on " + _scene.Header.CreationDate; } } _subtextWidth = GUIText.GetTextWidth(_guiSubText.Text, _guiLatoBlack); _subtextHeight = GUIText.GetTextHeight(_guiSubText.Text, _guiLatoBlack); _sColor = Shaders.GetDiffuseColorShader(RC); RC.SetShader(_sColor); _colorParam = _sColor.GetShaderParam("color"); RC.SetShaderParam(_colorParam, new float4(1, 1, 1, 1)); RC.ClearColor = new float4(1, 1, 1, 1); }
public override void Init() { VSync = false; // Start the application in demo mode? demoMode = true; #region MeshImports _Geo = new Geometry(); //_Geo.LoadAsset("Assets/Cube.obj.model"); //_Geo.LoadAsset("Assets/Cube_quads.obj.model"); //_Geo.LoadAsset("Assets/Sphere.obj.model"); //_Geo.LoadAsset("Assets/Sphere_quads.obj.model"); //_Geo.LoadAsset("Assets/SharedCorners.obj.model"); //_Geo.LoadAsset("Assets/Cylinder.obj.model"); //_Geo.LoadAsset("Assets/Cylinder_quads.obj.model"); //_Geo.LoadAsset("Assets/SharedCorners_pro.obj.model"); _Geo.LoadAsset("Assets/Teapot.obj.model"); // Due to copyright reasons, this file will not be delivered with the project. //_Geo.LoadAsset("Assets/Hellknight.obj.model"); #endregion MeshImports // Set the smoothing angle for the edge based vertex normal calculation // Feel free to test around. _Geo._SmoothingAngle = 89.0; // The shader colors here are not supposed to be changed. They don't have an effect. If you want to change the shaders // then please change the values in the ShaderChanger() method. These ones are just for declaration. #region Shaders #region TextureShader _msDiffuse = MoreShaders.GetDiffuseTextureShader(RC); _vLightShaderParam = _msDiffuse.GetShaderParam("texture1"); //ImageData imgData = RC.LoadImage("Assets/Cube_Mat_uv.jpg"); ImageData imgData = RC.LoadImage("Assets/world_map.jpg"); //ImageData imgData = RC.LoadImage("Assets/Teapot_Texture.jpg"); // Due to copyright reasons, this file will not be delivered with the project. //ImageData imgData = RC.LoadImage("Assets/Hellknight.jpg"); _tex = RC.CreateTexture(imgData); #endregion TextureShader #region ColorShader _spColor = MoreShaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("color"); RC.SetShader(_spColor); RC.SetShaderParam(_colorParam, new float4(0f, 0f, 0f, 1)); #endregion ColorShader #region LightPos RC.SetLightActive(0, 0f); RC.SetLightAmbient(0, new float4(0.0f, 0.0f, 0.0f, 1.0f)); RC.SetLightDiffuse(0, new float4(1.0f, 1.0f, 1.0f, 1.0f)); RC.SetLightDirection(0, new float3(0.0f, -1.0f, 0.0f)); RC.SetLightActive(1, 0f); RC.SetLightAmbient(1, new float4(0.0f, 0.0f, 0.0f, 1.0f)); RC.SetLightDiffuse(1, new float4(0.5f, 0.5f, 0.5f, 1.0f)); RC.SetLightDirection(1, new float3(1.0f, 0.0f, 0.0f)); #endregion LightPos #endregion // Convert the loaded lfg model to a fusee mesh the first time. _lfgmesh = _Geo.ToMesh(); RC.ClearColor = new float4(0.2f, 0.2f, 0.2f, 1f); // TODO: For Benchmarking only. _ShaderType = 1; runDemoAnimation = true; _Geo._DoCalcVertexNormals = true; }
// Init is called on startup. public override void Init() { // Initialize the shader(s) var shader = RC.CreateShader(_vertexShader, _pixelShader); RC.SetShader(shader); _albedoParam = RC.GetShaderParam(shader, "albedo"); // Load some meshes Mesh cone = LoadMesh("Cone.fus"); Mesh cube = LoadMesh("Cube.fus"); Mesh cylinder = LoadMesh("Cylinder.fus"); Mesh pyramid = LoadMesh("Pyramid.fus"); Mesh sphere = LoadMesh("Sphere.fus"); // Setup a list of objects _root = new SceneOb { name = "root" }; // Add Body _root.Children.Add(new SceneOb { Mesh = cube, Albedo = new float3(0, 0, 0), Pos = new float3(0, 2.75f, 0), ModelScale = new float3(0.5f, 1, 0.25f), name = "body" }); // Add Legs _root.Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(-0.25f, 1, 0), ModelScale = new float3(0.15f, 0.75f, 0.15f), name = "rightupperleg" }); FindSceneOb(_root, "rightupperleg").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.75f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "rightknee" }); FindSceneOb(_root, "rightknee").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "rightlowerleg" }); FindSceneOb(_root, "rightlowerleg").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.70f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "rightfoot" }); _root.Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0.25f, 1, 0), Pivot = new float3(0, 0.75f, 0), ModelScale = new float3(0.15f, 0.75f, 0.15f), name = "leftupperleg" }); FindSceneOb(_root, "leftupperleg").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.75f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "leftknee" }); FindSceneOb(_root, "leftknee").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "leftlowerleg" }); FindSceneOb(_root, "leftlowerleg").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.70f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "leftfoot" }); // Add Arms _root.Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(-0.75f, 3.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "rightshoulder" }); FindSceneOb(_root, "rightshoulder").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "rightupperarm" }); FindSceneOb(_root, "rightupperarm").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "rightellbow" }); FindSceneOb(_root, "rightellbow").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "rightlowerarm" }); FindSceneOb(_root, "rightlowerarm").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "rightwrist" }); _root.Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0.75f, 3.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "leftshoulder" }); FindSceneOb(_root, "leftshoulder").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "leftupperarm" }); FindSceneOb(_root, "leftupperarm").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "leftellbow" }); FindSceneOb(_root, "leftellbow").Children.Add(new SceneOb { Mesh = cylinder, Albedo = new float3(0, 0, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.15f, 0.5f, 0.15f), name = "leftlowerarm" }); FindSceneOb(_root, "leftlowerarm").Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(1, 0.5f, 0), Pos = new float3(0, -0.5f, 0), ModelScale = new float3(0.25f, 0.25f, 0.25f), name = "leftwrist" }); // Add Head _root.Children.Add(new SceneOb { Mesh = sphere, Albedo = new float3(0, 1, 0), Pos = new float3(0, 4.2f, 0), ModelScale = new float3(0.35f, 0.5f, 0.35f), name = "head" }); // Set the clear color for the backbuffer RC.ClearColor = new float4(1, 1, 1, 1); }
// is called on startup public override void Init() { RC.ClearColor = new float4(0.2f, 0.2f, 0.2f, 1); _smokeTexture = RC.CreateShader(_smokeEmitter.VsSimpleTexture, _smokeEmitter.PsSimpleTexture); _fireRedTexture = RC.CreateShader(_fireRedEmitter.VsSimpleTexture, _fireRedEmitter.PsSimpleTexture); _fireYellowTexture = RC.CreateShader(_fireYellowEmitter.VsSimpleTexture, _fireYellowEmitter.PsSimpleTexture); _starTexture = RC.CreateShader(_starEmitter.VsSimpleTexture, _starEmitter.PsSimpleTexture); _smokeParam = _smokeTexture.GetShaderParam("texture1"); _fireRedParam = _fireRedTexture.GetShaderParam("texture1"); _fireYellowParam = _fireYellowTexture.GetShaderParam("texture1"); _starParam = _starTexture.GetShaderParam("texture1"); // load texture var imgSmokeData = RC.LoadImage("Assets/smoke_particle.png"); var imgFireRedData = RC.LoadImage("Assets/fireRed.png"); var imgFireYellowData = RC.LoadImage("Assets/fireYellowTexture.png"); var imgStarData = RC.LoadImage("Assets/star.png"); _iSmoke = RC.CreateTexture(imgSmokeData); _iFireRed = RC.CreateTexture(imgFireRedData); _iFireYellow = RC.CreateTexture(imgFireYellowData); _iStar = RC.CreateTexture(imgStarData); RC.SetRenderState(new RenderStateSet { ZEnable = false, AlphaBlendEnable = true, BlendOperation = BlendOperation.Add, SourceBlend = Blend.SourceAlpha, DestinationBlend = Blend.InverseSourceAlpha }); // GUIHandler _guiHandler = new GUIHandler(); _guiHandler.AttachToContext(RC); // font + text _guiFontCabin18 = RC.LoadFont("Assets/Cabin.ttf", 18); _guiFontCabin24 = RC.LoadFont("Assets/Cabin.ttf", 24); _guiText = new GUIText("Fusee3D Particle System ", _guiFontCabin24, 510, 35); _guiText.TextColor = new float4(1, 1, 1, 1); _guiHandler.Add(_guiText); // panel _guiPanel = new GUIPanel("Menu", _guiFontCabin18, 10, 10, 150, 150); _guiHandler.Add(_guiPanel); // Example 1 button _guiExampleOneButton = new GUIButton("Fog", _guiFontCabin18, 25, 40, 100, 25); _guiExampleOneButton.OnGUIButtonDown += OnMenuButtonDown; _guiExampleOneButton.OnGUIButtonUp += OnMenuButtonUp; _guiExampleOneButton.OnGUIButtonEnter += OnMenuButtonEnter; _guiExampleOneButton.OnGUIButtonLeave += OnMenuButtonLeave; _guiPanel.ChildElements.Add(_guiExampleOneButton); // Example 2 button _guiExampleTwoButton = new GUIButton("Fire", _guiFontCabin18, 25, 70, 100, 25); _guiExampleTwoButton.OnGUIButtonDown += OnMenuButtonDown; _guiExampleTwoButton.OnGUIButtonUp += OnMenuButtonUp; _guiExampleTwoButton.OnGUIButtonEnter += OnMenuButtonEnter; _guiExampleTwoButton.OnGUIButtonLeave += OnMenuButtonLeave; _guiPanel.ChildElements.Add(_guiExampleTwoButton); // Example 2 button _guiExampleThreeButton = new GUIButton("Stars", _guiFontCabin18, 25, 100, 100, 25); _guiExampleThreeButton.OnGUIButtonDown += OnMenuButtonDown; _guiExampleThreeButton.OnGUIButtonUp += OnMenuButtonUp; _guiExampleThreeButton.OnGUIButtonEnter += OnMenuButtonEnter; _guiExampleThreeButton.OnGUIButtonLeave += OnMenuButtonLeave; _guiPanel.ChildElements.Add(_guiExampleThreeButton); }
public SphereMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; _colorParam = sp.GetShaderParam("color"); }
public override void Init() { // Set ToonShaderEffect _shaderEffect.AttachToContext(RC); // Setup GUI // GUIHandler _guiHandler = new GUIHandler(); _guiHandler.AttachToContext(RC); // font + text _guiFontCabin18 = RC.LoadFont("Assets/Cabin.ttf", 18); _guiFontCabin24 = RC.LoadFont("Assets/Cabin.ttf", 24); _guiText = new GUIText("FUSEE Shader Demo", _guiFontCabin24, 30, Height - 30) { TextColor = new float4(1, 1, 1, 1) }; _guiHandler.Add(_guiText); // image _guiImage = new GUIImage("Assets/repbg.jpg", 0, 0, -5, Width, Height); _guiHandler.Add(_guiImage); _borderImage = new GUIImage("Assets/redbg.png", 0, 0, -4, 230, 32); //_guiHandler.Add(_borderImage); //* Menu1: Select Shader _panelSelectShader = new GUIPanel("Select Shader", _guiFontCabin24, 10, 10, 230, 230); _panelSelectShader.ChildElements.Add(_borderImage); _guiHandler.Add(_panelSelectShader); //** Possible Shader Buttons _btnDiffuseColorShader = new GUIButton("Diffuse Color", _guiFontCabin18, 25, 40, 180, 25); _btnTextureShader = new GUIButton("Texture Only", _guiFontCabin18, 25, 70, 180, 25); _btnDiffuseTextureShader = new GUIButton("Diffuse Texture", _guiFontCabin18, 25, 100, 180, 25); _btnDiffuseBumpTextureShader = new GUIButton("Diffuse Bump Texture", _guiFontCabin18, 25, 130, 180, 25); _btnSpecularTexture = new GUIButton("Specular Texture", _guiFontCabin18, 25, 160, 180, 25); _btnToon = new GUIButton("Toon", _guiFontCabin18, 25, 190, 180, 25); //*** Add Handlers _btnDiffuseColorShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseColorShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseColorShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseColorShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnDiffuseTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnDiffuseBumpTextureShader.OnGUIButtonDown += OnMenuButtonDown; _btnDiffuseBumpTextureShader.OnGUIButtonUp += OnMenuButtonUp; _btnDiffuseBumpTextureShader.OnGUIButtonEnter += OnMenuButtonEnter; _btnDiffuseBumpTextureShader.OnGUIButtonLeave += OnMenuButtonLeave; _btnSpecularTexture.OnGUIButtonDown += OnMenuButtonDown; _btnSpecularTexture.OnGUIButtonUp += OnMenuButtonUp; _btnSpecularTexture.OnGUIButtonEnter += OnMenuButtonEnter; _btnSpecularTexture.OnGUIButtonLeave += OnMenuButtonLeave; _btnToon.OnGUIButtonDown += OnMenuButtonDown; _btnToon.OnGUIButtonUp += OnMenuButtonUp; _btnToon.OnGUIButtonEnter += OnMenuButtonEnter; _btnToon.OnGUIButtonLeave += OnMenuButtonLeave; //**** Add Buttons to Panel _panelSelectShader.ChildElements.Add(_btnDiffuseColorShader); _panelSelectShader.ChildElements.Add(_btnTextureShader); _panelSelectShader.ChildElements.Add(_btnDiffuseTextureShader); _panelSelectShader.ChildElements.Add(_btnDiffuseBumpTextureShader); _panelSelectShader.ChildElements.Add(_btnSpecularTexture); _panelSelectShader.ChildElements.Add(_btnToon); //* Menu3: Select Mesh _panelSelectMesh = new GUIPanel("Select Mesh", _guiFontCabin24, 270, 10, 230, 130); _panelSelectMesh.ChildElements.Add(_borderImage); _guiHandler.Add(_panelSelectMesh); //** Possible Meshes _btnCube = new GUIButton("Cube", _guiFontCabin18, 25, 40, 180, 25); _btnSphere = new GUIButton("Sphere", _guiFontCabin18, 25, 70, 180, 25); _btnTeapot = new GUIButton("Teapot", _guiFontCabin18, 25, 100, 180, 25); _panelSelectMesh.ChildElements.Add(_btnCube); _panelSelectMesh.ChildElements.Add(_btnSphere); _panelSelectMesh.ChildElements.Add(_btnTeapot); //** Add handlers _btnCube.OnGUIButtonDown += OnMenuButtonDown; _btnCube.OnGUIButtonUp += OnMenuButtonUp; _btnCube.OnGUIButtonEnter += OnMenuButtonEnter; _btnCube.OnGUIButtonLeave += OnMenuButtonLeave; _btnSphere.OnGUIButtonDown += OnMenuButtonDown; _btnSphere.OnGUIButtonUp += OnMenuButtonUp; _btnSphere.OnGUIButtonEnter += OnMenuButtonEnter; _btnSphere.OnGUIButtonLeave += OnMenuButtonLeave; _btnTeapot.OnGUIButtonDown += OnMenuButtonDown; _btnTeapot.OnGUIButtonUp += OnMenuButtonUp; _btnTeapot.OnGUIButtonEnter += OnMenuButtonEnter; _btnTeapot.OnGUIButtonLeave += OnMenuButtonLeave; //* Menu2: Light Settings _panelLightSettings = new GUIPanel("Light Settings", _guiFontCabin24, 530, 10, 230, 130); _panelLightSettings.ChildElements.Add(_borderImage); _guiHandler.Add(_panelLightSettings); //** Possible Light Settings _btnDirectionalLight = new GUIButton("Directional Light", _guiFontCabin18, 25, 40, 180, 25); _btnPointLight = new GUIButton("Point Light", _guiFontCabin18, 25, 70, 180, 25); _btnSpotLight = new GUIButton("Spot Light", _guiFontCabin18, 25, 100, 180, 25); _panelLightSettings.ChildElements.Add(_btnDirectionalLight); _panelLightSettings.ChildElements.Add(_btnPointLight); _panelLightSettings.ChildElements.Add(_btnSpotLight); //*** Add Handlers _btnDirectionalLight.OnGUIButtonDown += OnMenuButtonDown; _btnDirectionalLight.OnGUIButtonUp += OnMenuButtonUp; _btnDirectionalLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnDirectionalLight.OnGUIButtonLeave += OnMenuButtonLeave; _btnPointLight.OnGUIButtonDown += OnMenuButtonDown; _btnPointLight.OnGUIButtonUp += OnMenuButtonUp; _btnPointLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnPointLight.OnGUIButtonLeave += OnMenuButtonLeave; _btnSpotLight.OnGUIButtonDown += OnMenuButtonDown; _btnSpotLight.OnGUIButtonUp += OnMenuButtonUp; _btnSpotLight.OnGUIButtonEnter += OnMenuButtonEnter; _btnSpotLight.OnGUIButtonLeave += OnMenuButtonLeave; // Setup 3D Scene // Load Images and Assign iTextures var imgTexture = RC.LoadImage("Assets/crateTexture.jpg"); var imgBumpTexture = RC.LoadImage("Assets/crateNormal.jpg"); _texCube = RC.CreateTexture(imgTexture); _texBumpCube = RC.CreateTexture(imgBumpTexture); imgTexture = RC.LoadImage("Assets/earthTexture.jpg"); imgBumpTexture = RC.LoadImage("Assets/earthNormal.jpg"); _texSphere = RC.CreateTexture(imgTexture); _texBumpSphere = RC.CreateTexture(imgBumpTexture); imgTexture = RC.LoadImage("Assets/porcelainTexture.png"); imgBumpTexture = RC.LoadImage("Assets/normalRust.jpg"); _texTeapot = RC.CreateTexture(imgTexture); _texBumpTeapot = RC.CreateTexture(imgBumpTexture); _currentTexture = _texCube; _currentBumpTexture = _texBumpCube; // Load Meshes _meshCube = MeshReader.LoadMesh(@"Assets/Cube.obj.model"); _meshSphere = MeshReader.LoadMesh(@"Assets/Sphere.obj.model"); _meshTeapot = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); // Set current Mesh and Update GUI _currentMesh = _meshCube; _btnCube.ButtonColor = ColorHighlightedButton; // Setup Shaderprograms and Update GUI _shaderDiffuseColor = MoreShaders.GetDiffuseColorShader(RC); _shaderDiffuseTexture = MoreShaders.GetDiffuseTextureShader(RC); _shaderTexture = MoreShaders.GetSkyboxShader(RC); _shaderDiffuseBumpTexture = MoreShaders.GetBumpDiffuseShader(RC); _shaderSpecularTexture = MoreShaders.GetSpecularShader(RC); _btnDiffuseColorShader.ButtonColor = ColorHighlightedButton; _currentShader = _shaderDiffuseColor; RC.SetShader(_shaderDiffuseColor); // Setup ShaderParams _paramColor = _shaderDiffuseColor.GetShaderParam("color"); // Setup Light and Update GUI RC.SetLightActive(0, 1); RC.SetLightPosition(0, new float3(5.0f, 0.0f, -2.0f)); RC.SetLightAmbient(0, new float4(0.2f, 0.2f, 0.2f, 1.0f)); RC.SetLightSpecular(0, new float4(0.1f, 0.1f, 0.1f, 1.0f)); RC.SetLightDiffuse(0, new float4(0.8f, 0.8f, 0.8f, 1.0f)); RC.SetLightDirection(0, new float3(-1.0f, 0.0f, 0.0f)); RC.SetLightSpotAngle(0, 10); _btnDirectionalLight.ButtonColor = ColorHighlightedButton; }
/// <summary> /// Attaches the object to a specific <see cref="RenderContext"/> object. /// </summary> /// <param name="rc">The <see cref="RenderContext"/> object to be used.</param> public void AttachToContext(RenderContext rc) { _rc = rc; _clearColor = rc.ClearColor; var imgData = _rc.CreateImage(_screenWidth, _screenHeight, "black"); _contentLTex = _rc.CreateTexture(imgData); _contentRTex = _rc.CreateTexture(imgData); // initialize shader and image switch (_activeMode) { case Stereo3DMode.Oculus: _guiLImage = new GUIImage(null, 0, 0, _screenWidth/2, _screenHeight); _guiLImage.AttachToContext(rc); _guiLImage.Refresh(); _guiRImage = new GUIImage(null, _screenWidth/2, 0, _screenWidth/2, _screenHeight); _guiRImage.AttachToContext(rc); _guiRImage.Refresh(); _shaderProgram = _rc.CreateShader(OculusVs, OculusPs); _shaderTexture = _shaderProgram.GetShaderParam("vTexture"); _lensCenterParam = _shaderProgram.GetShaderParam("LensCenter"); _screenCenterParam = _shaderProgram.GetShaderParam("ScreenCenter"); _scaleParam = _shaderProgram.GetShaderParam("Scale"); _scaleInParam = _shaderProgram.GetShaderParam("ScaleIn"); _hdmWarpParam = _shaderProgram.GetShaderParam("HmdWarpParam"); break; case Stereo3DMode.Anaglyph: _shaderProgram = _rc.CreateShader(AnaglyphVs, AnaglyphPs); _shaderTexture = _shaderProgram.GetShaderParam("vTexture"); _guiLImage = new GUIImage(null, 0, 0, _screenWidth, _screenHeight); _guiLImage.AttachToContext(rc); _guiLImage.Refresh(); break; } }
/// <summary> /// Sets a <see cref="float3" /> shader parameter. /// </summary> /// <param name="param">The parameter.</param> /// <param name="val">The value.</param> public void SetShaderParam(IShaderParam param, float3 val) { GL.Uniform3(((ShaderParam)param).handle, val.x, val.y, val.z); }
public override void Init() { // is called on startup RC.ClearColor = new float4(1, 1, 1, 1); // initialize the variables _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _meshCube = MeshReader.LoadMesh(@"Assets/Cube.obj.model"); _meshSphere = MeshReader.LoadMesh(@"Assets/Sphere.obj.model"); _meshCylinder = MeshReader.LoadMesh(@"Assets/Cylinder.obj.model"); _meshPlatinic = MeshReader.LoadMesh(@"Assets/Platonic.obj.model"); //RC.CreateShader(Vs, Ps); _spColor = RC.CreateShader(Vs, Ps); //MoreShaders.GetShader("simple", RC); _spTexture = RC.CreateShader(Vt, Pt);//MoreShaders.GetShader("texture", RC); _spCustom = RC.CreateShader(VLin, PLin); _colorParam = _spColor.GetShaderParam("vColor"); _colorCustom = _spCustom.GetShaderParam("vColor"); _textureParam = _spTexture.GetShaderParam("vTexture"); // load texture var imgData = RC.LoadImage("Assets/world_map.jpg"); _iTex = RC.CreateTexture(imgData); _physic = new Physics(); _gui= new GUI(RC); _gui.SetUp(_physic.GetNumRB(), _physic.GetShapes()); }
// TODO add vector implementations /// <summary> /// Sets a <see cref="float4x4" /> shader parameter. /// </summary> /// <param name="param">The parameter.</param> /// <param name="val">The value.</param> public void SetShaderParam(IShaderParam param, float4x4 val) { unsafe { var mF = (float*)(&val); // Row order notation // GL.UniformMatrix4(((ShaderParam) param).handle, 1, false, mF); // Column order notation GL.UniformMatrix4(((ShaderParam)param).handle, 1, true, mF); } }
public void SetShaderParamTexture(IShaderParam param, ITextureHandle texId, GBufferHandle gHandle) { throw new NotImplementedException(); }
/// <summary> /// Gets the float parameter value inside a shaderprogram by using a <see cref="IShaderParam" /> as search reference. /// Do not use this function in frequent updates as it transfers information from graphics card to the cpu which takes time. /// </summary> /// <param name="program">The program.</param> /// <param name="param">The parameter.</param> /// <returns>A float number (default is 0).</returns> public float GetParamValue(IShaderProgramImp program, IShaderParam param) { float f; GL.GetUniform(((ShaderProgramImp)program).Program, ((ShaderParam)param).handle, out f); return f; }
public float GetParamValue(IShaderProgramImp shaderProgram, IShaderParam param) { throw new System.NotImplementedException(); }
/// <summary> /// Initializes a new instance of the <see cref="RenderContext"/> class. /// </summary> /// <param name="rci">The <see cref="Fusee.Engine.IRenderContextImp"/>.</param> public RenderContext(IRenderContextImp rci) { _rci = rci; View = float4x4.Identity; ModelView = float4x4.Identity; Projection = float4x4.Identity; // Todo: Remove multiple Lights per shader !!! _lightParams = new Light[8]; _lightShaderParams = new LightParamNames[8]; _currentShaderParams = new MatrixParamNames(); _updatedShaderParams = false; _debugShader = MoreShaders.GetDiffuseColorShader(this); _debugColor = _debugShader.GetShaderParam("color"); }
public void SetShaderParam(IShaderParam param, int val) { throw new System.NotImplementedException(); }
// Init is called on startup. public override void Init() { _mesh = new Mesh { Vertices = new[] { // left, down, front vertex new float3(-1, -1, -1), // 0 - belongs to left new float3(-1, -1, -1), // 1 - belongs to down new float3(-1, -1, -1), // 2 - belongs to front // left, down, back vertex new float3(-1, -1, 1), // 3 - belongs to left new float3(-1, -1, 1), // 4 - belongs to down new float3(-1, -1, 1), // 5 - belongs to back // left, up, front vertex new float3(-1, 1, -1), // 6 - belongs to left new float3(-1, 1, -1), // 7 - belongs to up new float3(-1, 1, -1), // 8 - belongs to front // left, up, back vertex new float3(-1, 1, 1), // 9 - belongs to left new float3(-1, 1, 1), // 10 - belongs to up new float3(-1, 1, 1), // 11 - belongs to back // right, down, front vertex new float3(1, -1, -1), // 12 - belongs to right new float3(1, -1, -1), // 13 - belongs to down new float3(1, -1, -1), // 14 - belongs to front // right, down, back vertex new float3(1, -1, 1), // 15 - belongs to right new float3(1, -1, 1), // 16 - belongs to down new float3(1, -1, 1), // 17 - belongs to back // right, up, front vertex new float3(1, 1, -1), // 18 - belongs to right new float3(1, 1, -1), // 19 - belongs to up new float3(1, 1, -1), // 20 - belongs to front // right, up, back vertex new float3(1, 1, 1), // 21 - belongs to right new float3(1, 1, 1), // 22 - belongs to up new float3(1, 1, 1), // 23 - belongs to back }, Normals = new[] { // left, down, front vertex new float3(-1, 0, 0), // 0 - belongs to left new float3(0, -1, 0), // 1 - belongs to down new float3(0, 0, -1), // 2 - belongs to front // left, down, back vertex new float3(-1, 0, 0), // 3 - belongs to left new float3(0, -1, 0), // 4 - belongs to down new float3(0, 0, 1), // 5 - belongs to back // left, up, front vertex new float3(-1, 0, 0), // 6 - belongs to left new float3(0, 1, 0), // 7 - belongs to up new float3(0, 0, -1), // 8 - belongs to front // left, up, back vertex new float3(-1, 0, 0), // 9 - belongs to left new float3(0, 1, 0), // 10 - belongs to up new float3(0, 0, 1), // 11 - belongs to back // right, down, front vertex new float3(1, 0, 0), // 12 - belongs to right new float3(0, -1, 0), // 13 - belongs to down new float3(0, 0, -1), // 14 - belongs to front // right, down, back vertex new float3(1, 0, 0), // 15 - belongs to right new float3(0, -1, 0), // 16 - belongs to down new float3(0, 0, 1), // 17 - belongs to back // right, up, front vertex new float3(1, 0, 0), // 18 - belongs to right new float3(0, 1, 0), // 19 - belongs to up new float3(0, 0, -1), // 20 - belongs to front // right, up, back vertex new float3(1, 0, 0), // 21 - belongs to right new float3(0, 1, 0), // 22 - belongs to up new float3(0, 0, 1), // 23 - belongs to back }, Triangles = new ushort[] { 0, 6, 3, 3, 6, 9, // left 2, 14, 20, 2, 20, 8, // front 12, 15, 18, 15, 21, 18, // right 5, 11, 17, 17, 11, 23, // back 7, 22, 10, 7, 19, 22, // top 1, 4, 16, 1, 16, 13, // bottom }, }; var shader = RC.CreateShader(_vertexShader, _pixelShader); RC.SetShader(shader); _xformParam = RC.GetShaderParam(shader, "xform"); _xform = float4x4.Identity; // Set the clear color for the backbuffer RC.ClearColor = new float4(0.1f, 0.3f, 0.2f, 1); }
public void SetShaderParamTexture(IShaderParam param, ITextureHandle texId) { throw new System.NotImplementedException(); }
// is called on startup public override void Init() { // ColorUint constructor test ColorUint ui1 = new ColorUint((uint) 4711); ColorUint ui2 = new ColorUint((byte)42, (byte)43, (byte)44, (byte)45); ColorUint u3 = new ColorUint((float)1, (float)43, (float)44, (float)45); RC.ClearColor = new float4(1f, 1f, 1f, 1); // initialize the variables _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _shaderEffect.AttachToContext(RC); _spColor = MoreShaders.GetDiffuseColorShader(RC); _colorParam = _spColor.GetShaderParam("vColor"); /* RC.SetRenderState(RenderState.ZEnable, (uint) 1); RC.SetRenderState(RenderState.AlphaBlendEnable, (uint) 1); RC.SetRenderState(RenderState.BlendFactor, (uint)new ColorUint(0.25f, 0.25f, 0.25f, 0.25f)); RC.SetRenderState(RenderState.BlendOperation, (uint)(BlendOperation.Add)); RC.SetRenderState(RenderState.SourceBlend, (uint)(Blend.BlendFactor)); RC.SetRenderState(RenderState.DestinationBlend, (uint)(Blend.InverseBlendFactor)); */ RC.SetRenderState(new RenderStateSet { AlphaBlendEnable = true, BlendFactor = new float4(0.5f, 0.5f, 0.5f, 0.5f), BlendOperation = BlendOperation.Add, SourceBlend = Blend.BlendFactor, DestinationBlend = Blend.InverseBlendFactor }); RC.SetRenderState(RenderState.AlphaBlendEnable, (uint)0); }