本文整理汇总了C#中WebGLRenderingContext.getExtension方法的典型用法代码示例。如果您正苦于以下问题:C# WebGLRenderingContext.getExtension方法的具体用法?C# WebGLRenderingContext.getExtension怎么用?C# WebGLRenderingContext.getExtension使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebGLRenderingContext
的用法示例。
在下文中一共展示了WebGLRenderingContext.getExtension方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InternalConstructor
static WebGLDebugShaders InternalConstructor(WebGLRenderingContext gl)
{
// X:\jsc.svn\examples\javascript\chrome\apps\WebGL\ChromeShaderToyColumns\ChromeShaderToyColumns\Library\ShaderToy.cs
var p = (WebGLDebugShaders)gl.getExtension("WEBGL_debug_shaders");
return p;
}
示例2: doprograms
//.........这里部分代码省略.........
// http://stackoverflow.com/questions/25289390/html-how-to-make-input-type-list-only-accept-a-list-choice
ChromeShaderToyPrograms.References.programs.Keys.WithEachIndex(
async (key, index) =>
{
var text = (1 + index) + " of " + ChromeShaderToyPrograms.References.programs.Count + " " + key.SkipUntilIfAny("ChromeShaderToy").Replace("By", " by ");
var option = new IHTMLOption { value = key, innerText = text }.AttachTo(combo);
await Native.window.async.onframe;
// we are about to create 100 objects. does it have any impact to UI?
var frag = ChromeShaderToyPrograms.References.programs[key]();
var len = frag.ToString().Length;
option.innerText = text + " " + new
{
//frame,
//load = load.ElapsedMilliseconds + "ms ",
frag = len + "bytes ",
// a telemetry to track while running on actual hardware
//fragGPU = pass0.xCreateShader.fsTranslatedShaderSource.Length + " bytes"
};
// cant we get it if we manually set it?
await option.async.onselect;
await Native.window.async.onframe;
var load = Stopwatch.StartNew();
var pass0 = new ChromeShaderToyColumns.Library.ShaderToy.EffectPass(
gl: gl,
precission: ChromeShaderToyColumns.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null
);
pass0.MakeHeader_Image();
pass0.NewShader_Image(frag);
load.Stop();
new { }.With(
async delegate
{
while (await option.async.ondeselect)
{
pip = pass0;
await option.async.onselect;
}
}
);
var framesInSecond = 0;
var theSecond = Stopwatch.StartNew();
var frame = 0;
do
{
frame++;
framesInSecond++;
if (theSecond.ElapsedMilliseconds >= 1000)
{
//option.innerText = key + new { frame };
option.innerText = text + " " + new
{
示例3: Application
/// <summary>
/// This is a javascript application.
/// </summary>
/// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
public Application(IApp page)
{
// X:\jsc.svn\examples\javascript\chrome\apps\WebGL\ChromeWebGLExtensions\ChromeWebGLExtensions\Application.cs
// http://link.springer.com/chapter/10.1007%2F978-3-319-02726-5_20
// roslyn broke worker support?
// Uncaught TypeError: c._3BYABlqcAz6k53tGgDEanQ is not a function
var gl = new WebGLRenderingContext();
// http://webglreport.com/
// unMaskedRenderer: getUnmaskedInfo(gl).renderer,
//<th>Unmasked Renderer:</th>
// <td><%= report.unMaskedRenderer %></td>
var UNMASKED_RENDERER_WEBGL = "";
var WEBGL_debug_renderer_info = new
{
UNMASKED_RENDERER_WEBGL = 0x9246u
};
// 02000509 ScriptCoreLib.Shared.BCLImplementation.System.Linq.__OrderedEnumerable`1 +<> c__DisplayClass0
//{ SourceMethod = Int32 < GetEnumerator > b__1(TSource, TSource) }
// script: error JSC1000: unknown opcode brtrue.s at < GetEnumerator > b__1 + 0x002f
var dbgRenderInfo = gl.getExtension("WEBGL_debug_renderer_info");
if (dbgRenderInfo != null)
{
// https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
UNMASKED_RENDERER_WEBGL = (string)gl.getParameter(WEBGL_debug_renderer_info.UNMASKED_RENDERER_WEBGL);
}
new IHTMLButton { "do MD5" }.AttachToDocument().onclick +=
async a =>
{
var data = "whats the hash for this?";
var z = await Task.Run(
delegate
{
// 20140629 level1 scope sharing!
var bytes = Encoding.UTF8.GetBytes(data);
var s = Stopwatch.StartNew();
// { data = "{ i = 4095, hex = 4ea77972bc2c613b782ab9f17360b0db, ElapsedMilliseconds = 41 }" }
// { i = 4095, hex = 4ea77972bc2c613b782ab9f17360b0db, ElapsedMilliseconds = 1268 }
// { i = 255, hex = 4ea77972bc2c613b782ab9f17360b0db, ElapsedMilliseconds = 170 }
// {{ i = 4095, hex = 4ea77972bc2c613b782ab9f17360b0db, ElapsedMilliseconds = 245, ManagedThreadId = 10 }}
// laptop {{ i = 4095, hex = 4ea77972bc2c613b782ab9f17360b0db, ElapsedMilliseconds = 439, ManagedThreadId = 10 }}
// on red server. how fast is the laptop?
// laptop wont trust the server ssl?
// certs are configured via certmgr.msc
// after export and import the laptop should now be able to trust the ssl?
var scope = new { data };
for (int i = 0; i < 0x1000; i++)
{
var hash = bytes.ToMD5Bytes();
var hex = hash.ToHexString();
//scope = new { data = new { i, hex, s.ElapsedMilliseconds, Thread.CurrentThread.ManagedThreadId, Environment.ProcessorCount }.ToString() };
scope = new { data = new { i, hex, s.ElapsedMilliseconds, Thread.CurrentThread.ManagedThreadId }.ToString() };
}
return scope;
}
);
// show proof of work
//a.Element.innerText = z.data;
//Environment.OSVersion.
var winver = Native.window.navigator.userAgent.SkipUntilOrEmpty("(Windows ").TakeUntilOrEmpty(")");
new IHTMLPre {
// ProcessorCount allows to know if we are on our lite laptop or the server
new {
Environment.ProcessorCount,
winver,
UNMASKED_RENDERER_WEBGL,
Native.window.navigator.userAgent,
//.........这里部分代码省略.........
示例4: Application
//.........这里部分代码省略.........
//1,973958333333333
//7580
// 3840
// wont work
//c.width = 8192;
//c.height = 4096;
// this has the wrong aspect?
//c.width = 6466;
//c.height = 3232;
new IHTMLPre { new { c.width, c.height } }.AttachToDocument();
//6466x3232
//var suizoom = 720f / c.height;
//var suizoom = 360f / c.height;
var suizoom = 480f / c.width;
c.style.transformOrigin = "0 0";
c.style.transform = "scale(" + suizoom + ")";
c.style.backgroundColor = "yellow";
c.style.position = IStyle.PositionEnum.absolute;
c.style.SetLocation(8 + (int)(uizoom * cubefacesize + 8) * 0, 8 + (int)(uizoom * cubefacesize + 8) * 3);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
//var frame0 = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
var frame0 = new HTML.Images.FromAssets.anvil___spherical_hdri_panorama_skybox_by_macsix_d6vv4hs().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets._2294472375_24a3b8ef46_o().AttachToDocument();
// 270px
//xor.style.height = "";
frame0.style.height = "270px";
示例5: Application
//.........这里部分代码省略.........
//1,973958333333333
//7580
// 3840
// wont work
//c.width = 8192;
//c.height = 4096;
// this has the wrong aspect?
//c.width = 6466;
//c.height = 3232;
new IHTMLPre { new { c.width, c.height } }.AttachToDocument();
//6466x3232
//var suizoom = 720f / c.height;
//var suizoom = 360f / c.height;
var suizoom = 480f / c.width;
c.style.transformOrigin = "0 0";
c.style.transform = "scale(" + suizoom + ")";
//c.style.backgroundColor = "yellow";
c.style.position = IStyle.PositionEnum.absolute;
c.style.SetLocation(8 + (int)(uizoom * cubefacesize + 8) * 0, 8 + (int)(uizoom * cubefacesize + 8) * 3);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
//var frame0 = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
var frame0 = new HTML.Images.FromAssets.galaxy_starfield().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.galaxy_starfield150FOV().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets._2294472375_24a3b8ef46_o().AttachToDocument();
// 270px
//xor.style.height = "";
示例6: Application
//.........这里部分代码省略.........
c.onmousedown += ev =>
{
mMouseOriX = ev.CursorX;
mMouseOriY = ev.CursorY;
mMousePosX = mMouseOriX;
mMousePosY = mMouseOriY;
ev.CaptureMouse();
};
c.onmousemove += ev =>
{
if (ev.MouseButton == IEvent.MouseButtonEnum.Left)
{
mMousePosX = ev.CursorX;
mMousePosY = c.height - ev.CursorY;
}
};
c.onmouseup += ev =>
{
mMouseOriX = -Math.Abs(mMouseOriX);
mMouseOriY = -Math.Abs(mMouseOriY);
};
#endregion
var quadVBO = ShaderToy.createQuadVBO(gl);
var pass1 = new ShaderToy.EffectPass(
gl: gl,
precission: ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
quadVBO: quadVBO
);
pass1.MakeHeader_Image();
var frag1 = new GLSLShaderToyPip.Shaders.TheColorGradientFragmentShader();
pass1.NewShader_Image(frag1);
var pass0 = new ShaderToy.EffectPass(
gl: gl,
precission: ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
quadVBO: quadVBO
);
pass0.MakeHeader_Image();
var frag0 = new GLSLShaderToyPip.Shaders.ChromeShaderToyQuadraticBezierByMattdeslFragmentShader();
//var frag = new GLSLShaderToyPip.Shaders.TheColorGradientFragmentShader();
pass0.NewShader_Image(frag0);
if (pass0.xCreateShader.mProgram == null)
{
gl.Orphanize();
return;
}
new { }.With(
async delegate
{
do
{
Native.document.body.style.backgroundColor = "cyan";
await Task.Delay(500);
Native.document.body.style.backgroundColor = "yellow";
await Task.Delay(500);
示例7: Application
//.........这里部分代码省略.........
// callback: delegate
// {
// new IHTMLPre { "at callback" }.AttachToDocument();
// },
// obj: null,
// forceMuted: false,
// forcePaused: false
//);
////mEffect.mPasses[0].NewTexture
//// EffectPass.prototype.NewTexture = function( wa, gl, slot, url )
//// this.mPasses[j].Create( rpass.type, this.mAudioContext, this.mGLContext );
//// EffectPass.prototype.MakeHeader_Image = function( precission, supportDerivatives )
//mEffect.mPasses[0].MakeHeader_Image();
//// EffectPass.prototype.NewShader = function( gl, shaderCode )
//// EffectPass.prototype.NewShader_Image = function( gl, shaderCode )
//mEffect.mPasses[0].NewShader_Image(vs);
//// ShaderToy.prototype.resetTime = function()
// Effect.prototype.ResetTime = function()
// ShaderToy.prototype.startRendering = function()
// Effect.prototype.Paint = function(time, mouseOriX, mouseOriY, mousePosX, mousePosY, isPaused)
// EffectPass.prototype.Paint = function( wa, gl, time, mouseOriX, mouseOriY, mousePosX, mousePosY, xres, yres, isPaused )
// EffectPass.prototype.Paint_Image = function( wa, gl, time, mouseOriX, mouseOriY, mousePosX, mousePosY, xres, yres )
var pass = new Library.ShaderToy.EffectPass(
mAudioContext,
gl,
precission: Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
//pass.mInputs[0] = new Library.ShaderToy.samplerCube { };
var xsampler2D = new Library.ShaderToy.sampler2D { };
pass.mInputs[0] = xsampler2D;
pass.MakeHeader_Image();
pass.NewShader_Image(vs);
//var all = new Textures2 { }.Images;
var all = new[] {
new EquirectangularToAzimuthal.HTML.Images.FromAssets._20151001T0000 { }
};
new { }.With(
async delegate
{
var i = 0;
示例8: Effect
public Effect(
AudioContext ac,
WebGLRenderingContext gl,
RefreshTexturThumbailDelegate callback,
object obj,
bool forceMuted,
bool forcePaused)
{
//new IHTMLPre { "enter Effect" }.AttachToDocument();
var ext = gl.getExtension("OES_standard_derivatives");
var supportsDerivatives = (ext != null);
//if (supportsDerivatives) gl.hint(ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES, gl.NICEST);
var ext2 = gl.getExtension("OES_texture_float");
this.mSupportTextureFloat = (ext2 != null);
var precision = DetermineShaderPrecission(gl);
//this.mGainNode = ac.createGain();
//this.mGainNode.connect(ac.destination);
this.mQuadVBO = createQuadVBO(gl);
this.mPasses = new EffectPass[2];
for (var i = 0; i < 2; i++)
{
this.mPasses[i] = new EffectPass(
ac,
gl,
precision,
supportsDerivatives,
callback,
obj,
forceMuted,
forcePaused,
this.mQuadVBO,
this.mGainNode
);
}
}
示例9: Application
//.........这里部分代码省略.........
c.width = 3840;
c.height = 2160;
// wont work
//c.width = 8192;
//c.height = 4096;
// this has the wrong aspect?
//c.width = 6466;
//c.height = 3232;
new IHTMLPre { new { c.width, c.height } }.AttachToDocument();
//6466x3232
//var suizoom = 720f / c.height;
//var suizoom = 360f / c.height;
var suizoom = 480f / c.width;
c.style.transformOrigin = "0 0";
c.style.transform = $"scale({suizoom})";
c.style.backgroundColor = "yellow";
c.style.position = IStyle.PositionEnum.absolute;
c.style.SetLocation(8 + (int)(uizoom * size + 8) * 0, 8 + (int)(uizoom * size + 8) * 3);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
//var xor = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
var frame0 = new HTML.Images.FromAssets._2294472375_24a3b8ef46_o().AttachToDocument();
// 270px
//xor.style.height = "";
frame0.style.height = "270px";
frame0.style.width = "480px";
示例10: Application
//.........这里部分代码省略.........
#region initTextureFramebuffer
var xWebGLFramebuffer = new WebGLFramebuffer(gl);
gl.bindFramebuffer(gl.FRAMEBUFFER, xWebGLFramebuffer);
// generateMipmap: level 0 not power of 2 or not all the same size
//var rttFramebuffer_width = canvas.width;
// WebGL: INVALID_OPERATION: generateMipmap: level 0 not power of 2 or not all the same size
var xWebGLTexture = new WebGLTexture(gl);
gl.bindTexture(gl.TEXTURE_2D, xWebGLTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, (int)gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, (int)gl.LINEAR_MIPMAP_NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, rttFramebuffer_width, rttFramebuffer_height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
gl.generateMipmap(gl.TEXTURE_2D);
var xWebGLRenderbuffer = new WebGLRenderbuffer(gl);
gl.bindRenderbuffer(gl.RENDERBUFFER, xWebGLRenderbuffer);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, rttFramebuffer_width, rttFramebuffer_height);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, xWebGLTexture, 0);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, xWebGLRenderbuffer);
gl.bindTexture(gl.TEXTURE_2D, null);
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
#endregion
var pass = new ChromeShaderToyColumns.Library.ShaderToy.EffectPass(
gl: gl,
precission: ChromeShaderToyColumns.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null
);
pass.MakeHeader_Image();
pass.NewShader_Image(
new ChromeShaderToyColumns.Shaders.ProgramFragmentShader()
);
var sw = Stopwatch.StartNew();
var vbo = new WebGLBuffer(gl);
Native.window.onframe += e =>
{
// can we run it in VR as HUD?
// https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150706
#region FRAMEBUFFER
gl.bindFramebuffer(gl.FRAMEBUFFER, xWebGLFramebuffer);
//// http://stackoverflow.com/questions/20362023/webgl-why-does-transparent-canvas-show-clearcolor-color-component-when-alpha-is
gl.clearColor(1, 1, 0, 1.0f);
gl.viewport(0, 0, rttFramebuffer_width, rttFramebuffer_height);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
#region Paint_Image
ChromeShaderToyColumns.Library.ShaderToy.EffectPass.Paint_ImageDelegate Paint_Image = (time, mouseOriX, mouseOriY, mousePosX, mousePosY, zoom) =>
{
var mProgram = pass.xCreateShader.mProgram;
var xres = rttFramebuffer_width;
var yres = rttFramebuffer_height;
示例11: Application
/// <summary>
/// This is a javascript application.
/// </summary>
/// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
public Application(IApp page)
{
// https://www.shadertoy.com/view/lsSGRz
#region += Launched chrome.app.window
dynamic self = Native.self;
dynamic self_chrome = self.chrome;
object self_chrome_socket = self_chrome.socket;
if (self_chrome_socket != null)
{
if (!(Native.window.opener == null && Native.window.parent == Native.window.self))
{
Console.WriteLine("chrome.app.window.create, is that you?");
// pass thru
}
else
{
// should jsc send a copresence udp message?
chrome.runtime.UpdateAvailable += delegate
{
new chrome.Notification(title: "UpdateAvailable");
};
chrome.app.runtime.Launched += async delegate
{
// 0:12094ms chrome.app.window.create {{ href = chrome-extension://aemlnmcokphbneegoefdckonejmknohh/_generated_background_page.html }}
Console.WriteLine("chrome.app.window.create " + new { Native.document.location.href });
new chrome.Notification(title: "ChromeUDPSendAsync");
var xappwindow = await chrome.app.window.create(
Native.document.location.pathname, options: null
);
//xappwindow.setAlwaysOnTop
xappwindow.show();
await xappwindow.contentWindow.async.onload;
Console.WriteLine("chrome.app.window loaded!");
};
return;
}
}
#endregion
// X:\jsc.svn\examples\javascript\WorkerMD5Experiment\WorkerMD5Experiment\Application.cs
{
new IHTMLHeader1 { "webgl1" }.AttachToDocument();
var webgl1 = new WebGLRenderingContext();
new IHTMLHeader1 { new { webgl1 } }.AttachToDocument();
// http://webglreport.com/
// unMaskedRenderer: getUnmaskedInfo(gl).renderer,
//<th>Unmasked Renderer:</th>
// <td><%= report.unMaskedRenderer %></td>
var UNMASKED_RENDERER_WEBGL = "";
var WEBGL_debug_renderer_info = new
{
UNMASKED_RENDERER_WEBGL = 0x9246u
};
var dbgRenderInfo = webgl1.getExtension("WEBGL_debug_renderer_info");
if (dbgRenderInfo != null)
{
// https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
UNMASKED_RENDERER_WEBGL = (string)webgl1.getParameter(WEBGL_debug_renderer_info.UNMASKED_RENDERER_WEBGL);
}
new IHTMLPre { new { UNMASKED_RENDERER_WEBGL } }.AttachToDocument();
// https://www.khronos.org/registry/webgl/extensions/WEBGL_shared_resources/
var sharedResourcesExtension = webgl1.getExtension("WEBGL_shared_resources");
new IHTMLPre { new { sharedResourcesExtension } }.AttachToDocument();
// https://code.google.com/p/chromium/issues/detail?id=245894
// https://bugzilla.mozilla.org/show_bug.cgi?id=964788
//.........这里部分代码省略.........
示例12: Application
//.........这里部分代码省略.........
//1,973958333333333
//7580
// 3840
// wont work
//c.width = 8192;
//c.height = 4096;
// this has the wrong aspect?
//c.width = 6466;
//c.height = 3232;
new IHTMLPre { new { c.width, c.height } }.AttachToDocument();
//6466x3232
//var suizoom = 720f / c.height;
//var suizoom = 360f / c.height;
var suizoom = 480f / c.width;
c.style.transformOrigin = "0 0";
c.style.transform = "scale(" + suizoom + ")";
//c.style.backgroundColor = "yellow";
c.style.position = IStyle.PositionEnum.absolute;
c.style.SetLocation(8 + (int)(uizoom * cubefacesize + 8) * 0, 8 + (int)(uizoom * cubefacesize + 8) * 3);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
//var frame0 = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.galaxy_starfield().AttachToDocument();
var frame0 = new HTML.Images.FromAssets.galaxy_starfield150FOV().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets._2294472375_24a3b8ef46_o().AttachToDocument();
// 270px
//xor.style.height = "";
示例13: Application
//.........这里部分代码省略.........
);
// until we figure out how to fix the shader, we can try to fake it?
// will allow atleast a nice static 8K image?
// S6 did a 6546x3272 image. 5k?
// 1.77
var c8k = new CanvasRenderingContext2D(3840 * 2, 2160 * 2);
//var c8k = new CanvasRenderingContext2D(5120, 2880);
// 5120 x 2880 pixel
// 8k canvas wont load in chrome?
c8k.canvas.AttachToDocument();
c8k.canvas.style.backgroundColor = "cyan";
c8k.canvas.style.transformOrigin = "0% 0%";
c8k.canvas.style.transform = "scale(" + (suizoom / 2) + ")";
c8k.canvas.style.SetLocation(
8 + (int)(uizoom * cubefacesize + 8) * 0 + 120,
8 + (int)(uizoom * cubefacesize + 8) * 3 + 120 + 320
);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl4K,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl4K),
supportDerivatives: gl4K.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
// why is it flipped?
//var frame0 = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.galaxy_starfield().AttachToDocument();
var frame0 = new HTML.Images.FromAssets._20150912_154522().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets._20150912_154522recenter().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.galaxy_starfield150FOV().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
示例14: Application
//.........这里部分代码省略.........
//1,973958333333333
//7580
// 3840
// wont work
//c.width = 8192;
//c.height = 4096;
// this has the wrong aspect?
//c.width = 6466;
//c.height = 3232;
new IHTMLPre { new { c.width, c.height } }.AttachToDocument();
//6466x3232
//var suizoom = 720f / c.height;
//var suizoom = 360f / c.height;
var suizoom = 480f / c.width;
c.style.transformOrigin = "0 0";
c.style.transform = $"scale({suizoom})";
//c.style.backgroundColor = "yellow";
c.style.position = IStyle.PositionEnum.absolute;
c.style.SetLocation(8 + (int)(uizoom * cubefacesize + 8) * 0, 8 + (int)(uizoom * cubefacesize + 8) * 3);
var pass = new CubeToEquirectangular.Library.ShaderToy.EffectPass(
null,
gl,
precission: CubeToEquirectangular.Library.ShaderToy.DetermineShaderPrecission(gl),
supportDerivatives: gl.getExtension("OES_standard_derivatives") != null,
callback: null,
obj: null,
forceMuted: false,
forcePaused: false,
//quadVBO: Library.ShaderToy.createQuadVBO(gl, right: 0, top: 0),
outputGainNode: null
);
// how shall we upload our textures?
// can we reference GLSL.samplerCube yet?
//pass.mInputs[0] = new samplerCube { };
pass.mInputs[0] = new CubeToEquirectangular.Library.ShaderToy.samplerCube { };
pass.MakeHeader_Image();
var vs = new Shaders.ProgramFragmentShader();
pass.NewShader_Image(vs);
#endregion
var frame0 = new HTML.Images.FromAssets.galaxy_starfield().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.tiles_regrid().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets.anvil___spherical_hdri_panorama_skybox_by_macsix_d6vv4hs().AttachToDocument();
//var xor = new HTML.Images.FromAssets.Orion360_test_image_8192x4096().AttachToDocument();
//var xor = new HTML.Images.FromAssets._2_no_clouds_4k().AttachToDocument();
//var frame0 = new HTML.Images.FromAssets._2294472375_24a3b8ef46_o().AttachToDocument();
// 270px
//xor.style.height = "";
示例15: Application
/// <summary>
/// This is a javascript application.
/// </summary>
/// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
public Application(IApp page)
{
// http://webglsamples.googlecode.com/hg/google-io/2011/100-objects.html
// https://twitter.com/schteppe/status/493346982279532545
// http://floooh.github.io/oryol/DrawCallPerf.html
// https://www.mail-archive.com/[email protected]/msg01454.html
// https://code.google.com/p/dart/issues/detail?id=11357
// https://bugzilla.mozilla.org/show_bug.cgi?id=843673
// http://webglstats.com/
// for heat zeeker, can we use webgl, instanced geometry, collada databound to LAN synced data layer?
// http://msdn.microsoft.com/en-us/library/ie/dn725046%28v=vs.85%29.aspx
// would this mean we would have a nice isometric world?
// http://www.khronos.org/registry/webgl/extensions/ANGLE_instanced_arrays/
// ace of spades webgl lan?
// https://code.google.com/p/chromium/issues/detail?id=288391
// http://blog.tojicode.com/2013/07/webgl-instancing-with.html
// http://media.tojicode.com/webgl-samples/instancing.html
//new WebGLRenderingContext
// Uncaught TypeError: undefined is not a function
var gl = new WebGLRenderingContext().AttachTo(Native.shadow);
// var ext = gl.getExtension("ANGLE_instanced_arrays"); // Vendor prefixes may apply!
//var ANGLEInstancedArrays = gl.getExtension("ANGLE_instanced_arrays") as ANGLE_instanced_arrays;
// when will jsc pass generic arguments along?
//var ANGLEInstancedArrays = (ANGLE_instanced_arrays)gl.getExtension<ANGLE_instanced_arrays>();
var ANGLEInstancedArrays = (ANGLE_instanced_arrays)gl.getExtension("ANGLE_instanced_arrays");
// 0:63ms {{ ANGLEInstancedArrays = [object ANGLEInstancedArrays] }}
// any reason to provide extension methods as gl.drawArraysInstanced ?
// X:\jsc.svn\core\ScriptCoreLib.Redux\ScriptCoreLib.Redux\JavaScript\Extensions\WebGLExtensions.cs
//ANGLEInstancedArrays.drawArraysInstancedANGLE(
//gl.drawArraysInstanced(
Console.WriteLine(new { ANGLEInstancedArrays });
// 0:270ms {{ ext = [object ANGLEInstancedArrays] }}
//
// THREE.JS supports it? http://stackoverflow.com/questions/23172609/does-three-js-support-angle-instanced-arrays
// BufferedGeometry perhaps?
// https://github.com/mrdoob/three.js/issues/975
// can we have starling like 2d svg instancing now for webgl?
// if we wanted to run physic on the background thearead,
// would the jsc interfaces for webgl have enough knowledge to proxy via WorkerAPI?
// http://www.browserleaks.com/webgl
// https://github.com/kripken/emscripten/issues/2510
// http://nullprogram.com/blog/2014/06/01/
}