diff options
Diffstat (limited to 'src/jogl/classes/com/sun/opengl/util/glsl/sdk')
-rwxr-xr-x | src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java | 184 | ||||
-rwxr-xr-x | src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java | 53 |
2 files changed, 0 insertions, 237 deletions
diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java b/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java deleted file mode 100755 index f18005feb..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java +++ /dev/null @@ -1,184 +0,0 @@ -package com.sun.opengl.util.glsl.sdk; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.glsl.*; - -import java.io.*; -import java.net.*; - -/** Precompiles a shader into a vendor binary format. Input is the - resource name of the shader, such as - "com/sun/opengl/impl/glsl/fixed/shader/a.fp". - Output is "com/sun/opengl/impl/glsl/fixed/shader/bin/nvidia/a.bfp". - - All path and suffixes are determined by the ShaderCode class, - which ensures runtime compatibility. - - @see javax.media.opengl.glsl.ShaderCode - */ - -public abstract class CompileShader { - - public abstract int getBinaryFormat(); - - public abstract File getSDKCompilerDir(); - - public abstract String getVertexShaderCompiler(); - - public abstract String getFragmentShaderCompiler(); - - public void processOneShader(String resourceName) - throws IOException, UnsupportedEncodingException, InterruptedException - { - int type = -1; - String outName=null; - int suffixLen = -1; - if(resourceName.endsWith(ShaderCode.getFileSuffix(false, GL2ES2.GL_FRAGMENT_SHADER))) { - suffixLen = 2; - type = GL2ES2.GL_FRAGMENT_SHADER; - } else if(resourceName.endsWith(".frag")) { - suffixLen = 4; - type = GL2ES2.GL_FRAGMENT_SHADER; - } else if(resourceName.endsWith(ShaderCode.getFileSuffix(false, GL2ES2.GL_VERTEX_SHADER))) { - suffixLen = 2; - type = GL2ES2.GL_VERTEX_SHADER; - } else if(resourceName.endsWith(".vert")) { - suffixLen = 4; - type = GL2ES2.GL_VERTEX_SHADER; - } - String justName = basename(resourceName); - outName = justName.substring(0, justName.length() - suffixLen) + - ShaderCode.getFileSuffix(true, type); - URL resourceURL = Locator.getResource(null, resourceName); - String dirName = dirname(resourceURL.getPath()); - - outName = dirName + File.separator + "bin" + File.separator + - ShaderCode.getBinarySubPath(getBinaryFormat()) + File.separator + - outName; - processOneShader(resourceName, outName, type); - } - - public void processOneShader(String resourceName, String outName, int type) - throws IOException, UnsupportedEncodingException, InterruptedException - { - URL resourceURL = Locator.getResource(null, resourceName); - String dirName = dirname(resourceURL.getPath()); - - String shader = ShaderCode.readShaderSource(null, resourceName); - if(null==shader) { - System.err.println("Can't find shader source " + resourceName + " - ignored"); - return; - } - System.err.println("Preprocessing: "+ resourceName+", in dir: "+dirName); - String justName = basename(resourceName); - String processor; - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - processor = getVertexShaderCompiler(); - break; - case GL2ES2.GL_FRAGMENT_SHADER: - processor = getFragmentShaderCompiler(); - break; - default: - throw new GLException("Unknown shader type: "+type); - } - File outputFile = new File(outName); - - // Write shader to a file in java.io.tmpdir - File tmpDir = new File(dirName+File.separator+"tmp"); - tmpDir.mkdirs(); - File tmpFile = new File(tmpDir, justName); - Writer writer = new BufferedWriter(new FileWriter(tmpFile)); - writer.write(shader, 0, shader.length()); - writer.flush(); - writer.close(); - System.err.println("Preprocessed: "+ tmpFile.getAbsolutePath()); - - File processorDir = getSDKCompilerDir(); - - System.err.println("SDK: "+ processorDir.getAbsolutePath() + ", compiler: "+processor); - - System.err.println("Output: "+ outputFile.getAbsolutePath()); - - // Run the tool - Process process = Runtime.getRuntime().exec(new String[] { - processorDir.getAbsolutePath() + File.separator + processor, - tmpFile.getAbsolutePath(), - outputFile.getAbsolutePath() - }); // , null, processorDir); - new StreamMonitor(process.getInputStream()); - new StreamMonitor(process.getErrorStream()); - process.waitFor(); - // Delete the temporary file - // tmpFile.delete(); - } - - protected static String basename(String path) { - int lastSlash = path.lastIndexOf("/"); - if (lastSlash < 0) { - lastSlash = path.lastIndexOf("\\"); - } - String basename; - if (lastSlash < 0) { - basename = path; - } else { - basename = path.substring(lastSlash + 1); - } - return basename; - } - - protected static String dirname(String path) { - int lastSlash = path.lastIndexOf("/"); - if (lastSlash < 0) { - lastSlash = path.lastIndexOf("\\"); - } - String dirname; - if (lastSlash < 0) { - dirname = new String(); - } else { - dirname = path.substring(0, lastSlash + 1); - } - return dirname; - } - - public void run(String[] args) { - try { - for (int i = 0; i < args.length; i++) { - processOneShader(args[i]); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static class StreamMonitor implements Runnable { - private InputStream istream; - public StreamMonitor(InputStream stream) { - istream = stream; - new Thread(this, "Output Reader Thread").start(); - } - - public void run() - { - byte[] buffer = new byte[4096]; - try { - int numRead = 0; - do { - numRead = istream.read(buffer); - if (numRead > 0) { - System.out.write(buffer, 0, numRead); - System.out.flush(); - } - } while (numRead >= 0); - } - catch (IOException e) { - try { - istream.close(); - } catch (IOException e2) { - } - // Should allow clean exit when process shuts down - } - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java b/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java deleted file mode 100755 index 387ccf732..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.sun.opengl.util.glsl.sdk; - -import javax.media.opengl.*; - -import java.io.*; - -/** Precompiles a shader into NVidia binary format. Input is the - resource name of the shader, such as - "com/sun/opengl/impl/glsl/fixed/shader/a.fp". - Output is "com/sun/opengl/impl/glsl/fixed/shader/bin/nvidia/a.bfp". */ - -public class CompileShaderNVidia extends CompileShader { - private static final String NVAPSDK; - - static { - String nvapSDKProp = System.getProperty("NVAPSDK"); - if (nvapSDKProp != null) { - NVAPSDK = nvapSDKProp; - } else { - NVAPSDK = "C:\\nvap_sdk_0_3_x"; - } - } - - public int getBinaryFormat() { - return GLES2.GL_NVIDIA_PLATFORM_BINARY_NV; - } - - public File getSDKCompilerDir() { - File compilerDir = new File( NVAPSDK + File.separator + "tools" + File.separator ); - File compilerFile = new File( compilerDir, getVertexShaderCompiler()); - if(!compilerFile.exists()) { - compilerDir = new File( NVAPSDK ); - compilerFile = new File( compilerDir, getVertexShaderCompiler()); - } - if(!compilerFile.exists()) { - throw new GLException("Can't find compiler: "+getVertexShaderCompiler() + " in : " + - NVAPSDK+", "+NVAPSDK + File.separator + "tools"); - } - return compilerDir; - } - - public String getVertexShaderCompiler() { - return "glslv.bat"; - } - - public String getFragmentShaderCompiler() { - return "glslf.bat"; - } - - public static void main(String[] args) { - new CompileShaderNVidia().run(args); - } -} |