public DiffuseMaterial(ShaderProgram shaderProgram, string texturepath) { sp = shaderProgram; Textureparam = sp.GetShaderParam("texture1"); ImageData Image = SceneManager.RC.LoadImage(texturepath); Tex = SceneManager.RC.CreateTexture(Image); }
// 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 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 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); }
//private Dictionary<string, dynamic> _list; /// <summary> /// Initializes a new instance of the <see cref="ShaderMaterial"/> class. /// </summary> /// <param name="program">The <see cref="ShaderProgram"/>.</param> public ShaderMaterial(ShaderProgram program) { _sp = program; //_list = new Dictionary<string, dynamic>(); //foreach (KeyValuePair<string, ShaderParamInfo> k in _sp._paramsByName) //{ // _list.Add(k.Key, _sp._rci.GetParamValue(program._spi, k.Value.Handle)); //} }
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); }
// Init() public override void Init() { RC.ClearColor = new float4(0, 0, 0, 1); _shaderProgram = RC.CreateShader(Vs, Ps); RC.SetShader(_shaderProgram); _stereo3D = new Stereo3D(Stereo3DMode.Anaglyph, Width, Height); _stereo3D.AttachToContext(RC); _exampleLevel = new Level(RC, _shaderProgram, _stereo3D); }
// Create uninitialized Material. Param List will be stored, but Params have no value set. // You will need to set the value before using the material. public MaterialX(ShaderProgram program) { _sp = program; _list = new Dictionary<string, ParamPair>(); foreach (KeyValuePair<string, ShaderParamInfo> k in _sp._paramsByName) { var pair = new ParamPair { ParamInfo = k.Value, Value = null //_sp._rci.GetParamValue(program._spi, k.Value.Handle) }; _list.Add(k.Key, pair); } }
public Level(RenderContext rc, ShaderProgram sp, int id, Stereo3D stereo3D) { ObjRandom = new Random(); VColorObj = sp.GetShaderParam("vColor"); VTextureObj = sp.GetShaderParam("vTexture"); RContext = rc; _stereo3D = stereo3D; UseStereo3D = false; ConstructLevel(id); }
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); }
// 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; }
public DiffuseMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; }
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; } }
public BumpMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; }
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()); }
/// <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; } }
public SimpleMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; }
/// <summary> /// Initializes a new instance of the <see cref="Renderer"/> class. /// </summary> /// <param name="geo">The geo.</param> /// <param name="shaderProgram">The shader program.</param> public Renderer(Geometry geo, ShaderProgram shaderProgram) { mesh = geo.ToMesh(); material = new Material(shaderProgram); }
private void SetShaderValues(ShaderProgram sp) { RC.SetShader(sp); var myset = new RenderStateSet { AlphaBlendEnable = false, ZEnable = true }; RC.SetRenderState(myset); switch (_textShaderName) { case "Diffuse Color": RC.SetShaderParam(_paramColor, new float4(1, 0, 0, 1)); RC.Render(_currentMesh); break; case "Texture Only": RC.SetShaderParamTexture(_paramTexture, _currentTexture); RC.Render(_currentMesh); break; case "Diffuse Texture": RC.SetShaderParamTexture(_paramTexture, _currentTexture); RC.Render(_currentMesh); break; case "Diffuse Bump Texture": RC.SetShaderParamTexture(_paramTexture, _currentTexture); RC.SetShaderParamTexture(_paramBumpTexture, _currentBumpTexture); RC.SetShaderParam(_paramSpecular, 64.0f); RC.SetShaderParam(_paramShininess, 0.5f); RC.Render(_currentMesh); break; case "Specular Texture": RC.SetShaderParamTexture(_paramTexture, _currentTexture); RC.SetShaderParam(_paramSpecular, 64.0f); RC.SetShaderParam(_paramShininess, 0.5f); RC.Render(_currentMesh); break; case "Toon": 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 }); _shaderEffect.RenderMesh(_currentMesh); break; } }
public SpecularMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; }
// 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); }
public Level(RenderContext rc, ShaderProgram sp, Stereo3D stereo3D) : this(rc, sp, 0, stereo3D) { }
public PlanetMaterial(ShaderProgram shaderProgram) { sp = shaderProgram; }
/// <summary> /// Initializes a new instance of the <see cref="Renderer"/> class. /// </summary> /// <param name="sp">The Shaderprogram is used to initialize the Material<see cref="Material"/> of this Renderer.</param> public Renderer(ShaderProgram sp) { material = new Material(sp); }
/// <summary> /// Initializes a new instance of the <see cref="Renderer"/> class. /// </summary> /// <param name="mesh">The Mesh of this Renderer.</param> /// <param name="sp">The Shaderprogram is used to initialize the Material of the Renderer.</param> public Renderer(Mesh mesh, ShaderProgram sp) { this.mesh = mesh; material = new Material(sp); }
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; }
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; }
/// <summary> /// Initializes a new instance of the <see cref="Material"/> class. /// </summary> /// <param name="_program">The Shaderprogram of this material instance.</param> public Material(ShaderProgram _program) { sp = _program; }