10835d42be9b215f845e30db03211c86670cfa12aJason Sams/* 20835d42be9b215f845e30db03211c86670cfa12aJason Sams * Copyright (C) 2008 The Android Open Source Project 30835d42be9b215f845e30db03211c86670cfa12aJason Sams * 40835d42be9b215f845e30db03211c86670cfa12aJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 50835d42be9b215f845e30db03211c86670cfa12aJason Sams * you may not use this file except in compliance with the License. 60835d42be9b215f845e30db03211c86670cfa12aJason Sams * You may obtain a copy of the License at 70835d42be9b215f845e30db03211c86670cfa12aJason Sams * 80835d42be9b215f845e30db03211c86670cfa12aJason Sams * http://www.apache.org/licenses/LICENSE-2.0 90835d42be9b215f845e30db03211c86670cfa12aJason Sams * 100835d42be9b215f845e30db03211c86670cfa12aJason Sams * Unless required by applicable law or agreed to in writing, software 110835d42be9b215f845e30db03211c86670cfa12aJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 120835d42be9b215f845e30db03211c86670cfa12aJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130835d42be9b215f845e30db03211c86670cfa12aJason Sams * See the License for the specific language governing permissions and 140835d42be9b215f845e30db03211c86670cfa12aJason Sams * limitations under the License. 150835d42be9b215f845e30db03211c86670cfa12aJason Sams */ 160835d42be9b215f845e30db03211c86670cfa12aJason Sams 170835d42be9b215f845e30db03211c86670cfa12aJason Samspackage android.renderscript; 180835d42be9b215f845e30db03211c86670cfa12aJason Sams 199c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 20c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sampler object that defines how Allocations can be read as textures within a 21c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * kernel. Samplers are used in conjunction with the {@code rsSample} runtime 22c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * function to return values from normalized coordinates. 23c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * 24c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Any Allocation used with a Sampler must have been created with {@link 25c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a Sampler on 26c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * an {@link android.renderscript.Allocation} that was not created with {@link 27c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is undefined. 280835d42be9b215f845e30db03211c86670cfa12aJason Sams **/ 290835d42be9b215f845e30db03211c86670cfa12aJason Samspublic class Sampler extends BaseObj { 300835d42be9b215f845e30db03211c86670cfa12aJason Sams public enum Value { 310835d42be9b215f845e30db03211c86670cfa12aJason Sams NEAREST (0), 320835d42be9b215f845e30db03211c86670cfa12aJason Sams LINEAR (1), 330835d42be9b215f845e30db03211c86670cfa12aJason Sams LINEAR_MIP_LINEAR (2), 340857196107d55bae312c12b72b115d25d5fee4f9Alex Sakhartchouk LINEAR_MIP_NEAREST (5), 350835d42be9b215f845e30db03211c86670cfa12aJason Sams WRAP (3), 366b9b2caf2bf977508e223792bb5eba75091c232dTim Murray CLAMP (4), 376b9b2caf2bf977508e223792bb5eba75091c232dTim Murray MIRRORED_REPEAT (6); 380835d42be9b215f845e30db03211c86670cfa12aJason Sams 390835d42be9b215f845e30db03211c86670cfa12aJason Sams int mID; 400835d42be9b215f845e30db03211c86670cfa12aJason Sams Value(int id) { 410835d42be9b215f845e30db03211c86670cfa12aJason Sams mID = id; 420835d42be9b215f845e30db03211c86670cfa12aJason Sams } 430835d42be9b215f845e30db03211c86670cfa12aJason Sams } 440835d42be9b215f845e30db03211c86670cfa12aJason Sams 457d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Value mMin; 467d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Value mMag; 477d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Value mWrapS; 487d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Value mWrapT; 497d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Value mWrapR; 507d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk float mAniso; 517d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 520e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat Sampler(long id, RenderScript rs) { 530de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 540835d42be9b215f845e30db03211c86670cfa12aJason Sams } 550835d42be9b215f845e30db03211c86670cfa12aJason Sams 569c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 577d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return minification setting for the sampler 587d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 597d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public Value getMinification() { 607d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mMin; 617d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 627d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 639c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 647d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return magnification setting for the sampler 657d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 667d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public Value getMagnification() { 677d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mMag; 687d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 697d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 709c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 717d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return S wrapping mode for the sampler 727d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 737d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public Value getWrapS() { 747d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mWrapS; 757d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 767d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 779c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 787d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return T wrapping mode for the sampler 797d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 807d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public Value getWrapT() { 817d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mWrapT; 827d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 837d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 849c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 857d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return anisotropy setting for the sampler 867d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 877d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public float getAnisotropy() { 887d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mAniso; 897d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 907d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 919c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 92bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Retrieve a sampler with min and mag set to nearest and wrap modes set to 93bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * clamp. 94bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 95f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 96bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 97bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 98bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 994d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler CLAMP_NEAREST(RenderScript rs) { 1004d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_CLAMP_NEAREST == null) { 1014d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 102b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.NEAREST); 103b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.NEAREST); 1044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.CLAMP); 1054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.CLAMP); 1064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_CLAMP_NEAREST = b.create(); 1074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1084d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_CLAMP_NEAREST; 1094d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1104d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1119c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 112bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Retrieve a sampler with min and mag set to linear and wrap modes set to 113bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * clamp. 114bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 115f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 116bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 117bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 118bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1194d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler CLAMP_LINEAR(RenderScript rs) { 1204d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_CLAMP_LINEAR == null) { 1214d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 122b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.LINEAR); 123b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.LINEAR); 1244d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.CLAMP); 1254d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.CLAMP); 1264d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_CLAMP_LINEAR = b.create(); 1274d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1284d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_CLAMP_LINEAR; 1294d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1304d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1319c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 1326b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with mag set to linear, min linear mipmap linear, and 1336b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * wrap modes set to clamp. 134bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 135f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 136bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 137bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 138bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1394d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript rs) { 1404d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) { 1414d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 142b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.LINEAR_MIP_LINEAR); 143b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.LINEAR); 1444d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.CLAMP); 1454d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.CLAMP); 1464d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create(); 1474d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1484d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR; 1494d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1504d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1519c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 152bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Retrieve a sampler with min and mag set to nearest and wrap modes set to 153bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * wrap. 154bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 155f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 156bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 157bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 158bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1594d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler WRAP_NEAREST(RenderScript rs) { 1604d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_WRAP_NEAREST == null) { 1614d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 162b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.NEAREST); 163b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.NEAREST); 1644d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.WRAP); 1654d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.WRAP); 1664d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_WRAP_NEAREST = b.create(); 1674d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1684d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_WRAP_NEAREST; 1694d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1704d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1719c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 1726b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with min and mag set to linear and wrap modes set to 173bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * wrap. 174bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 175f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 176bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 177bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 178bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1794d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler WRAP_LINEAR(RenderScript rs) { 1804d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_WRAP_LINEAR == null) { 1814d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 182b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.LINEAR); 183b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.LINEAR); 1844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.WRAP); 1854d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.WRAP); 1864d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_WRAP_LINEAR = b.create(); 1874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1884d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_WRAP_LINEAR; 1894d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1904d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1919c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 1926b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with mag set to linear, min linear mipmap linear, and 1936b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * wrap modes set to wrap. 194bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 195f5c876e82d7cc647ba94d29eb914e64b7977c303Alex Sakhartchouk * @param rs Context to which the sampler will belong. 196bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 197bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return Sampler 198bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1994d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript rs) { 2004d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if(rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) { 2014d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams Builder b = new Builder(rs); 202b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMinification(Value.LINEAR_MIP_LINEAR); 203b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk b.setMagnification(Value.LINEAR); 2044d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapS(Value.WRAP); 2054d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams b.setWrapT(Value.WRAP); 2064d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create(); 2074d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2084d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams return rs.mSampler_WRAP_LINEAR_MIP_LINEAR; 2094d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2104d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 2116b9b2caf2bf977508e223792bb5eba75091c232dTim Murray /** 2126b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with min and mag set to nearest and wrap modes set to 2136b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * mirrored repeat. 2146b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2156b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @param rs Context to which the sampler will belong. 2166b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2176b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @return Sampler 2186b9b2caf2bf977508e223792bb5eba75091c232dTim Murray */ 2196b9b2caf2bf977508e223792bb5eba75091c232dTim Murray public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript rs) { 2206b9b2caf2bf977508e223792bb5eba75091c232dTim Murray if(rs.mSampler_MIRRORED_REPEAT_NEAREST == null) { 2216b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Builder b = new Builder(rs); 2226b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMinification(Value.NEAREST); 2236b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMagnification(Value.NEAREST); 2246b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapS(Value.MIRRORED_REPEAT); 2256b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapT(Value.MIRRORED_REPEAT); 2266b9b2caf2bf977508e223792bb5eba75091c232dTim Murray rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create(); 2276b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2286b9b2caf2bf977508e223792bb5eba75091c232dTim Murray return rs.mSampler_MIRRORED_REPEAT_NEAREST; 2296b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2306b9b2caf2bf977508e223792bb5eba75091c232dTim Murray 2316b9b2caf2bf977508e223792bb5eba75091c232dTim Murray /** 2326b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with min and mag set to linear and wrap modes set to 2336b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * mirrored repeat. 2346b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2356b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @param rs Context to which the sampler will belong. 2366b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2376b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @return Sampler 2386b9b2caf2bf977508e223792bb5eba75091c232dTim Murray */ 2396b9b2caf2bf977508e223792bb5eba75091c232dTim Murray public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript rs) { 2406b9b2caf2bf977508e223792bb5eba75091c232dTim Murray if(rs.mSampler_MIRRORED_REPEAT_LINEAR == null) { 2416b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Builder b = new Builder(rs); 2426b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMinification(Value.LINEAR); 2436b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMagnification(Value.LINEAR); 2446b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapS(Value.MIRRORED_REPEAT); 2456b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapT(Value.MIRRORED_REPEAT); 2466b9b2caf2bf977508e223792bb5eba75091c232dTim Murray rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create(); 2476b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2486b9b2caf2bf977508e223792bb5eba75091c232dTim Murray return rs.mSampler_MIRRORED_REPEAT_LINEAR; 2496b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2506b9b2caf2bf977508e223792bb5eba75091c232dTim Murray 2516b9b2caf2bf977508e223792bb5eba75091c232dTim Murray /** 2526b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * Retrieve a sampler with min and mag set to linear and wrap modes set to 2536b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * mirrored repeat. 2546b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2556b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @param rs Context to which the sampler will belong. 2566b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * 2576b9b2caf2bf977508e223792bb5eba75091c232dTim Murray * @return Sampler 2586b9b2caf2bf977508e223792bb5eba75091c232dTim Murray */ 2596b9b2caf2bf977508e223792bb5eba75091c232dTim Murray public static Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(RenderScript rs) { 2606b9b2caf2bf977508e223792bb5eba75091c232dTim Murray if(rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) { 2616b9b2caf2bf977508e223792bb5eba75091c232dTim Murray Builder b = new Builder(rs); 2626b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMinification(Value.LINEAR_MIP_LINEAR); 2636b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setMagnification(Value.LINEAR); 2646b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapS(Value.MIRRORED_REPEAT); 2656b9b2caf2bf977508e223792bb5eba75091c232dTim Murray b.setWrapT(Value.MIRRORED_REPEAT); 2666b9b2caf2bf977508e223792bb5eba75091c232dTim Murray rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create(); 2676b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2686b9b2caf2bf977508e223792bb5eba75091c232dTim Murray return rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR; 2696b9b2caf2bf977508e223792bb5eba75091c232dTim Murray } 2704d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 2719c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 272c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Builder for creating non-standard samplers. This is only necessary if 273c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * a Sampler with different min and mag modes is desired. 274bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2750835d42be9b215f845e30db03211c86670cfa12aJason Sams public static class Builder { 2760835d42be9b215f845e30db03211c86670cfa12aJason Sams RenderScript mRS; 2770835d42be9b215f845e30db03211c86670cfa12aJason Sams Value mMin; 2780835d42be9b215f845e30db03211c86670cfa12aJason Sams Value mMag; 2790835d42be9b215f845e30db03211c86670cfa12aJason Sams Value mWrapS; 2800835d42be9b215f845e30db03211c86670cfa12aJason Sams Value mWrapT; 2810835d42be9b215f845e30db03211c86670cfa12aJason Sams Value mWrapR; 282f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk float mAniso; 2830835d42be9b215f845e30db03211c86670cfa12aJason Sams 2840835d42be9b215f845e30db03211c86670cfa12aJason Sams public Builder(RenderScript rs) { 2850835d42be9b215f845e30db03211c86670cfa12aJason Sams mRS = rs; 2860835d42be9b215f845e30db03211c86670cfa12aJason Sams mMin = Value.NEAREST; 2870835d42be9b215f845e30db03211c86670cfa12aJason Sams mMag = Value.NEAREST; 2880835d42be9b215f845e30db03211c86670cfa12aJason Sams mWrapS = Value.WRAP; 2890835d42be9b215f845e30db03211c86670cfa12aJason Sams mWrapT = Value.WRAP; 2900835d42be9b215f845e30db03211c86670cfa12aJason Sams mWrapR = Value.WRAP; 291f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk mAniso = 1.0f; 2920835d42be9b215f845e30db03211c86670cfa12aJason Sams } 2930835d42be9b215f845e30db03211c86670cfa12aJason Sams 294b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public void setMinification(Value v) { 2958bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams if (v == Value.NEAREST || 2968bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams v == Value.LINEAR || 2970857196107d55bae312c12b72b115d25d5fee4f9Alex Sakhartchouk v == Value.LINEAR_MIP_LINEAR || 2980857196107d55bae312c12b72b115d25d5fee4f9Alex Sakhartchouk v == Value.LINEAR_MIP_NEAREST) { 2998bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams mMin = v; 3008bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } else { 3018bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams throw new IllegalArgumentException("Invalid value"); 3028bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } 3030835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3040835d42be9b215f845e30db03211c86670cfa12aJason Sams 305b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public void setMagnification(Value v) { 3068bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams if (v == Value.NEAREST || v == Value.LINEAR) { 3078bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams mMag = v; 3088bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } else { 3098bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams throw new IllegalArgumentException("Invalid value"); 3108bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } 3110835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3120835d42be9b215f845e30db03211c86670cfa12aJason Sams 3130835d42be9b215f845e30db03211c86670cfa12aJason Sams public void setWrapS(Value v) { 3146b9b2caf2bf977508e223792bb5eba75091c232dTim Murray if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) { 3158bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams mWrapS = v; 3168bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } else { 3178bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams throw new IllegalArgumentException("Invalid value"); 3188bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } 3190835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3200835d42be9b215f845e30db03211c86670cfa12aJason Sams 3210835d42be9b215f845e30db03211c86670cfa12aJason Sams public void setWrapT(Value v) { 3226b9b2caf2bf977508e223792bb5eba75091c232dTim Murray if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) { 3238bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams mWrapT = v; 3248bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } else { 3258bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams throw new IllegalArgumentException("Invalid value"); 3268bb41dd61474e977aa61048ba8f733a984a3b22dJason Sams } 3270835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3280835d42be9b215f845e30db03211c86670cfa12aJason Sams 329f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk public void setAnisotropy(float v) { 330f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk if(v >= 0.0f) { 331f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk mAniso = v; 332f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk } else { 333f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk throw new IllegalArgumentException("Invalid value"); 334f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk } 335f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk } 336f5b3510c706ed1f7611760dff0c94f2111531c68Alex Sakhartchouk 3370835d42be9b215f845e30db03211c86670cfa12aJason Sams public Sampler create() { 338771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 3390e0c0885aed99a119052a792becb5a0c5a93632dAshok Bhat long id = mRS.nSamplerCreate(mMag.mID, mMin.mID, 3407d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk mWrapS.mID, mWrapT.mID, mWrapR.mID, mAniso); 3417d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk Sampler sampler = new Sampler(id, mRS); 3427d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mMin = mMin; 3437d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mMag = mMag; 3447d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mWrapS = mWrapS; 3457d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mWrapT = mWrapT; 3467d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mWrapR = mWrapR; 3477d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk sampler.mAniso = mAniso; 3487d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return sampler; 3490835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3500835d42be9b215f845e30db03211c86670cfa12aJason Sams } 3510835d42be9b215f845e30db03211c86670cfa12aJason Sams 3520835d42be9b215f845e30db03211c86670cfa12aJason Sams} 3530835d42be9b215f845e30db03211c86670cfa12aJason Sams 354